diff --git a/.gitignore b/.gitignore
index c7ed9df2f5..961dd40194 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,7 +8,6 @@
build/
.idea/*
!.idea/codeStyles/
-app/src/main/jniLibs
full/
debug/
release/
diff --git a/.travis.yml b/.travis.yml
index 165a1eff9a..d08c3bf279 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -8,7 +8,7 @@ android:
components:
- platform-tools
- tools
- - build-tools-28.0.3
+ - build-tools-29.0.2
- android-28
- extra-google-m2repository
- extra-android-m2repository
diff --git a/README.md b/README.md
index 32aef48cd9..f762852a96 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# AndroidAPS
-* Check the wiki: http://wiki.androidaps.org
+* Check the wiki: https://androidaps.readthedocs.io
* Everyone who’s been looping with AndroidAPS needs to fill out the form after 3 days of looping https://docs.google.com/forms/d/14KcMjlINPMJHVt28MDRupa4sz4DDIooI4SrW0P3HSN8/viewform?c=0&w=1
[![Gitter](https://badges.gitter.im/MilosKozak/AndroidAPS.svg)](https://gitter.im/MilosKozak/AndroidAPS?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
@@ -11,4 +11,4 @@
dev: [![codecov](https://codecov.io/gh/MilosKozak/AndroidAPS/branch/dev/graph/badge.svg)](https://codecov.io/gh/MilosKozak/AndroidAPS)
-[![Donate via PayPal](https://www.paypalobjects.com/en_US/i/btn/btn_donateCC_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=Y4LHGJJESAVB8)
\ No newline at end of file
+![BTC](https://bitit.io/assets/coins/icon-btc-1e5a37bc0eb730ac83130d7aa859052bd4b53ac3f86f99966627801f7b0410be.svg) 3KawK8aQe48478s6fxJ8Ms6VTWkwjgr9f2
diff --git a/app/build.gradle b/app/build.gradle
index 11e681d084..3780e2fd16 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,13 +1,12 @@
buildscript {
repositories {
- maven { url 'https://maven.fabric.io/public' }
jcenter()
+ maven { url "https://plugins.gradle.org/m2/" } // jacoco 0.2
}
dependencies {
- classpath 'io.fabric.tools:gradle:1.+'
- classpath 'com.dicedmelon.gradle:jacoco-android:0.1.4'
- classpath 'de.undercouch:gradle-download-task:3.4.3'
+ //classpath 'com.dicedmelon.gradle:jacoco-android:0.1.4'
+ classpath 'com.hiya:jacoco-android:0.2'
}
}
apply plugin: 'com.android.application'
@@ -15,26 +14,23 @@ apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
apply plugin: 'com.google.gms.google-services'
-apply plugin: 'io.fabric'
-apply plugin: 'jacoco-android'
-apply plugin: 'de.undercouch.download'
-
+//apply plugin: 'jacoco-android'
+apply plugin: 'com.hiya.jacoco-android'
+apply plugin: 'com.google.firebase.crashlytics'
jacoco {
toolVersion = "0.8.3"
}
ext {
- ormLiteVersion = "4.46"
powermockVersion = "1.7.3"
dexmakerVersion = "1.2"
- retrofit2Version = '2.8.1'
- okhttp3Version = '4.6.0'
+ retrofit2Version = '2.9.0'
+ okhttp3Version = '4.7.2'
}
repositories {
- maven { url 'https://maven.fabric.io/public' }
jcenter { url "https://jcenter.bintray.com/" }
mavenCentral()
google()
@@ -126,7 +122,7 @@ android {
ndkVersion "21.1.6352462"
defaultConfig {
- minSdkVersion 23
+ minSdkVersion 24
targetSdkVersion 28
multiDexEnabled true
versionCode 1500
@@ -139,9 +135,9 @@ android {
// if you change minSdkVersion to less than 11, you need to change executeTask for wear
// OMNIPOD: Keep track of what commit from the main repository we're on, these fields aren't actually used anywhere
- buildConfigField "String", "DEV_VERSION", '"2.6.5-dev"'
- buildConfigField "String", "DEV_VERSION_COMMIT", '"cf291b3adc2a8df06fd99220b59b500298c8e56f"'
- buildConfigField "String", "DEV_VERSION_COMMIT_DATE", '"6.5.2020"' // 6th May
+ buildConfigField "String", "DEV_VERSION", '"2.6.7-dev"'
+ buildConfigField "String", "DEV_VERSION_COMMIT", '"65c8cc98804cfc366239ad2bedb2dd98e3e4f3c2"'
+ buildConfigField "String", "DEV_VERSION_COMMIT_DATE", '"16.8.2020"' // 16th of August
ndk {
moduleName "BleCommandUtil"
@@ -249,16 +245,18 @@ dependencies {
wearApp project(':wear')
implementation project(':core')
+ implementation project(':dana')
+ implementation project(':danars')
+ implementation project(':danar')
+ implementation project(':rileylink')
+ implementation project(':medtronic')
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.google.android.gms:play-services-wearable:17.0.0'
implementation "com.google.android.gms:play-services-location:17.0.0"
- implementation 'com.google.firebase:firebase-core:17.4.0'
+ implementation 'com.google.firebase:firebase-core:17.4.3'
implementation 'com.google.firebase:firebase-auth:19.3.1'
- implementation 'com.google.firebase:firebase-database:19.3.0'
- implementation('com.crashlytics.sdk.android:crashlytics:2.10.1@aar') {
- transitive = true;
- }
+ implementation 'com.google.firebase:firebase-database:19.3.1'
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.legacy:legacy-support-v13:1.0.0'
@@ -269,12 +267,12 @@ dependencies {
implementation 'androidx.gridlayout:gridlayout:1.0.0'
implementation 'androidx.percentlayout:percentlayout:1.0.0'
implementation "androidx.preference:preference-ktx:1.1.1"
- implementation "androidx.activity:activity:${activityVersion}"
implementation "androidx.activity:activity-ktx:${activityVersion}"
+ implementation "androidx.fragment:fragment:${fragmentVersion}"
+ implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.google.android.material:material:1.1.0'
- implementation 'com.wdullaer:materialdatetimepicker:4.2.3'
- implementation "io.reactivex.rxjava2:rxandroid:2.1.1"
+ implementation "io.reactivex.rxjava2:rxandroid:${rxandroid_version}"
implementation "com.j256.ormlite:ormlite-core:${ormLiteVersion}"
implementation "com.j256.ormlite:ormlite-android:${ormLiteVersion}"
@@ -286,10 +284,9 @@ dependencies {
// Graphview cannot be upgraded
implementation "com.jjoe64:graphview:4.0.1"
implementation "com.joanzapata.iconify:android-iconify-fontawesome:2.2.2"
- implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'com.madgag.spongycastle:core:1.58.0.0'
+ // Omnipod wizard
implementation(name: "com.atech-software.android.library.wizardpager-1.1.4", ext: "aar")
-
implementation("com.google.android:flexbox:0.3.0") {
exclude group: "com.android.support"
}
@@ -313,7 +310,7 @@ dependencies {
implementation 'com.eatthepath:java-otp:0.2.0'
testImplementation "junit:junit:4.13"
- testImplementation "org.json:json:20190722"
+ testImplementation 'org.json:json:20200518'
testImplementation "org.mockito:mockito-core:2.8.47"
testImplementation "org.powermock:powermock-api-mockito2:${powermockVersion}"
testImplementation "org.powermock:powermock-module-junit4-rule-agent:${powermockVersion}"
@@ -341,7 +338,7 @@ dependencies {
// Phone checker
implementation 'com.scottyab:rootbeer-lib:0.0.8'
-
+
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0-alpha03'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test:rules:1.3.0-beta01'
@@ -362,30 +359,6 @@ dependencies {
androidTestImplementation 'androidx.test.uiautomator:uiautomator:2.2.0'
}
-
-task downloadZipFile(type: Download) {
- src 'https://github.com/MilosKozak/danars-support-lib/archive/master.zip'
- dest new File(buildDir, 'danars.zip')
-}
-
-task downloadAndUnzipFile(dependsOn: downloadZipFile, type: Copy) {
- from zipTree(downloadZipFile.dest)
- def outputDir = file("${buildDir}/unpacked/dist")
- into outputDir
-}
-
-
-task copyLibs(dependsOn: downloadAndUnzipFile, type: Copy) {
- def src = file("${buildDir}/unpacked/dist/danars-support-lib-master")
- def target = file("src/main/jniLibs/")
-
- from src
- into target
-}
-
-task full_clean(type: Delete) {
- delete file("src/main/jniLibs")
-}
/*
// Run 'adb' shell command to clear application data of main app for 'debug' variant
task clearMainAppData(type: Exec) {
@@ -417,8 +390,6 @@ tasks.whenTaskAdded { task ->
}
}
*/
-clean.dependsOn full_clean
-preBuild.dependsOn copyLibs
printf('--------------\n')
printf('isMaster: %s\n', isMaster().toString())
diff --git a/app/src/androidTest/java/info/nightscout/androidaps/RealPumpTest.kt b/app/src/androidTest/java/info/nightscout/androidaps/RealPumpTest.kt
index a327989975..0a99af2948 100644
--- a/app/src/androidTest/java/info/nightscout/androidaps/RealPumpTest.kt
+++ b/app/src/androidTest/java/info/nightscout/androidaps/RealPumpTest.kt
@@ -8,16 +8,15 @@ import androidx.test.rule.GrantPermissionRule
import info.nightscout.androidaps.data.Profile
import info.nightscout.androidaps.interfaces.PluginBase
import info.nightscout.androidaps.interfaces.PluginType
-import info.nightscout.androidaps.logging.L
import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin
import info.nightscout.androidaps.plugins.aps.openAPSSMB.OpenAPSSMBPlugin
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
+import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.plugins.constraints.objectives.ObjectivesPlugin
import info.nightscout.androidaps.plugins.general.actions.ActionsPlugin
import info.nightscout.androidaps.plugins.insulin.InsulinOrefUltraRapidActingPlugin
import info.nightscout.androidaps.plugins.profile.local.LocalProfilePlugin
-import info.nightscout.androidaps.plugins.pump.danaRv2.DanaRv2Plugin
+import info.nightscout.androidaps.danaRv2.DanaRv2Plugin
import info.nightscout.androidaps.plugins.sensitivity.SensitivityOref1Plugin
import info.nightscout.androidaps.plugins.source.RandomBgPlugin
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
@@ -30,7 +29,6 @@ import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
-import org.slf4j.LoggerFactory
import javax.inject.Inject
@LargeTest
@@ -44,7 +42,7 @@ class RealPumpTest {
private val validProfile = "{\"dia\":\"6\",\"carbratio\":[{\"time\":\"00:00\",\"value\":\"30\"}],\"carbs_hr\":\"20\",\"delay\":\"20\",\"sens\":[{\"time\":\"00:00\",\"value\":\"10\"},{\"time\":\"2:00\",\"value\":\"11\"}],\"timezone\":\"UTC\",\"basal\":[{\"time\":\"00:00\",\"value\":\"0.1\"}],\"target_low\":[{\"time\":\"00:00\",\"value\":\"4\"}],\"target_high\":[{\"time\":\"00:00\",\"value\":\"5\"}],\"startDate\":\"1970-01-01T00:00:00.000Z\",\"units\":\"mmol\"}"
- @Inject lateinit var pump : DanaRv2Plugin
+ @Inject lateinit var pump : info.nightscout.androidaps.danaRv2.DanaRv2Plugin
@Inject lateinit var randomBgPlugin :RandomBgPlugin
@Inject lateinit var localProfilePlugin: LocalProfilePlugin
@Inject lateinit var profileFunction: ProfileFunction
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index cd4b814b6c..8f3db8e179 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -58,15 +58,6 @@
-
-
-
-
-
@@ -74,17 +65,11 @@
-
-
-
-
-
-
-
-
+
@@ -122,6 +107,9 @@
+
+
+
-
-
-
-
@@ -286,16 +258,7 @@
android:name=".plugins.pump.medtronic.service.RileyLinkMedtronicService"
android:enabled="true"
android:exported="true" />
-
-
-
-
-
-
-
+
diff --git a/app/src/main/assets/OpenAPSSMB/determine-basal.js b/app/src/main/assets/OpenAPSSMB/determine-basal.js
index 00a9c1d0a2..137ceca541 100644
--- a/app/src/main/assets/OpenAPSSMB/determine-basal.js
+++ b/app/src/main/assets/OpenAPSSMB/determine-basal.js
@@ -407,6 +407,7 @@ var determine_basal = function determine_basal(glucose_status, currenttemp, iob_
, 'bg': bg
, 'tick': tick
, 'eventualBG': eventualBG
+ , 'targetBG': target_bg
, 'insulinReq': 0
, 'reservoir' : reservoir_data // The expected reservoir volume at which to deliver the microbolus (the reservoir volume from right before the last pumphistory run)
, 'deliverAt' : deliverAt // The time at which the microbolus should be delivered
@@ -800,7 +801,7 @@ var determine_basal = function determine_basal(glucose_status, currenttemp, iob_
rT.COB=meal_data.mealCOB;
rT.IOB=iob_data.iob;
- rT.reason="COB: " + meal_data.mealCOB + ", Dev: " + convert_bg(deviation, profile) + ", BGI: " + convert_bg(bgi, profile) + ", ISF: " + convert_bg(sens, profile) + ", CR: " + round(profile.carb_ratio, 2) + ", Target: " + convert_bg(target_bg, profile) + ", minPredBG " + convert_bg(minPredBG, profile) + ", minGuardBG " + convert_bg(minGuardBG, profile) + ", IOBpredBG " + convert_bg(lastIOBpredBG, profile);
+ rT.reason="COB: " + round(meal_data.mealCOB, 1) + ", Dev: " + convert_bg(deviation, profile) + ", BGI: " + convert_bg(bgi, profile) + ", ISF: " + convert_bg(sens, profile) + ", CR: " + round(profile.carb_ratio, 2) + ", Target: " + convert_bg(target_bg, profile) + ", minPredBG " + convert_bg(minPredBG, profile) + ", minGuardBG " + convert_bg(minGuardBG, profile) + ", IOBpredBG " + convert_bg(lastIOBpredBG, profile);
if (lastCOBpredBG > 0) {
rT.reason += ", COBpredBG " + convert_bg(lastCOBpredBG, profile);
}
@@ -877,8 +878,10 @@ var determine_basal = function determine_basal(glucose_status, currenttemp, iob_
console.error("naive_eventualBG:",naive_eventualBG,"bgUndershoot:",bgUndershoot,"zeroTempDuration:",zeroTempDuration,"zeroTempEffect:",zeroTempEffect,"carbsReq:",carbsReq);
if ( carbsReq >= profile.carbsReqThreshold && minutesAboveThreshold <= 45 ) {
rT.carbsReq = carbsReq;
+ rT.carbsReqWithin = minutesAboveThreshold;
rT.reason += carbsReq + " add'l carbs req w/in " + minutesAboveThreshold + "m; ";
}
+
// don't low glucose suspend if IOB is already super negative and BG is rising faster than predicted
if (bg < threshold && iob_data.iob < -profile.current_basal*20/60 && minDelta > 0 && minDelta > expectedDelta) {
rT.reason += "IOB "+iob_data.iob+" < " + round(-profile.current_basal*20/60,2);
diff --git a/app/src/main/java/info/nightscout/androidaps/Config.java b/app/src/main/java/info/nightscout/androidaps/Config.java
deleted file mode 100644
index bb967cdeb6..0000000000
--- a/app/src/main/java/info/nightscout/androidaps/Config.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package info.nightscout.androidaps;
-
-/**
- * Created by mike on 07.06.2016.
- */
-public class Config {
- public static int SUPPORTEDNSVERSION = 1002; // 0.10.00
-
- public static final boolean APS = BuildConfig.FLAVOR.equals("full");
-
- public static final boolean NSCLIENT = BuildConfig.FLAVOR.equals("nsclient") || BuildConfig.FLAVOR.equals("nsclient2");
- public static final boolean PUMPCONTROL = BuildConfig.FLAVOR.equals("pumpcontrol");
-
- public static final boolean PUMPDRIVERS = BuildConfig.FLAVOR.equals("full") || BuildConfig.FLAVOR.equals("pumpcontrol");
-}
diff --git a/app/src/main/java/info/nightscout/androidaps/Config.kt b/app/src/main/java/info/nightscout/androidaps/Config.kt
new file mode 100644
index 0000000000..c5edf0c438
--- /dev/null
+++ b/app/src/main/java/info/nightscout/androidaps/Config.kt
@@ -0,0 +1,15 @@
+package info.nightscout.androidaps
+
+import info.nightscout.androidaps.interfaces.ConfigInterface
+import javax.inject.Inject
+import javax.inject.Singleton
+
+@Singleton
+class Config @Inject constructor(): ConfigInterface{
+
+ override val SUPPORTEDNSVERSION = 1002 // 0.10.00
+ override val APS = BuildConfig.FLAVOR == "full"
+ override val NSCLIENT = BuildConfig.FLAVOR == "nsclient" || BuildConfig.FLAVOR == "nsclient2"
+ override val PUMPCONTROL = BuildConfig.FLAVOR == "pumpcontrol"
+ override val PUMPDRIVERS = BuildConfig.FLAVOR == "full" || BuildConfig.FLAVOR == "pumpcontrol"
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/MainActivity.kt b/app/src/main/java/info/nightscout/androidaps/MainActivity.kt
index 4e58a1f21f..ff35d585ee 100644
--- a/app/src/main/java/info/nightscout/androidaps/MainActivity.kt
+++ b/app/src/main/java/info/nightscout/androidaps/MainActivity.kt
@@ -27,6 +27,7 @@ import androidx.viewpager2.widget.ViewPager2
import com.google.android.material.tabs.TabLayoutMediator
import com.joanzapata.iconify.Iconify
import com.joanzapata.iconify.fonts.FontAwesomeModule
+import info.nightscout.androidaps.activities.ProfileHelperActivity
import info.nightscout.androidaps.activities.NoSplashAppCompatActivity
import info.nightscout.androidaps.activities.PreferencesActivity
import info.nightscout.androidaps.activities.SingleFragmentActivity
@@ -49,10 +50,10 @@ import info.nightscout.androidaps.plugins.general.smsCommunicator.SmsCommunicato
import info.nightscout.androidaps.setupwizard.SetupWizardActivity
import info.nightscout.androidaps.utils.AndroidPermission
import info.nightscout.androidaps.utils.FabricPrivacy
-import info.nightscout.androidaps.utils.LocaleHelper
import info.nightscout.androidaps.utils.alertDialogs.OKDialog
import info.nightscout.androidaps.utils.buildHelper.BuildHelper
import info.nightscout.androidaps.utils.extensions.isRunningRealPumpTest
+import info.nightscout.androidaps.utils.locale.LocaleHelper
import info.nightscout.androidaps.utils.protection.ProtectionCheck
import info.nightscout.androidaps.utils.resources.IconsProvider
import info.nightscout.androidaps.utils.resources.ResourceHelper
@@ -85,6 +86,7 @@ class MainActivity : NoSplashAppCompatActivity() {
@Inject lateinit var iconsProvider: IconsProvider
@Inject lateinit var constraintChecker: ConstraintChecker
@Inject lateinit var signatureVerifierPlugin: SignatureVerifierPlugin
+ @Inject lateinit var config: Config
private lateinit var actionBarDrawerToggle: ActionBarDrawerToggle
private var pluginPreferencesMenuItem: MenuItem? = null
@@ -137,15 +139,15 @@ class MainActivity : NoSplashAppCompatActivity() {
}
androidPermission.notifyForStoragePermission(this)
androidPermission.notifyForBatteryOptimizationPermission(this)
- if (Config.PUMPDRIVERS) {
- androidPermission.notifyForLocationPermissions(this)
+ androidPermission.notifyForLocationPermissions(this)
+ if (config.PUMPDRIVERS) {
androidPermission.notifyForSMSPermissions(this, smsCommunicatorPlugin)
androidPermission.notifyForSystemWindowPermissions(this)
}
}
private fun checkPluginPreferences(viewPager: ViewPager2) {
- pluginPreferencesMenuItem?.isEnabled = (viewPager.adapter as TabPageAdapter).getPluginAt(viewPager.currentItem).preferencesId != -1
+ if (viewPager.currentItem >= 0) pluginPreferencesMenuItem?.isEnabled = (viewPager.adapter as TabPageAdapter).getPluginAt(viewPager.currentItem).preferencesId != -1
}
override fun onPostCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
@@ -173,6 +175,7 @@ class MainActivity : NoSplashAppCompatActivity() {
private fun processPreferenceChange(ev: EventPreferenceChange) {
if (ev.isChanged(resourceHelper, R.string.key_keep_screen_on)) setWakeLock()
+ if (ev.isChanged(resourceHelper, R.string.key_skin)) recreate()
}
private fun setupViews() {
@@ -322,6 +325,11 @@ class MainActivity : NoSplashAppCompatActivity() {
return true
}
*/
+ R.id.nav_defaultprofile -> {
+ startActivity(Intent(this, ProfileHelperActivity::class.java))
+ return true
+ }
+
R.id.nav_stats -> {
startActivity(Intent(this, StatsActivity::class.java))
return true
@@ -352,7 +360,7 @@ class MainActivity : NoSplashAppCompatActivity() {
val hashes: List = signatureVerifierPlugin.shortHashes()
if (hashes.isNotEmpty()) fabricPrivacy.firebaseAnalytics.setUserProperty("Hash", hashes[0])
activePlugin.activePump.let { fabricPrivacy.firebaseAnalytics.setUserProperty("Pump", it::class.java.simpleName) }
- if (!Config.NSCLIENT && !Config.PUMPCONTROL)
+ if (!config.NSCLIENT && !config.PUMPCONTROL)
activePlugin.activeAPS.let { fabricPrivacy.firebaseAnalytics.setUserProperty("Aps", it::class.java.simpleName) }
activePlugin.activeBgSource.let { fabricPrivacy.firebaseAnalytics.setUserProperty("BgSource", it::class.java.simpleName) }
fabricPrivacy.firebaseAnalytics.setUserProperty("Profile", activePlugin.activeProfileInterface.javaClass.simpleName)
diff --git a/app/src/main/java/info/nightscout/androidaps/MainApp.java b/app/src/main/java/info/nightscout/androidaps/MainApp.java
index 66acee4016..ca60ca93d4 100644
--- a/app/src/main/java/info/nightscout/androidaps/MainApp.java
+++ b/app/src/main/java/info/nightscout/androidaps/MainApp.java
@@ -7,7 +7,6 @@ import android.content.res.Resources;
import android.net.ConnectivityManager;
import android.net.wifi.WifiManager;
-import androidx.annotation.StringRes;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.j256.ormlite.android.apptools.OpenHelperManager;
@@ -21,6 +20,7 @@ import javax.inject.Inject;
import dagger.android.AndroidInjector;
import dagger.android.DaggerApplication;
import info.nightscout.androidaps.db.DatabaseHelper;
+import info.nightscout.androidaps.db.StaticInjector;
import info.nightscout.androidaps.dependencyInjection.DaggerAppComponent;
import info.nightscout.androidaps.interfaces.PluginBase;
import info.nightscout.androidaps.logging.AAPSLogger;
@@ -37,7 +37,7 @@ import info.nightscout.androidaps.receivers.NetworkChangeReceiver;
import info.nightscout.androidaps.receivers.TimeDateOrTZChangeReceiver;
import info.nightscout.androidaps.services.Intents;
import info.nightscout.androidaps.utils.ActivityMonitor;
-import info.nightscout.androidaps.utils.LocaleHelper;
+import info.nightscout.androidaps.utils.locale.LocaleHelper;
import info.nightscout.androidaps.utils.sharedPreferences.SP;
public class MainApp extends DaggerApplication {
@@ -52,11 +52,15 @@ public class MainApp extends DaggerApplication {
@Inject ActivityMonitor activityMonitor;
@Inject VersionCheckerUtils versionCheckersUtils;
@Inject SP sp;
+ @Inject NSUpload nsUpload;
+ @Inject Config config;
@Inject ConfigBuilderPlugin configBuilderPlugin;
@Inject KeepAliveReceiver.KeepAliveManager keepAliveManager;
@Inject List plugins;
+ @Inject StaticInjector staticInjector; // TODO avoid , here fake only to initialize
+
@Override
public void onCreate() {
super.onCreate();
@@ -66,7 +70,7 @@ public class MainApp extends DaggerApplication {
sResources = getResources();
LocaleHelper.INSTANCE.update(this);
sDatabaseHelper = OpenHelperManager.getHelper(sInstance, DatabaseHelper.class);
-
+/*
Thread.setDefaultUncaughtExceptionHandler((thread, ex) -> {
if (ex instanceof InternalError) {
// usually the app trying to spawn a thread while being killed
@@ -74,7 +78,7 @@ public class MainApp extends DaggerApplication {
}
aapsLogger.error("Uncaught exception crashing app", ex);
});
-
+*/
registerActivityLifecycleCallbacks(activityMonitor);
JodaTimeAndroid.init(this);
@@ -92,7 +96,7 @@ public class MainApp extends DaggerApplication {
pluginStore.setPlugins(plugins);
configBuilderPlugin.initialize();
- NSUpload.uploadAppStart();
+ nsUpload.uploadAppStart();
new Thread(() -> keepAliveManager.setAlarm(this)).start();
doMigrations();
@@ -100,7 +104,13 @@ public class MainApp extends DaggerApplication {
private void doMigrations() {
-
+ // set values for different builds
+ if (!sp.contains(R.string.key_ns_alarms))
+ sp.putBoolean(R.string.key_ns_alarms, config.getNSCLIENT());
+ if (!sp.contains(R.string.key_ns_announcements))
+ sp.putBoolean(R.string.key_ns_announcements, config.getNSCLIENT());
+ if (!sp.contains(R.string.key_language))
+ sp.putString(R.string.key_language, "default");
}
@Override
@@ -111,6 +121,7 @@ public class MainApp extends DaggerApplication {
.build();
}
+ @SuppressWarnings("deprecation")
private void registerLocalBroadcastReceiver() {
IntentFilter filter = new IntentFilter();
filter.addAction(Intents.ACTION_NEW_TREATMENT);
@@ -145,16 +156,6 @@ public class MainApp extends DaggerApplication {
registerReceiver(new BTReceiver(), filter);
}
- @Deprecated
- public static String gs(@StringRes int id) {
- return sResources.getString(id);
- }
-
- @Deprecated
- public static MainApp instance() {
- return sInstance;
- }
-
public static DatabaseHelper getDbHelper() {
return sDatabaseHelper;
}
diff --git a/app/src/main/java/info/nightscout/androidaps/activities/MyPreferenceFragment.kt b/app/src/main/java/info/nightscout/androidaps/activities/MyPreferenceFragment.kt
index 08560e062e..e01ea6da78 100644
--- a/app/src/main/java/info/nightscout/androidaps/activities/MyPreferenceFragment.kt
+++ b/app/src/main/java/info/nightscout/androidaps/activities/MyPreferenceFragment.kt
@@ -13,19 +13,22 @@ import dagger.android.HasAndroidInjector
import dagger.android.support.AndroidSupportInjection
import info.nightscout.androidaps.Config
import info.nightscout.androidaps.R
+import info.nightscout.androidaps.danaRKorean.DanaRKoreanPlugin
+import info.nightscout.androidaps.danaRv2.DanaRv2Plugin
+import info.nightscout.androidaps.danar.DanaRPlugin
+import info.nightscout.androidaps.danars.DanaRSPlugin
import info.nightscout.androidaps.data.Profile
import info.nightscout.androidaps.events.EventPreferenceChange
import info.nightscout.androidaps.events.EventRebuildTabs
import info.nightscout.androidaps.interfaces.PluginBase
+import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin
import info.nightscout.androidaps.plugins.aps.openAPSAMA.OpenAPSAMAPlugin
import info.nightscout.androidaps.plugins.aps.openAPSSMB.OpenAPSSMBPlugin
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.configBuilder.PluginStore
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
import info.nightscout.androidaps.plugins.constraints.safety.SafetyPlugin
import info.nightscout.androidaps.plugins.general.automation.AutomationPlugin
-import info.nightscout.androidaps.plugins.general.careportal.CareportalPlugin
import info.nightscout.androidaps.plugins.general.maintenance.MaintenancePlugin
import info.nightscout.androidaps.plugins.general.nsclient.NSClientPlugin
import info.nightscout.androidaps.plugins.general.nsclient.data.NSSettingsStatus
@@ -35,13 +38,8 @@ import info.nightscout.androidaps.plugins.general.wear.WearPlugin
import info.nightscout.androidaps.plugins.general.xdripStatusline.StatusLinePlugin
import info.nightscout.androidaps.plugins.insulin.InsulinOrefFreePeakPlugin
import info.nightscout.androidaps.plugins.pump.combo.ComboPlugin
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPlugin
-import info.nightscout.androidaps.plugins.pump.danaRKorean.DanaRKoreanPlugin
-import info.nightscout.androidaps.plugins.pump.danaRS.DanaRSPlugin
-import info.nightscout.androidaps.plugins.pump.danaRv2.DanaRv2Plugin
import info.nightscout.androidaps.plugins.pump.insight.LocalInsightPlugin
import info.nightscout.androidaps.plugins.pump.medtronic.MedtronicPumpPlugin
-import info.nightscout.androidaps.plugins.pump.omnipod.OmnipodPumpPlugin
import info.nightscout.androidaps.plugins.pump.virtual.VirtualPumpPlugin
import info.nightscout.androidaps.plugins.sensitivity.SensitivityAAPSPlugin
import info.nightscout.androidaps.plugins.sensitivity.SensitivityOref1Plugin
@@ -67,19 +65,18 @@ class MyPreferenceFragment : PreferenceFragmentCompat(), OnSharedPreferenceChang
@Inject lateinit var sp: SP
@Inject lateinit var profileFunction: ProfileFunction
@Inject lateinit var pluginStore: PluginStore
+ @Inject lateinit var config: Config
@Inject lateinit var automationPlugin: AutomationPlugin
@Inject lateinit var danaRPlugin: DanaRPlugin
@Inject lateinit var danaRKoreanPlugin: DanaRKoreanPlugin
@Inject lateinit var danaRv2Plugin: DanaRv2Plugin
@Inject lateinit var danaRSPlugin: DanaRSPlugin
- @Inject lateinit var careportalPlugin: CareportalPlugin
@Inject lateinit var comboPlugin: ComboPlugin
@Inject lateinit var insulinOrefFreePeakPlugin: InsulinOrefFreePeakPlugin
@Inject lateinit var loopPlugin: LoopPlugin
@Inject lateinit var localInsightPlugin: LocalInsightPlugin
@Inject lateinit var medtronicPumpPlugin: MedtronicPumpPlugin
- @Inject lateinit var omnipodPumpPlugin: OmnipodPumpPlugin
@Inject lateinit var nsClientPlugin: NSClientPlugin
@Inject lateinit var openAPSAMAPlugin: OpenAPSAMAPlugin
@Inject lateinit var openAPSSMBPlugin: OpenAPSSMBPlugin
@@ -102,6 +99,7 @@ class MyPreferenceFragment : PreferenceFragmentCompat(), OnSharedPreferenceChang
@Inject lateinit var passwordCheck: PasswordCheck
@Inject lateinit var nsSettingStatus: NSSettingsStatus
+ // TODO why?
@Inject lateinit var androidInjector: DispatchingAndroidInjector
override fun androidInjector(): AndroidInjector = androidInjector
@@ -161,22 +159,20 @@ class MyPreferenceFragment : PreferenceFragmentCompat(), OnSharedPreferenceChang
addPreferencesFromResourceIfEnabled(tomatoPlugin, rootKey)
addPreferencesFromResourceIfEnabled(poctechPlugin, rootKey)
addPreferencesFromResourceIfEnabled(glimpPlugin, rootKey)
- addPreferencesFromResourceIfEnabled(careportalPlugin, rootKey)
- addPreferencesFromResourceIfEnabled(loopPlugin, rootKey, Config.APS)
- addPreferencesFromResourceIfEnabled(openAPSAMAPlugin, rootKey, Config.APS)
- addPreferencesFromResourceIfEnabled(openAPSSMBPlugin, rootKey, Config.APS)
+ addPreferencesFromResourceIfEnabled(loopPlugin, rootKey, config.APS)
+ addPreferencesFromResourceIfEnabled(openAPSAMAPlugin, rootKey, config.APS)
+ addPreferencesFromResourceIfEnabled(openAPSSMBPlugin, rootKey, config.APS)
addPreferencesFromResourceIfEnabled(sensitivityAAPSPlugin, rootKey)
addPreferencesFromResourceIfEnabled(sensitivityWeightedAveragePlugin, rootKey)
addPreferencesFromResourceIfEnabled(sensitivityOref1Plugin, rootKey)
- addPreferencesFromResourceIfEnabled(danaRPlugin, rootKey, Config.PUMPDRIVERS)
- addPreferencesFromResourceIfEnabled(danaRKoreanPlugin, rootKey, Config.PUMPDRIVERS)
- addPreferencesFromResourceIfEnabled(danaRv2Plugin, rootKey, Config.PUMPDRIVERS)
- addPreferencesFromResourceIfEnabled(danaRSPlugin, rootKey, Config.PUMPDRIVERS)
- addPreferencesFromResourceIfEnabled(localInsightPlugin, rootKey, Config.PUMPDRIVERS)
- addPreferencesFromResourceIfEnabled(comboPlugin, rootKey, Config.PUMPDRIVERS)
- addPreferencesFromResourceIfEnabled(medtronicPumpPlugin, rootKey, Config.PUMPDRIVERS)
- addPreferencesFromResourceIfEnabled(omnipodPumpPlugin, rootKey, Config.PUMPDRIVERS)
- addPreferencesFromResourceIfEnabled(virtualPumpPlugin, rootKey, !Config.NSCLIENT)
+ addPreferencesFromResourceIfEnabled(danaRPlugin, rootKey, config.PUMPDRIVERS)
+ addPreferencesFromResourceIfEnabled(danaRKoreanPlugin, rootKey, config.PUMPDRIVERS)
+ addPreferencesFromResourceIfEnabled(danaRv2Plugin, rootKey, config.PUMPDRIVERS)
+ addPreferencesFromResourceIfEnabled(danaRSPlugin, rootKey, config.PUMPDRIVERS)
+ addPreferencesFromResourceIfEnabled(localInsightPlugin, rootKey, config.PUMPDRIVERS)
+ addPreferencesFromResourceIfEnabled(comboPlugin, rootKey, config.PUMPDRIVERS)
+ addPreferencesFromResourceIfEnabled(medtronicPumpPlugin, rootKey, config.PUMPDRIVERS)
+ addPreferencesFromResourceIfEnabled(virtualPumpPlugin, rootKey, !config.NSCLIENT)
addPreferencesFromResourceIfEnabled(insulinOrefFreePeakPlugin, rootKey)
addPreferencesFromResourceIfEnabled(nsClientPlugin, rootKey)
addPreferencesFromResourceIfEnabled(tidepoolPlugin, rootKey)
@@ -189,9 +185,7 @@ class MyPreferenceFragment : PreferenceFragmentCompat(), OnSharedPreferenceChang
addPreferencesFromResourceIfEnabled(maintenancePlugin, rootKey)
}
initSummary(preferenceScreen, pluginId != -1)
- for (plugin in pluginStore.plugins) {
- plugin.preprocessPreferences(this)
- }
+ preprocessPreferences()
}
override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences, key: String) {
@@ -208,12 +202,49 @@ class MyPreferenceFragment : PreferenceFragmentCompat(), OnSharedPreferenceChang
activity?.recreate()
return
}
- if (key == resourceHelper.gs(R.string.key_openapsama_useautosens) && sp.getBoolean(R.string.key_openapsama_useautosens, false))
+ if (key == resourceHelper.gs(R.string.key_openapsama_useautosens) && sp.getBoolean(R.string.key_openapsama_useautosens, false)) {
activity?.let {
show(it, resourceHelper.gs(R.string.configbuilder_sensitivity), resourceHelper.gs(R.string.sensitivity_warning))
}
+ }
+ checkForBiometricFallback(key)
updatePrefSummary(findPreference(key))
+ preprocessPreferences()
+ }
+
+ private fun preprocessPreferences() {
+ for (plugin in pluginStore.plugins) {
+ plugin.preprocessPreferences(this)
+ }
+ }
+
+ private fun checkForBiometricFallback(key: String) {
+ // Biometric protection activated without set master password
+ if ((resourceHelper.gs(R.string.key_settings_protection) == key ||
+ resourceHelper.gs(R.string.key_application_protection) == key ||
+ resourceHelper.gs(R.string.key_bolus_protection) == key) &&
+ sp.getString(R.string.key_master_password, "") == "" &&
+ sp.getInt(key, ProtectionCheck.ProtectionType.NONE.ordinal) == ProtectionCheck.ProtectionType.BIOMETRIC.ordinal
+ ) {
+ activity?.let {
+ val title = resourceHelper.gs(R.string.unsecure_fallback_biometric)
+ val message = resourceHelper.gs(R.string.master_password_missing, resourceHelper.gs(R.string.configbuilder_general), resourceHelper.gs(R.string.protection))
+ show(it, title = title, message = message)
+ }
+ }
+
+ // Master password erased with activated Biometric protection
+ val isBiometricActivated = sp.getInt(R.string.key_settings_protection, ProtectionCheck.ProtectionType.NONE.ordinal) == ProtectionCheck.ProtectionType.BIOMETRIC.ordinal ||
+ sp.getInt(R.string.key_application_protection, ProtectionCheck.ProtectionType.NONE.ordinal) == ProtectionCheck.ProtectionType.BIOMETRIC.ordinal ||
+ sp.getInt(R.string.key_bolus_protection, ProtectionCheck.ProtectionType.NONE.ordinal) == ProtectionCheck.ProtectionType.BIOMETRIC.ordinal
+ if (resourceHelper.gs(R.string.key_master_password) == key && sp.getString(key, "") == "" && isBiometricActivated) {
+ activity?.let {
+ val title = resourceHelper.gs(R.string.unsecure_fallback_biometric)
+ val message = resourceHelper.gs(R.string.unsecure_fallback_descriotion_biometric)
+ show(it, title = title, message = message)
+ }
+ }
}
@SuppressLint("RestrictedApi")
@@ -242,11 +273,9 @@ class MyPreferenceFragment : PreferenceFragmentCompat(), OnSharedPreferenceChang
resourceHelper.gs(R.string.key_high_mark),
resourceHelper.gs(R.string.key_low_mark)
)
- if (listOf(*unitDependent).contains(pref.key)) {
- val editTextPref = pref as EditTextPreference
- val converted = Profile.toCurrentUnitsString(profileFunction, SafeParse.stringToDouble(editTextPref.text))
- editTextPref.summary = converted
- editTextPref.text = converted
+ if (unitDependent.toList().contains(pref.key) && pref is EditTextPreference) {
+ val converted = Profile.toCurrentUnits(profileFunction, SafeParse.stringToDouble(pref.text))
+ pref.summary = converted.toString()
}
}
@@ -282,7 +311,7 @@ class MyPreferenceFragment : PreferenceFragmentCompat(), OnSharedPreferenceChang
}
for (plugin in pluginStore.plugins) {
- pref?.let { it.key?.let { plugin.updatePreferenceSummary(pref) }}
+ pref?.let { it.key?.let { plugin.updatePreferenceSummary(pref) } }
}
val hmacPasswords = arrayOf(
diff --git a/app/src/main/java/info/nightscout/androidaps/activities/PreferencesActivity.kt b/app/src/main/java/info/nightscout/androidaps/activities/PreferencesActivity.kt
index ad3961c883..ea90f4b250 100644
--- a/app/src/main/java/info/nightscout/androidaps/activities/PreferencesActivity.kt
+++ b/app/src/main/java/info/nightscout/androidaps/activities/PreferencesActivity.kt
@@ -5,7 +5,7 @@ import android.os.Bundle
import androidx.preference.PreferenceFragmentCompat
import androidx.preference.PreferenceScreen
import info.nightscout.androidaps.R
-import info.nightscout.androidaps.utils.LocaleHelper
+import info.nightscout.androidaps.utils.locale.LocaleHelper
import info.nightscout.androidaps.utils.resources.ResourceHelper
import javax.inject.Inject
diff --git a/app/src/main/java/info/nightscout/androidaps/activities/ProfileHelperActivity.kt b/app/src/main/java/info/nightscout/androidaps/activities/ProfileHelperActivity.kt
new file mode 100644
index 0000000000..efb7e57b19
--- /dev/null
+++ b/app/src/main/java/info/nightscout/androidaps/activities/ProfileHelperActivity.kt
@@ -0,0 +1,288 @@
+package info.nightscout.androidaps.activities
+
+import android.content.res.ColorStateList
+import android.os.Bundle
+import android.text.Editable
+import android.text.TextWatcher
+import android.view.Menu
+import android.widget.PopupMenu
+import info.nightscout.androidaps.R
+import info.nightscout.androidaps.data.Profile
+import info.nightscout.androidaps.data.defaultProfile.DefaultProfile
+import info.nightscout.androidaps.data.defaultProfile.DefaultProfileDPV
+import info.nightscout.androidaps.db.ProfileSwitch
+import info.nightscout.androidaps.dialogs.ProfileViewerDialog
+import info.nightscout.androidaps.interfaces.ActivePluginProvider
+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.profile.local.LocalProfilePlugin
+import info.nightscout.androidaps.plugins.profile.local.events.EventLocalProfileChanged
+import info.nightscout.androidaps.utils.DateUtil
+import info.nightscout.androidaps.utils.T
+import info.nightscout.androidaps.utils.ToastUtils
+import info.nightscout.androidaps.utils.alertDialogs.OKDialog
+import info.nightscout.androidaps.utils.extensions.toVisibility
+import info.nightscout.androidaps.utils.resources.ResourceHelper
+import info.nightscout.androidaps.utils.stats.TddCalculator
+import kotlinx.android.synthetic.main.activity_profilehelper.*
+import java.text.DecimalFormat
+import javax.inject.Inject
+
+class ProfileHelperActivity : NoSplashAppCompatActivity() {
+ @Inject lateinit var aapsLogger: AAPSLogger
+ @Inject lateinit var resourceHelper: ResourceHelper
+ @Inject lateinit var tddCalculator: TddCalculator
+ @Inject lateinit var profileFunction: ProfileFunction
+ @Inject lateinit var defaultProfile: DefaultProfile
+ @Inject lateinit var defaultProfileDPV: DefaultProfileDPV
+ @Inject lateinit var localProfilePlugin: LocalProfilePlugin
+ @Inject lateinit var rxBus: RxBusWrapper
+ @Inject lateinit var dateUtil: DateUtil
+ @Inject lateinit var activePlugin: ActivePluginProvider
+ @Inject lateinit var databaseHelper: DatabaseHelperInterface
+
+ enum class ProfileType {
+ MOTOL_DEFAULT,
+ DPV_DEFAULT,
+ CURRENT,
+ AVAILABLE_PROFILE,
+ PROFILE_SWITCH
+ }
+
+ private var tabSelected = 0
+ private val typeSelected = arrayOf(ProfileType.MOTOL_DEFAULT, ProfileType.CURRENT)
+
+ private val ageUsed = arrayOf(15.0, 15.0)
+ private val weightUsed = arrayOf(0.0, 0.0)
+ private val tddUsed = arrayOf(0.0, 0.0)
+ private val pctUsed = arrayOf(32.0, 32.0)
+
+ private lateinit var profileList: ArrayList
+ private val profileUsed = arrayOf(0, 0)
+
+ private lateinit var profileSwitch: List
+ private val profileSwitchUsed = arrayOf(0, 0)
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_profilehelper)
+
+ profilehelper_menu1.setOnClickListener {
+ switchTab(0, typeSelected[0])
+ }
+ profilehelper_menu2.setOnClickListener {
+ switchTab(1, typeSelected[1])
+ }
+
+ profilehelper_profiletype.setOnClickListener {
+ PopupMenu(this, profilehelper_profiletype).apply {
+ menuInflater.inflate(R.menu.menu_profilehelper, menu)
+ setOnMenuItemClickListener { item ->
+ profilehelper_profiletype.setText(item.title)
+ when (item.itemId) {
+ R.id.menu_default -> switchTab(tabSelected, ProfileType.MOTOL_DEFAULT)
+ R.id.menu_default_dpv -> switchTab(tabSelected, ProfileType.DPV_DEFAULT)
+ R.id.menu_current -> switchTab(tabSelected, ProfileType.CURRENT)
+ R.id.menu_available -> switchTab(tabSelected, ProfileType.AVAILABLE_PROFILE)
+ R.id.menu_profileswitch -> switchTab(tabSelected, ProfileType.PROFILE_SWITCH)
+ }
+ true
+ }
+ show()
+ }
+ }
+
+ // Active profile
+ profileList = activePlugin.activeProfileInterface.profile?.getProfileList() ?: ArrayList()
+
+ profilehelper_available_profile_list.setOnClickListener {
+ PopupMenu(this, profilehelper_available_profile_list).apply {
+ var order = 0
+ for (name in profileList) menu.add(Menu.NONE, order, order++, name)
+ setOnMenuItemClickListener { item ->
+ profilehelper_available_profile_list.setText(item.title)
+ profileUsed[tabSelected] = item.itemId
+ true
+ }
+ show()
+ }
+ }
+
+ // Profile switch
+ profileSwitch = databaseHelper.getProfileSwitchData(dateUtil._now() - T.months(2).msecs(), true)
+
+ profilehelper_profileswitch_list.setOnClickListener {
+ PopupMenu(this, profilehelper_profileswitch_list).apply {
+ var order = 0
+ for (name in profileSwitch) menu.add(Menu.NONE, order, order++, name.customizedName)
+ setOnMenuItemClickListener { item ->
+ profilehelper_profileswitch_list.setText(item.title)
+ profileSwitchUsed[tabSelected] = item.itemId
+ true
+ }
+ show()
+ }
+ }
+
+ // Default profile
+ profilehelper_copytolocalprofile.setOnClickListener {
+ val age = ageUsed[tabSelected]
+ val weight = weightUsed[tabSelected]
+ val tdd = tddUsed[tabSelected]
+ val pct = pctUsed[tabSelected]
+ val profile = if (typeSelected[tabSelected] == ProfileType.MOTOL_DEFAULT) defaultProfile.profile(age, tdd, weight, profileFunction.getUnits())
+ else defaultProfileDPV.profile(age, tdd, pct / 100.0, profileFunction.getUnits())
+ profile?.let {
+ OKDialog.showConfirmation(this, resourceHelper.gs(R.string.careportal_profileswitch), resourceHelper.gs(R.string.copytolocalprofile), Runnable {
+ localProfilePlugin.addProfile(localProfilePlugin.copyFrom(it, "DefaultProfile" + dateUtil.dateAndTimeAndSecondsString(dateUtil._now())))
+ rxBus.send(EventLocalProfileChanged())
+ })
+ }
+ }
+
+ profilehelper_age.setParams(0.0, 1.0, 18.0, 1.0, DecimalFormat("0"), false, null)
+ profilehelper_weight.setParams(0.0, 0.0, 150.0, 1.0, DecimalFormat("0"), false, null, object : TextWatcher {
+ override fun afterTextChanged(s: Editable) {}
+ override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {}
+ override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
+ profilehelper_tdd_row.visibility = (profilehelper_weight.value == 0.0).toVisibility()
+ }
+ })
+ profilehelper_tdd.setParams(0.0, 0.0, 200.0, 1.0, DecimalFormat("0"), false, null, object : TextWatcher {
+ override fun afterTextChanged(s: Editable) {}
+ override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {}
+ override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
+ profilehelper_weight_row.visibility = (profilehelper_tdd.value == 0.0).toVisibility()
+ }
+ })
+
+ profilehelper_basalpctfromtdd.setParams(32.0, 32.0, 37.0, 1.0, DecimalFormat("0"), false, null)
+
+ profilehelper_tdds.text = tddCalculator.stats()
+
+ // Current profile
+ profilehelper_current_profile_text.text = profileFunction.getProfileName()
+
+ // General
+ profilehelper_compareprofile.setOnClickListener {
+ storeValues()
+ for (i in 0..1) {
+ if (typeSelected[i] == ProfileType.MOTOL_DEFAULT) {
+ if (ageUsed[i] < 1 || ageUsed[i] > 18) {
+ ToastUtils.showToastInUiThread(this, R.string.invalidage)
+ return@setOnClickListener
+ }
+ if ((weightUsed[i] < 5 || weightUsed[i] > 150) && tddUsed[i] == 0.0) {
+ ToastUtils.showToastInUiThread(this, R.string.invalidweight)
+ return@setOnClickListener
+ }
+ if ((tddUsed[i] < 5 || tddUsed[i] > 150) && weightUsed[i] == 0.0) {
+ ToastUtils.showToastInUiThread(this, R.string.invalidweight)
+ return@setOnClickListener
+ }
+ }
+ if (typeSelected[i] == ProfileType.DPV_DEFAULT) {
+ if (ageUsed[i] < 1 || ageUsed[i] > 18) {
+ ToastUtils.showToastInUiThread(this, R.string.invalidage)
+ return@setOnClickListener
+ }
+ if (tddUsed[i] < 5 || tddUsed[i] > 150) {
+ ToastUtils.showToastInUiThread(this, R.string.invalidweight)
+ return@setOnClickListener
+ }
+ if ((pctUsed[i] < 32 || pctUsed[i] > 37)) {
+ ToastUtils.showToastInUiThread(this, R.string.invalidpct)
+ return@setOnClickListener
+ }
+ }
+ }
+
+ getProfile(ageUsed[0], tddUsed[0], weightUsed[0], pctUsed[0] / 100.0, 0)?.let { profile0 ->
+ getProfile(ageUsed[1], tddUsed[1], weightUsed[1], pctUsed[1] / 100.0, 1)?.let { profile1 ->
+ ProfileViewerDialog().also { pvd ->
+ pvd.arguments = Bundle().also {
+ it.putLong("time", DateUtil.now())
+ it.putInt("mode", ProfileViewerDialog.Mode.PROFILE_COMPARE.ordinal)
+ it.putString("customProfile", profile0.data.toString())
+ it.putString("customProfile2", profile1.data.toString())
+ it.putString("customProfileUnits", profileFunction.getUnits())
+ it.putString("customProfileName", getProfileName(ageUsed[0], tddUsed[0], weightUsed[0], pctUsed[0] / 100.0, 0) + "\n" + getProfileName(ageUsed[1], tddUsed[1], weightUsed[1], pctUsed[1] / 100.0, 1))
+ }
+ }.show(supportFragmentManager, "ProfileViewDialog")
+ return@setOnClickListener
+ }
+ }
+ ToastUtils.showToastInUiThread(this, R.string.invalidinput)
+ }
+
+ switchTab(0, typeSelected[0], false)
+ }
+
+ private fun getProfile(age: Double, tdd: Double, weight: Double, basalPct: Double, tab: Int): Profile? =
+ when (typeSelected[tab]) {
+ ProfileType.MOTOL_DEFAULT -> defaultProfile.profile(age, tdd, weight, profileFunction.getUnits())
+ ProfileType.DPV_DEFAULT -> defaultProfileDPV.profile(age, tdd, basalPct, profileFunction.getUnits())
+ ProfileType.CURRENT -> profileFunction.getProfile()?.convertToNonCustomizedProfile()
+ ProfileType.AVAILABLE_PROFILE -> activePlugin.activeProfileInterface.profile?.getSpecificProfile(profileList[profileUsed[tab]].toString())
+ ProfileType.PROFILE_SWITCH -> profileSwitch[profileSwitchUsed[tab]].profileObject?.convertToNonCustomizedProfile()
+ }
+
+ private fun getProfileName(age: Double, tdd: Double, weight: Double, basalSumPct: Double, tab: Int): String =
+ when (typeSelected[tab]) {
+ ProfileType.MOTOL_DEFAULT -> if (tdd > 0) resourceHelper.gs(R.string.formatwithtdd, age, tdd) else resourceHelper.gs(R.string.formatwithweight, age, weight)
+ ProfileType.DPV_DEFAULT -> resourceHelper.gs(R.string.formatwittddandpct, age, tdd, (basalSumPct * 100).toInt())
+ ProfileType.CURRENT -> profileFunction.getProfileName()
+ ProfileType.AVAILABLE_PROFILE -> profileList[profileUsed[tab]].toString()
+ ProfileType.PROFILE_SWITCH -> profileSwitch[profileSwitchUsed[tab]].customizedName
+ }
+
+ private fun storeValues() {
+ ageUsed[tabSelected] = profilehelper_age.value
+ weightUsed[tabSelected] = profilehelper_weight.value
+ tddUsed[tabSelected] = profilehelper_tdd.value
+ pctUsed[tabSelected] = profilehelper_basalpctfromtdd.value
+ }
+
+ private fun switchTab(tab: Int, newContent: ProfileType, storeOld: Boolean = true) {
+ setBackgroundColorOnSelected(tab)
+ // Store values for selected tab. listBox values are stored on selection change
+ if (storeOld) storeValues()
+
+ tabSelected = tab
+ typeSelected[tabSelected] = newContent
+ profilehelper_profiletype_title.defaultHintTextColor = ColorStateList.valueOf(resourceHelper.gc(if (tab == 0) R.color.tabBgColorSelected else R.color.examinedProfile))
+
+ // show new content
+ profilehelper_profiletype.setText(
+ when (typeSelected[tabSelected]) {
+ ProfileType.MOTOL_DEFAULT -> resourceHelper.gs(R.string.motoldefaultprofile)
+ ProfileType.DPV_DEFAULT -> resourceHelper.gs(R.string.dpvdefaultprofile)
+ ProfileType.CURRENT -> resourceHelper.gs(R.string.currentprofile)
+ ProfileType.AVAILABLE_PROFILE -> resourceHelper.gs(R.string.availableprofile)
+ ProfileType.PROFILE_SWITCH -> resourceHelper.gs(R.string.careportal_profileswitch)
+ })
+ profilehelper_default_profile.visibility = (newContent == ProfileType.MOTOL_DEFAULT || newContent == ProfileType.DPV_DEFAULT).toVisibility()
+ profilehelper_current_profile.visibility = (newContent == ProfileType.CURRENT).toVisibility()
+ profilehelper_available_profile.visibility = (newContent == ProfileType.AVAILABLE_PROFILE).toVisibility()
+ profilehelper_profile_switch.visibility = (newContent == ProfileType.PROFILE_SWITCH).toVisibility()
+
+ // restore selected values
+ profilehelper_age.value = ageUsed[tabSelected]
+ profilehelper_weight.value = weightUsed[tabSelected]
+ profilehelper_tdd.value = tddUsed[tabSelected]
+ profilehelper_basalpctfromtdd.value = pctUsed[tabSelected]
+
+ profilehelper_basalpctfromtdd_row.visibility = (newContent == ProfileType.DPV_DEFAULT).toVisibility()
+ if (profileList.isNotEmpty())
+ profilehelper_available_profile_list.setText(profileList[profileUsed[tabSelected]].toString())
+ if (profileSwitch.isNotEmpty())
+ profilehelper_profileswitch_list.setText(profileSwitch[profileSwitchUsed[tabSelected]].customizedName)
+ }
+
+ private fun setBackgroundColorOnSelected(tab: Int) {
+ profilehelper_menu1.setBackgroundColor(resourceHelper.gc(if (tab == 1) R.color.defaultbackground else R.color.tabBgColorSelected))
+ profilehelper_menu2.setBackgroundColor(resourceHelper.gc(if (tab == 0) R.color.defaultbackground else R.color.examinedProfile))
+ }
+}
diff --git a/app/src/main/java/info/nightscout/androidaps/activities/SingleFragmentActivity.kt b/app/src/main/java/info/nightscout/androidaps/activities/SingleFragmentActivity.kt
index 9e62f16c97..0193b690a6 100644
--- a/app/src/main/java/info/nightscout/androidaps/activities/SingleFragmentActivity.kt
+++ b/app/src/main/java/info/nightscout/androidaps/activities/SingleFragmentActivity.kt
@@ -9,7 +9,7 @@ import dagger.android.support.DaggerAppCompatActivity
import info.nightscout.androidaps.R
import info.nightscout.androidaps.interfaces.PluginBase
import info.nightscout.androidaps.plugins.configBuilder.PluginStore
-import info.nightscout.androidaps.utils.LocaleHelper
+import info.nightscout.androidaps.utils.locale.LocaleHelper
import info.nightscout.androidaps.utils.protection.ProtectionCheck
import javax.inject.Inject
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 6ea91d443a..ca26266f8f 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.utils.ActivityMonitor
+import info.nightscout.androidaps.utils.DateUtil
import info.nightscout.androidaps.utils.alertDialogs.OKDialog
import info.nightscout.androidaps.utils.stats.TddCalculator
import info.nightscout.androidaps.utils.stats.TirCalculator
diff --git a/app/src/main/java/info/nightscout/androidaps/activities/SurveyActivity.kt b/app/src/main/java/info/nightscout/androidaps/activities/SurveyActivity.kt
index 2a5e8bcecd..1d03ddb344 100644
--- a/app/src/main/java/info/nightscout/androidaps/activities/SurveyActivity.kt
+++ b/app/src/main/java/info/nightscout/androidaps/activities/SurveyActivity.kt
@@ -8,9 +8,9 @@ import info.nightscout.androidaps.R
import info.nightscout.androidaps.data.defaultProfile.DefaultProfile
import info.nightscout.androidaps.dialogs.ProfileViewerDialog
import info.nightscout.androidaps.interfaces.ActivePluginProvider
+import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
import info.nightscout.androidaps.utils.ActivityMonitor
import info.nightscout.androidaps.utils.DateUtil
import info.nightscout.androidaps.utils.InstanceId
@@ -19,7 +19,7 @@ import info.nightscout.androidaps.utils.ToastUtils
import info.nightscout.androidaps.utils.resources.ResourceHelper
import info.nightscout.androidaps.utils.stats.TddCalculator
import info.nightscout.androidaps.utils.stats.TirCalculator
-import kotlinx.android.synthetic.main.survey_activity.*
+import kotlinx.android.synthetic.main.activity_survey.*
import javax.inject.Inject
class SurveyActivity : NoSplashAppCompatActivity() {
@@ -34,7 +34,7 @@ class SurveyActivity : NoSplashAppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
- setContentView(R.layout.survey_activity)
+ setContentView(R.layout.activity_survey)
survey_id.text = InstanceId.instanceId()
@@ -62,16 +62,20 @@ class SurveyActivity : NoSplashAppCompatActivity() {
ToastUtils.showToastInUiThread(this, R.string.invalidweight)
return@setOnClickListener
}
- val profile = defaultProfile.profile(age, tdd, weight, profileFunction.getUnits())
- val args = Bundle()
- args.putLong("time", DateUtil.now())
- args.putInt("mode", ProfileViewerDialog.Mode.CUSTOM_PROFILE.ordinal)
- args.putString("customProfile", profile.data.toString())
- args.putString("customProfileUnits", profile.units)
- args.putString("customProfileName", "Age: $age TDD: $tdd Weight: $weight")
- val pvd = ProfileViewerDialog()
- pvd.arguments = args
- pvd.show(supportFragmentManager, "ProfileViewDialog")
+ profileFunction.getProfile()?.let { runningProfile ->
+ defaultProfile.profile(age, tdd, weight, profileFunction.getUnits())?.let { profile ->
+ ProfileViewerDialog().also { pvd ->
+ pvd.arguments = Bundle().also {
+ it.putLong("time", DateUtil.now())
+ it.putInt("mode", ProfileViewerDialog.Mode.PROFILE_COMPARE.ordinal)
+ it.putString("customProfile", runningProfile.data.toString())
+ it.putString("customProfile2", profile.data.toString())
+ it.putString("customProfileUnits", profile.units)
+ it.putString("customProfileName", "Age: $age TDD: $tdd Weight: $weight")
+ }
+ }.show(supportFragmentManager, "ProfileViewDialog")
+ }
+ }
}
survey_submit.setOnClickListener {
diff --git a/app/src/main/java/info/nightscout/androidaps/db/DatabaseHelper.java b/app/src/main/java/info/nightscout/androidaps/db/DatabaseHelper.java
index 5759429d69..7ba9957ed8 100644
--- a/app/src/main/java/info/nightscout/androidaps/db/DatabaseHelper.java
+++ b/app/src/main/java/info/nightscout/androidaps/db/DatabaseHelper.java
@@ -17,7 +17,6 @@ import com.j256.ormlite.table.TableUtils;
import org.json.JSONException;
import org.json.JSONObject;
-import org.slf4j.Logger;
import java.sql.SQLException;
import java.util.ArrayList;
@@ -29,11 +28,13 @@ import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
+import javax.inject.Inject;
+
import info.nightscout.androidaps.Constants;
import info.nightscout.androidaps.MainApp;
+import info.nightscout.androidaps.dana.comm.RecordTypes;
import info.nightscout.androidaps.data.NonOverlappingIntervals;
import info.nightscout.androidaps.data.Profile;
-import info.nightscout.androidaps.data.ProfileStore;
import info.nightscout.androidaps.events.EventCareportalEventChange;
import info.nightscout.androidaps.events.EventExtendedBolusChange;
import info.nightscout.androidaps.events.EventNewBG;
@@ -46,15 +47,13 @@ import info.nightscout.androidaps.events.EventTempBasalChange;
import info.nightscout.androidaps.events.EventTempTargetChange;
import info.nightscout.androidaps.interfaces.ActivePluginProvider;
import info.nightscout.androidaps.interfaces.ProfileInterface;
-import info.nightscout.androidaps.logging.L;
+import info.nightscout.androidaps.interfaces.ProfileStore;
+import info.nightscout.androidaps.logging.AAPSLogger;
import info.nightscout.androidaps.logging.LTag;
-import info.nightscout.androidaps.logging.StacktraceLoggerWrapper;
-import info.nightscout.androidaps.plugins.bus.RxBus;
-import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin;
-import info.nightscout.androidaps.plugins.configBuilder.PluginStore;
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload;
+import info.nightscout.androidaps.plugins.iob.iobCobCalculator.events.EventNewHistoryBgData;
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.events.EventNewHistoryData;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.RecordTypes;
import info.nightscout.androidaps.plugins.pump.insight.database.InsightBolusID;
import info.nightscout.androidaps.plugins.pump.insight.database.InsightHistoryOffset;
import info.nightscout.androidaps.plugins.pump.insight.database.InsightPumpID;
@@ -62,7 +61,7 @@ import info.nightscout.androidaps.plugins.pump.omnipod.driver.db.PodHistory;
import info.nightscout.androidaps.plugins.pump.virtual.VirtualPumpPlugin;
import info.nightscout.androidaps.utils.JsonHelper;
import info.nightscout.androidaps.utils.PercentageSplitter;
-import info.nightscout.androidaps.utils.ToastUtils;
+import info.nightscout.androidaps.utils.T;
/**
* This Helper contains all resource to provide a central DB management functionality. Only methods handling
@@ -73,7 +72,9 @@ import info.nightscout.androidaps.utils.ToastUtils;
* direct calls to the corresponding methods (eg. resetDatabases) should be done by a central service.
*/
public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
- private static Logger log = StacktraceLoggerWrapper.getLogger(LTag.DATABASE);
+ @Inject AAPSLogger aapsLogger;
+ @Inject RxBusWrapper rxBus;
+ @Inject VirtualPumpPlugin virtualPumpPlugin;
public static final String DATABASE_NAME = "AndroidAPSDb";
public static final String DATABASE_BGREADINGS = "BgReadings";
@@ -83,7 +84,6 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
public static final String DATABASE_DANARHISTORY = "DanaRHistory";
public static final String DATABASE_DBREQUESTS = "DBRequests";
public static final String DATABASE_CAREPORTALEVENTS = "CareportalEvents";
- public static final String DATABASE_PROFILESWITCHES = "ProfileSwitches";
public static final String DATABASE_TDDS = "TDDs";
public static final String DATABASE_INSIGHT_HISTORY_OFFSETS = "InsightHistoryOffsets";
public static final String DATABASE_INSIGHT_BOLUS_IDS = "InsightBolusIDs";
@@ -97,6 +97,10 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
private static final ScheduledExecutorService bgWorker = Executors.newSingleThreadScheduledExecutor();
private static ScheduledFuture> scheduledBgPost = null;
+ private static final ScheduledExecutorService bgHistoryWorker = Executors.newSingleThreadScheduledExecutor();
+ private static ScheduledFuture> scheduledBgHistoryPost = null;
+ private static long oldestBgHistoryChange = 0;
+
private static final ScheduledExecutorService tempBasalsWorker = Executors.newSingleThreadScheduledExecutor();
private static ScheduledFuture> scheduledTemBasalsPost = null;
@@ -117,6 +121,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
public DatabaseHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
+ StaticInjector.Companion.getInstance().androidInjector().inject(this);
onCreate(getWritableDatabase(), getConnectionSource());
//onUpgrade(getWritableDatabase(), getConnectionSource(), 1,1);
}
@@ -124,8 +129,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
@Override
public void onCreate(SQLiteDatabase database, ConnectionSource connectionSource) {
try {
- if (L.isEnabled(LTag.DATABASE))
- log.info("onCreate");
+ aapsLogger.info(LTag.DATABASE, "onCreate");
TableUtils.createTableIfNotExists(connectionSource, TempTarget.class);
TableUtils.createTableIfNotExists(connectionSource, BgReading.class);
TableUtils.createTableIfNotExists(connectionSource, DanaRHistoryRecord.class);
@@ -144,7 +148,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
database.execSQL("INSERT INTO sqlite_sequence (name, seq) SELECT \"" + DATABASE_INSIGHT_PUMP_IDS + "\", " + System.currentTimeMillis() + " " +
"WHERE NOT EXISTS (SELECT 1 FROM sqlite_sequence WHERE name = \"" + DATABASE_INSIGHT_PUMP_IDS + "\")");
} catch (SQLException e) {
- log.error("Can't create database", e);
+ aapsLogger.error("Can't create database", e);
throw new RuntimeException(e);
}
}
@@ -156,7 +160,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
this.newVersion = newVersion;
if (oldVersion < 7) {
- log.info(DatabaseHelper.class.getName(), "onUpgrade");
+ aapsLogger.info(LTag.DATABASE, "onUpgrade");
TableUtils.dropTable(connectionSource, TempTarget.class, true);
TableUtils.dropTable(connectionSource, BgReading.class, true);
TableUtils.dropTable(connectionSource, DanaRHistoryRecord.class, true);
@@ -179,15 +183,15 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
database.execSQL("UPDATE sqlite_sequence SET seq = " + System.currentTimeMillis() + " WHERE name = \"" + DATABASE_INSIGHT_PUMP_IDS + "\"");
}
} catch (SQLException e) {
- log.error("Can't drop databases", e);
+ aapsLogger.error("Can't drop databases", e);
throw new RuntimeException(e);
}
}
@Override
public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
- log.info("Do nothing for downgrading...");
- log.debug("oldVersion: {}, newVersion: {}", oldVersion, newVersion);
+ aapsLogger.info(LTag.DATABASE, "Do nothing for downgrading...");
+ aapsLogger.info(LTag.DATABASE, "oldVersion: {}, newVersion: {}", oldVersion, newVersion);
}
public int getOldVersion() {
@@ -228,9 +232,9 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
TableUtils.createTableIfNotExists(connectionSource, PodHistory.class);
updateEarliestDataChange(0);
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
- VirtualPumpPlugin.Companion.getPlugin().setFakingStatus(true);
+ virtualPumpPlugin.setFakingStatus(true);
scheduleBgChange(null); // trigger refresh
scheduleTemporaryBasalChange();
scheduleExtendedBolusChange();
@@ -241,7 +245,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
new java.util.TimerTask() {
@Override
public void run() {
- RxBus.Companion.getINSTANCE().send(new EventRefreshOverview("resetDatabases", false));
+ rxBus.send(new EventRefreshOverview("resetDatabases", false));
}
},
3000
@@ -253,7 +257,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
TableUtils.dropTable(connectionSource, TempTarget.class, true);
TableUtils.createTableIfNotExists(connectionSource, TempTarget.class);
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
scheduleTemporaryTargetChange();
}
@@ -264,9 +268,9 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
TableUtils.createTableIfNotExists(connectionSource, TemporaryBasal.class);
updateEarliestDataChange(0);
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
- VirtualPumpPlugin.Companion.getPlugin().setFakingStatus(false);
+ virtualPumpPlugin.setFakingStatus(false);
scheduleTemporaryBasalChange();
}
@@ -276,7 +280,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
TableUtils.createTableIfNotExists(connectionSource, ExtendedBolus.class);
updateEarliestDataChange(0);
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
scheduleExtendedBolusChange();
}
@@ -286,7 +290,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
TableUtils.dropTable(connectionSource, CareportalEvent.class, true);
TableUtils.createTableIfNotExists(connectionSource, CareportalEvent.class);
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
scheduleCareportalEventChange();
}
@@ -296,7 +300,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
TableUtils.dropTable(connectionSource, ProfileSwitch.class, true);
TableUtils.createTableIfNotExists(connectionSource, ProfileSwitch.class);
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
scheduleProfileSwitchChange();
}
@@ -306,7 +310,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
TableUtils.dropTable(connectionSource, TDD.class, true);
TableUtils.createTableIfNotExists(connectionSource, TDD.class);
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
}
@@ -364,11 +368,10 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
return getDao(PodHistory.class);
}
- public static long roundDateToSec(long date) {
+ public long roundDateToSec(long date) {
long rounded = date - date % 1000;
if (rounded != date)
- if (L.isEnabled(LTag.DATABASE))
- log.debug("Rounding " + date + " to " + rounded);
+ aapsLogger.debug(LTag.DATABASE, "Rounding " + date + " to " + rounded);
return rounded;
}
// ------------------- BgReading handling -----------------------
@@ -379,23 +382,20 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
BgReading old = getDaoBgReadings().queryForId(bgReading.date);
if (old == null) {
getDaoBgReadings().create(bgReading);
- if (L.isEnabled(LTag.DATABASE))
- log.debug("BG: New record from: " + from + " " + bgReading.toString());
+ aapsLogger.debug(LTag.DATABASE, "BG: New record from: " + from + " " + bgReading.toString());
scheduleBgChange(bgReading);
return true;
}
if (!old.isEqual(bgReading)) {
- if (L.isEnabled(LTag.DATABASE))
- log.debug("BG: Similiar found: " + old.toString());
+ aapsLogger.debug(LTag.DATABASE, "BG: Similiar found: " + old.toString());
old.copyFrom(bgReading);
getDaoBgReadings().update(old);
- if (L.isEnabled(LTag.DATABASE))
- log.debug("BG: Updating record from: " + from + " New data: " + old.toString());
- scheduleBgChange(bgReading);
+ aapsLogger.debug(LTag.DATABASE, "BG: Updating record from: " + from + " New data: " + old.toString());
+ scheduleBgHistoryChange(old.date); // trigger cache invalidation
return false;
}
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return false;
}
@@ -405,16 +405,15 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
try {
getDaoBgReadings().update(bgReading);
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
}
- private static void scheduleBgChange(@Nullable final BgReading bgReading) {
+ private void scheduleBgChange(@Nullable final BgReading bgReading) {
class PostRunnable implements Runnable {
public void run() {
- if (L.isEnabled(LTag.DATABASE))
- log.debug("Firing EventNewBg");
- RxBus.Companion.getINSTANCE().send(new EventNewBG(bgReading));
+ aapsLogger.debug(LTag.DATABASE, "Firing EventNewBg");
+ rxBus.send(new EventNewBG(bgReading));
scheduledBgPost = null;
}
}
@@ -428,6 +427,26 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
}
+ private void scheduleBgHistoryChange(@Nullable final long timestamp) {
+ class PostRunnable implements Runnable {
+ public void run() {
+ aapsLogger.debug(LTag.DATABASE, "Firing EventNewBg");
+ rxBus.send(new EventNewHistoryBgData(oldestBgHistoryChange));
+ scheduledBgHistoryPost = null;
+ oldestBgHistoryChange = 0;
+ }
+ }
+ // prepare task for execution in 1 sec
+ // cancel waiting task to prevent sending multiple posts
+ if (scheduledBgHistoryPost != null)
+ scheduledBgHistoryPost.cancel(false);
+ Runnable task = new PostRunnable();
+ final int sec = 3;
+ if (oldestBgHistoryChange == 0 || oldestBgHistoryChange > timestamp) oldestBgHistoryChange = timestamp;
+ scheduledBgHistoryPost = bgHistoryWorker.schedule(task, sec, TimeUnit.SECONDS);
+
+ }
+
public List getBgreadingsDataFromTime(long mills, boolean ascending) {
try {
Dao daoBgreadings = getDaoBgReadings();
@@ -440,7 +459,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
bgReadings = daoBgreadings.query(preparedQuery);
return bgReadings;
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return new ArrayList<>();
}
@@ -457,7 +476,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
bgReadings = daoBgreadings.query(preparedQuery);
return bgReadings;
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return new ArrayList<>();
}
@@ -474,7 +493,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
bgReadings = daoBgreadings.query(preparedQuery);
return bgReadings;
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return new ArrayList();
}
@@ -485,8 +504,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
Dao dao = getDaoTDD();
dao.createOrUpdate(tdd);
} catch (SQLException e) {
- ToastUtils.showToastInUiThread(MainApp.instance(), "createOrUpdate-Exception");
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
}
@@ -499,7 +517,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
PreparedQuery preparedQuery = queryBuilder.prepare();
tddList = getDaoTDD().query(preparedQuery);
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
tddList = new ArrayList<>();
}
return tddList;
@@ -518,7 +536,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
PreparedQuery preparedQuery = queryBuilder.prepare();
tddList = getDaoTDD().query(preparedQuery);
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
tddList = new ArrayList<>();
}
return tddList;
@@ -534,7 +552,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
try {
return getDaoDbRequest().delete(dbr);
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return 0;
}
@@ -543,7 +561,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
try {
return getDaoDbRequest().deleteById(nsClientId);
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return 0;
}
@@ -560,7 +578,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
delete(r);
}
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
}
@@ -568,7 +586,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
try {
TableUtils.clearTable(connectionSource, DbRequest.class);
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
}
@@ -576,7 +594,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
try {
return getDaoDbRequest().closeableIterator();
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
return null;
}
}
@@ -607,7 +625,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
tempTargets = daoTempTargets.query(preparedQuery);
return tempTargets;
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return new ArrayList();
}
@@ -624,7 +642,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
tempTargets = daoTempTargets.query(preparedQuery);
return tempTargets;
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return new ArrayList();
}
@@ -641,8 +659,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
getDaoTempTargets().delete(old); // need to delete/create because date may change too
old.copyFrom(tempTarget);
getDaoTempTargets().create(old);
- if (L.isEnabled(LTag.DATABASE))
- log.debug("TEMPTARGET: Updating record by date from: " + Source.getString(tempTarget.source) + " " + old.toString());
+ aapsLogger.debug(LTag.DATABASE, "TEMPTARGET: Updating record by date from: " + Source.getString(tempTarget.source) + " " + old.toString());
scheduleTemporaryTargetChange();
return true;
}
@@ -661,28 +678,25 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
getDaoTempTargets().delete(old); // need to delete/create because date may change too
old.copyFrom(tempTarget);
getDaoTempTargets().create(old);
- if (L.isEnabled(LTag.DATABASE))
- log.debug("TEMPTARGET: Updating record by _id from: " + Source.getString(tempTarget.source) + " " + old.toString());
+ aapsLogger.debug(LTag.DATABASE, "TEMPTARGET: Updating record by _id from: " + Source.getString(tempTarget.source) + " " + old.toString());
scheduleTemporaryTargetChange();
return true;
}
}
}
getDaoTempTargets().create(tempTarget);
- if (L.isEnabled(LTag.DATABASE))
- log.debug("TEMPTARGET: New record from: " + Source.getString(tempTarget.source) + " " + tempTarget.toString());
+ aapsLogger.debug(LTag.DATABASE, "TEMPTARGET: New record from: " + Source.getString(tempTarget.source) + " " + tempTarget.toString());
scheduleTemporaryTargetChange();
return true;
}
if (tempTarget.source == Source.USER) {
getDaoTempTargets().create(tempTarget);
- if (L.isEnabled(LTag.DATABASE))
- log.debug("TEMPTARGET: New record from: " + Source.getString(tempTarget.source) + " " + tempTarget.toString());
+ aapsLogger.debug(LTag.DATABASE, "TEMPTARGET: New record from: " + Source.getString(tempTarget.source) + " " + tempTarget.toString());
scheduleTemporaryTargetChange();
return true;
}
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return false;
}
@@ -692,16 +706,15 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
getDaoTempTargets().delete(tempTarget);
scheduleTemporaryTargetChange();
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
}
- private static void scheduleTemporaryTargetChange() {
+ private void scheduleTemporaryTargetChange() {
class PostRunnable implements Runnable {
public void run() {
- if (L.isEnabled(LTag.DATABASE))
- log.debug("Firing EventTempTargetChange");
- RxBus.Companion.getINSTANCE().send(new EventTempTargetChange());
+ aapsLogger.debug(LTag.DATABASE, "Firing EventTempTargetChange");
+ rxBus.send(new EventTempTargetChange());
scheduledTemTargetPost = null;
}
}
@@ -743,14 +756,14 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
.source(Source.NIGHTSCOUT);
createOrUpdate(tempTarget);
} catch (JSONException e) {
- log.error("Unhandled exception: " + trJson.toString(), e);
+ aapsLogger.error("Unhandled exception: " + trJson.toString(), e);
}
}
public void deleteTempTargetById(String _id) {
TempTarget stored = findTempTargetById(_id);
if (stored != null) {
- log.debug("TEMPTARGET: Removing TempTarget record from database: " + stored.toString());
+ aapsLogger.debug(LTag.DATABASE, "TEMPTARGET: Removing TempTarget record from database: " + stored.toString());
delete(stored);
scheduleTemporaryTargetChange();
}
@@ -770,7 +783,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
return null;
}
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return null;
}
@@ -787,7 +800,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
}
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
}
@@ -802,7 +815,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
PreparedQuery preparedQuery = queryBuilder.prepare();
historyList = getDaoDanaRHistory().query(preparedQuery);
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
historyList = new ArrayList<>();
}
return historyList;
@@ -825,8 +838,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
List trList = getDaoTemporaryBasal().query(preparedQuery);
if (trList.size() > 0) {
// do nothing, pump history record cannot be changed
- if (L.isEnabled(LTag.DATABASE))
- log.debug("TEMPBASAL: Already exists from: " + Source.getString(tempBasal.source) + " " + tempBasal.toString());
+ aapsLogger.debug(LTag.DATABASE, "TEMPBASAL: Already exists from: " + Source.getString(tempBasal.source) + " " + tempBasal.toString());
return false;
}
@@ -843,8 +855,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
old.copyFromPump(tempBasal);
old.source = Source.PUMP;
- if (L.isEnabled(LTag.DATABASE))
- log.debug("TEMPBASAL: Updated record with Pump Data : " + Source.getString(tempBasal.source) + " " + tempBasal.toString());
+ aapsLogger.debug(LTag.DATABASE, "TEMPBASAL: Updated record with Pump Data : " + Source.getString(tempBasal.source) + " " + tempBasal.toString());
getDaoTemporaryBasal().update(old);
@@ -855,8 +866,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
}
getDaoTemporaryBasal().create(tempBasal);
- if (L.isEnabled(LTag.DATABASE))
- log.debug("TEMPBASAL: New record from: " + Source.getString(tempBasal.source) + " " + tempBasal.toString());
+ aapsLogger.debug(LTag.DATABASE, "TEMPBASAL: New record from: " + Source.getString(tempBasal.source) + " " + tempBasal.toString());
updateEarliestDataChange(tempBasal.date);
scheduleTemporaryBasalChange();
return true;
@@ -873,8 +883,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
getDaoTemporaryBasal().delete(old); // need to delete/create because date may change too
old.copyFrom(tempBasal);
getDaoTemporaryBasal().create(old);
- if (L.isEnabled(LTag.DATABASE))
- log.debug("TEMPBASAL: Updating record by date from: " + Source.getString(tempBasal.source) + " " + old.toString());
+ aapsLogger.debug(LTag.DATABASE, "TEMPBASAL: Updating record by date from: " + Source.getString(tempBasal.source) + " " + old.toString());
updateEarliestDataChange(oldDate);
updateEarliestDataChange(old.date);
scheduleTemporaryBasalChange();
@@ -896,8 +905,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
getDaoTemporaryBasal().delete(old); // need to delete/create because date may change too
old.copyFrom(tempBasal);
getDaoTemporaryBasal().create(old);
- if (L.isEnabled(LTag.DATABASE))
- log.debug("TEMPBASAL: Updating record by _id from: " + Source.getString(tempBasal.source) + " " + old.toString());
+ aapsLogger.debug(LTag.DATABASE, "TEMPBASAL: Updating record by _id from: " + Source.getString(tempBasal.source) + " " + old.toString());
updateEarliestDataChange(oldDate);
updateEarliestDataChange(old.date);
scheduleTemporaryBasalChange();
@@ -906,22 +914,20 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
}
}
getDaoTemporaryBasal().create(tempBasal);
- if (L.isEnabled(LTag.DATABASE))
- log.debug("TEMPBASAL: New record from: " + Source.getString(tempBasal.source) + " " + tempBasal.toString());
+ aapsLogger.debug(LTag.DATABASE, "TEMPBASAL: New record from: " + Source.getString(tempBasal.source) + " " + tempBasal.toString());
updateEarliestDataChange(tempBasal.date);
scheduleTemporaryBasalChange();
return true;
}
if (tempBasal.source == Source.USER) {
getDaoTemporaryBasal().create(tempBasal);
- if (L.isEnabled(LTag.DATABASE))
- log.debug("TEMPBASAL: New record from: " + Source.getString(tempBasal.source) + " " + tempBasal.toString());
+ aapsLogger.debug(LTag.DATABASE, "TEMPBASAL: New record from: " + Source.getString(tempBasal.source) + " " + tempBasal.toString());
updateEarliestDataChange(tempBasal.date);
scheduleTemporaryBasalChange();
return true;
}
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return false;
}
@@ -931,7 +937,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
getDaoTemporaryBasal().delete(tempBasal);
updateEarliestDataChange(tempBasal.date);
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
scheduleTemporaryBasalChange();
}
@@ -947,7 +953,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
tempbasals = getDaoTemporaryBasal().query(preparedQuery);
return tempbasals;
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return new ArrayList();
}
@@ -963,20 +969,19 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
tempbasals = getDaoTemporaryBasal().query(preparedQuery);
return tempbasals;
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return new ArrayList();
}
- private static void scheduleTemporaryBasalChange() {
+ private void scheduleTemporaryBasalChange() {
class PostRunnable implements Runnable {
public void run() {
- if (L.isEnabled(LTag.DATABASE))
- log.debug("Firing EventTempBasalChange");
- RxBus.Companion.getINSTANCE().send(new EventReloadTempBasalData());
- RxBus.Companion.getINSTANCE().send(new EventTempBasalChange());
+ aapsLogger.debug(LTag.DATABASE, "Firing EventTempBasalChange");
+ rxBus.send(new EventReloadTempBasalData());
+ rxBus.send(new EventTempBasalChange());
if (earliestDataChange != null)
- RxBus.Companion.getINSTANCE().send(new EventNewHistoryData(earliestDataChange));
+ rxBus.send(new EventNewHistoryData(earliestDataChange));
earliestDataChange = null;
scheduledTemBasalsPost = null;
}
@@ -1010,7 +1015,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
public void createTempBasalFromJsonIfNotExists(JSONObject trJson) {
try {
if (trJson.has("originalExtendedAmount")) { // extended bolus uploaded as temp basal
- ExtendedBolus extendedBolus = new ExtendedBolus(MainApp.instance())
+ ExtendedBolus extendedBolus = new ExtendedBolus(StaticInjector.Companion.getInstance())
.source(Source.NIGHTSCOUT)
.date(trJson.getLong("mills"))
.pumpId(trJson.has("pumpId") ? trJson.getLong("pumpId") : 0)
@@ -1018,14 +1023,14 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
.insulin(trJson.getDouble("originalExtendedAmount"))
._id(trJson.getString("_id"));
// if faking found in NS, adapt AAPS to use it too
- if (!VirtualPumpPlugin.Companion.getPlugin().getFakingStatus()) {
- VirtualPumpPlugin.Companion.getPlugin().setFakingStatus(true);
+ if (!virtualPumpPlugin.getFakingStatus()) {
+ virtualPumpPlugin.setFakingStatus(true);
updateEarliestDataChange(0);
scheduleTemporaryBasalChange();
}
createOrUpdate(extendedBolus);
} else if (trJson.has("isFakedTempBasal")) { // extended bolus end uploaded as temp basal end
- ExtendedBolus extendedBolus = new ExtendedBolus(MainApp.instance());
+ ExtendedBolus extendedBolus = new ExtendedBolus(StaticInjector.Companion.getInstance());
extendedBolus.source = Source.NIGHTSCOUT;
extendedBolus.date = trJson.getLong("mills");
extendedBolus.pumpId = trJson.has("pumpId") ? trJson.getLong("pumpId") : 0;
@@ -1033,14 +1038,14 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
extendedBolus.insulin = 0;
extendedBolus._id = trJson.getString("_id");
// if faking found in NS, adapt AAPS to use it too
- if (!VirtualPumpPlugin.Companion.getPlugin().getFakingStatus()) {
- VirtualPumpPlugin.Companion.getPlugin().setFakingStatus(true);
+ if (!virtualPumpPlugin.getFakingStatus()) {
+ virtualPumpPlugin.setFakingStatus(true);
updateEarliestDataChange(0);
scheduleTemporaryBasalChange();
}
createOrUpdate(extendedBolus);
} else {
- TemporaryBasal tempBasal = new TemporaryBasal( MainApp.instance())
+ TemporaryBasal tempBasal = new TemporaryBasal(StaticInjector.Companion.getInstance())
.date(trJson.getLong("mills"))
.source(Source.NIGHTSCOUT)
.pumpId(trJson.has("pumpId") ? trJson.getLong("pumpId") : 0);
@@ -1059,15 +1064,14 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
createOrUpdate(tempBasal);
}
} catch (JSONException e) {
- log.error("Unhandled exception: " + trJson.toString(), e);
+ aapsLogger.error("Unhandled exception: " + trJson.toString(), e);
}
}
public void deleteTempBasalById(String _id) {
TemporaryBasal stored = findTempBasalById(_id);
if (stored != null) {
- if (L.isEnabled(LTag.DATABASE))
- log.debug("TEMPBASAL: Removing TempBasal record from database: " + stored.toString());
+ aapsLogger.debug(LTag.DATABASE, "TEMPBASAL: Removing TempBasal record from database: " + stored.toString());
delete(stored);
updateEarliestDataChange(stored.date);
scheduleTemporaryBasalChange();
@@ -1089,7 +1093,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
return list.get(0);
}
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return null;
}
@@ -1111,7 +1115,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
return null;
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return null;
}
@@ -1121,8 +1125,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
public boolean createOrUpdate(ExtendedBolus extendedBolus) {
try {
- if (L.isEnabled(LTag.DATABASE))
- log.debug("EXTENDEDBOLUS: createOrUpdate: " + Source.getString(extendedBolus.source) + " " + extendedBolus.log());
+ aapsLogger.debug(LTag.DATABASE, "EXTENDEDBOLUS: createOrUpdate: " + Source.getString(extendedBolus.source) + " " + extendedBolus.log());
ExtendedBolus old;
extendedBolus.date = roundDateToSec(extendedBolus.date);
@@ -1141,13 +1144,12 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
PreparedQuery preparedQuery = queryBuilder.prepare();
List trList = getDaoExtendedBolus().query(preparedQuery);
if (trList.size() > 1) {
- log.error("EXTENDEDBOLUS: Multiple records found for pumpId: " + extendedBolus.pumpId);
+ aapsLogger.error("EXTENDEDBOLUS: Multiple records found for pumpId: " + extendedBolus.pumpId);
return false;
}
getDaoExtendedBolus().createOrUpdate(extendedBolus);
}
- if (L.isEnabled(LTag.DATABASE))
- log.debug("EXTENDEDBOLUS: New record from: " + Source.getString(extendedBolus.source) + " " + extendedBolus.log());
+ aapsLogger.debug(LTag.DATABASE, "EXTENDEDBOLUS: New record from: " + Source.getString(extendedBolus.source) + " " + extendedBolus.log());
updateEarliestDataChange(extendedBolus.date);
scheduleExtendedBolusChange();
return true;
@@ -1160,8 +1162,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
getDaoExtendedBolus().delete(old); // need to delete/create because date may change too
old.copyFrom(extendedBolus);
getDaoExtendedBolus().create(old);
- if (L.isEnabled(LTag.DATABASE))
- log.debug("EXTENDEDBOLUS: Updating record by date from: " + Source.getString(extendedBolus.source) + " " + old.log());
+ aapsLogger.debug(LTag.DATABASE, "EXTENDEDBOLUS: Updating record by date from: " + Source.getString(extendedBolus.source) + " " + old.log());
updateEarliestDataChange(oldDate);
updateEarliestDataChange(old.date);
scheduleExtendedBolusChange();
@@ -1183,8 +1184,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
getDaoExtendedBolus().delete(old); // need to delete/create because date may change too
old.copyFrom(extendedBolus);
getDaoExtendedBolus().create(old);
- if (L.isEnabled(LTag.DATABASE))
- log.debug("EXTENDEDBOLUS: Updating record by _id from: " + Source.getString(extendedBolus.source) + " " + old.log());
+ aapsLogger.debug(LTag.DATABASE, "EXTENDEDBOLUS: Updating record by _id from: " + Source.getString(extendedBolus.source) + " " + old.log());
updateEarliestDataChange(oldDate);
updateEarliestDataChange(old.date);
scheduleExtendedBolusChange();
@@ -1193,22 +1193,20 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
}
}
getDaoExtendedBolus().create(extendedBolus);
- if (L.isEnabled(LTag.DATABASE))
- log.debug("EXTENDEDBOLUS: New record from: " + Source.getString(extendedBolus.source) + " " + extendedBolus.log());
+ aapsLogger.debug(LTag.DATABASE, "EXTENDEDBOLUS: New record from: " + Source.getString(extendedBolus.source) + " " + extendedBolus.log());
updateEarliestDataChange(extendedBolus.date);
scheduleExtendedBolusChange();
return true;
}
if (extendedBolus.source == Source.USER) {
getDaoExtendedBolus().create(extendedBolus);
- if (L.isEnabled(LTag.DATABASE))
- log.debug("EXTENDEDBOLUS: New record from: " + Source.getString(extendedBolus.source) + " " + extendedBolus.log());
+ aapsLogger.debug(LTag.DATABASE, "EXTENDEDBOLUS: New record from: " + Source.getString(extendedBolus.source) + " " + extendedBolus.log());
updateEarliestDataChange(extendedBolus.date);
scheduleExtendedBolusChange();
return true;
}
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return false;
}
@@ -1219,7 +1217,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
.where().eq("pumpId", pumpId)
.queryForFirst();
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return null;
}
@@ -1229,7 +1227,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
getDaoExtendedBolus().delete(extendedBolus);
updateEarliestDataChange(extendedBolus.date);
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
scheduleExtendedBolusChange();
}
@@ -1245,7 +1243,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
extendedBoluses = getDaoExtendedBolus().query(preparedQuery);
return extendedBoluses;
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return new ArrayList();
}
@@ -1261,7 +1259,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
extendedBoluses = getDaoExtendedBolus().query(preparedQuery);
return extendedBoluses;
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return new ArrayList();
}
@@ -1269,8 +1267,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
public void deleteExtendedBolusById(String _id) {
ExtendedBolus stored = findExtendedBolusById(_id);
if (stored != null) {
- if (L.isEnabled(LTag.DATABASE))
- log.debug("EXTENDEDBOLUS: Removing ExtendedBolus record from database: " + stored.toString());
+ aapsLogger.debug(LTag.DATABASE, "EXTENDEDBOLUS: Removing ExtendedBolus record from database: " + stored.toString());
delete(stored);
updateEarliestDataChange(stored.date);
scheduleExtendedBolusChange();
@@ -1292,7 +1289,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
return null;
}
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return null;
}
@@ -1315,19 +1312,18 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
*/
public void createExtendedBolusFromJsonIfNotExists(JSONObject json) {
- ExtendedBolus extendedBolus = ExtendedBolus.createFromJson(MainApp.instance(), json);
+ ExtendedBolus extendedBolus = ExtendedBolus.createFromJson(StaticInjector.Companion.getInstance(), json);
if (extendedBolus != null)
createOrUpdate(extendedBolus);
}
- private static void scheduleExtendedBolusChange() {
+ private void scheduleExtendedBolusChange() {
class PostRunnable implements Runnable {
public void run() {
- if (L.isEnabled(LTag.DATABASE))
- log.debug("Firing EventExtendedBolusChange");
- RxBus.Companion.getINSTANCE().send(new EventReloadTreatmentData(new EventExtendedBolusChange()));
+ aapsLogger.debug(LTag.DATABASE, "Firing EventExtendedBolusChange");
+ rxBus.send(new EventReloadTreatmentData(new EventExtendedBolusChange()));
if (earliestDataChange != null)
- RxBus.Companion.getINSTANCE().send(new EventNewHistoryData(earliestDataChange));
+ rxBus.send(new EventNewHistoryData(earliestDataChange));
earliestDataChange = null;
scheduledExtendedBolusPost = null;
}
@@ -1350,7 +1346,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
try {
getDaoCareportalEvents().createOrUpdate(careportalEvent);
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
scheduleCareportalEventChange();
}
@@ -1359,7 +1355,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
try {
getDaoCareportalEvents().delete(careportalEvent);
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
scheduleCareportalEventChange();
}
@@ -1368,7 +1364,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
try {
return getDaoCareportalEvents().queryForId(timestamp);
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return null;
}
@@ -1389,7 +1385,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
else
return null;
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return null;
}
@@ -1406,7 +1402,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
careportalEvents = preprocessOpenAPSOfflineEvents(careportalEvents);
return careportalEvents;
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return new ArrayList<>();
}
@@ -1423,7 +1419,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
careportalEvents = preprocessOpenAPSOfflineEvents(careportalEvents);
return careportalEvents;
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return new ArrayList<>();
}
@@ -1452,7 +1448,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
careportalEvents = preprocessOpenAPSOfflineEvents(careportalEvents);
return careportalEvents;
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return new ArrayList<>();
}
@@ -1469,7 +1465,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
careportalEvents = preprocessOpenAPSOfflineEvents(careportalEvents);
return careportalEvents;
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return new ArrayList<>();
}
@@ -1485,15 +1481,13 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
if (list.size() == 1) {
CareportalEvent record = list.get(0);
- if (L.isEnabled(LTag.DATABASE))
- log.debug("Removing CareportalEvent record from database: " + record.toString());
+ aapsLogger.debug(LTag.DATABASE, "Removing CareportalEvent record from database: " + record.toString());
delete(record);
} else {
- if (L.isEnabled(LTag.DATABASE))
- log.debug("CareportalEvent not found database: " + _id);
+ aapsLogger.debug(LTag.DATABASE, "CareportalEvent not found database: " + _id);
}
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
}
@@ -1507,17 +1501,15 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
List list = getDaoCareportalEvents().query(preparedQuery);
CareportalEvent careportalEvent;
if (list.size() == 0) {
- careportalEvent = new CareportalEvent(MainApp.instance());
+ careportalEvent = new CareportalEvent(StaticInjector.Companion.getInstance());
careportalEvent.source = Source.NIGHTSCOUT;
- if (L.isEnabled(LTag.DATABASE))
- log.debug("Adding CareportalEvent record to database: " + trJson.toString());
+ aapsLogger.debug(LTag.DATABASE, "Adding CareportalEvent record to database: " + trJson.toString());
// Record does not exists. add
} else if (list.size() == 1) {
careportalEvent = list.get(0);
- if (L.isEnabled(LTag.DATABASE))
- log.debug("Updating CareportalEvent record in database: " + trJson.toString());
+ aapsLogger.debug(LTag.DATABASE, "Updating CareportalEvent record in database: " + trJson.toString());
} else {
- log.error("Something went wrong");
+ aapsLogger.error("Something went wrong");
return;
}
careportalEvent.date = trJson.getLong("mills");
@@ -1526,16 +1518,15 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
careportalEvent._id = trJson.getString("_id");
createOrUpdate(careportalEvent);
} catch (SQLException | JSONException e) {
- log.error("Unhandled exception: " + trJson.toString(), e);
+ aapsLogger.error("Unhandled exception: " + trJson.toString(), e);
}
}
- private static void scheduleCareportalEventChange() {
+ private void scheduleCareportalEventChange() {
class PostRunnable implements Runnable {
public void run() {
- if (L.isEnabled(LTag.DATABASE))
- log.debug("Firing scheduleCareportalEventChange");
- RxBus.Companion.getINSTANCE().send(new EventCareportalEventChange());
+ aapsLogger.debug(LTag.DATABASE, "Firing scheduleCareportalEventChange");
+ rxBus.send(new EventCareportalEventChange());
scheduledCareportalEventPost = null;
}
}
@@ -1565,16 +1556,23 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
//add last one without duration
ProfileSwitch last = getLastProfileSwitchWithoutDuration();
if (last != null) {
- if (!profileSwitches.contains(last))
+ if (!isInList(profileSwitches, last))
profileSwitches.add(last);
}
return profileSwitches;
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return new ArrayList<>();
}
+ boolean isInList(List profileSwitches, ProfileSwitch last) {
+ for (ProfileSwitch ps : profileSwitches) {
+ if (ps.isEqual(last)) return true;
+ }
+ return false;
+ }
+
@Nullable
private ProfileSwitch getLastProfileSwitchWithoutDuration() {
try {
@@ -1592,7 +1590,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
else
return null;
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return null;
}
@@ -1610,7 +1608,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
profileSwitches = daoProfileSwitch.query(preparedQuery);
return profileSwitches;
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return new ArrayList<>();
}
@@ -1628,7 +1626,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
profileSwitches = daoProfileSwitch.query(preparedQuery);
return profileSwitches;
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return new ArrayList<>();
}
@@ -1646,8 +1644,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
profileSwitch.profileName = old.profileName; // preserver profileName to prevent multiple CPP extension
getDaoProfileSwitch().delete(old); // need to delete/create because date may change too
getDaoProfileSwitch().create(profileSwitch);
- if (L.isEnabled(LTag.DATABASE))
- log.debug("PROFILESWITCH: Updating record by date from: " + Source.getString(profileSwitch.source) + " " + old.toString());
+ aapsLogger.debug(LTag.DATABASE, "PROFILESWITCH: Updating record by date from: " + Source.getString(profileSwitch.source) + " " + old.toString());
scheduleProfileSwitchChange();
return true;
}
@@ -1666,8 +1663,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
getDaoProfileSwitch().delete(old); // need to delete/create because date may change too
old.copyFrom(profileSwitch);
getDaoProfileSwitch().create(old);
- if (L.isEnabled(LTag.DATABASE))
- log.debug("PROFILESWITCH: Updating record by _id from: " + Source.getString(profileSwitch.source) + " " + old.toString());
+ aapsLogger.debug(LTag.DATABASE, "PROFILESWITCH: Updating record by _id from: " + Source.getString(profileSwitch.source) + " " + old.toString());
scheduleProfileSwitchChange();
return true;
}
@@ -1676,20 +1672,18 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
// look for already added percentage from NS
profileSwitch.profileName = PercentageSplitter.pureName(profileSwitch.profileName);
getDaoProfileSwitch().create(profileSwitch);
- if (L.isEnabled(LTag.DATABASE))
- log.debug("PROFILESWITCH: New record from: " + Source.getString(profileSwitch.source) + " " + profileSwitch.toString());
+ aapsLogger.debug(LTag.DATABASE, "PROFILESWITCH: New record from: " + Source.getString(profileSwitch.source) + " " + profileSwitch.toString());
scheduleProfileSwitchChange();
return true;
}
if (profileSwitch.source == Source.USER) {
getDaoProfileSwitch().create(profileSwitch);
- if (L.isEnabled(LTag.DATABASE))
- log.debug("PROFILESWITCH: New record from: " + Source.getString(profileSwitch.source) + " " + profileSwitch.toString());
+ aapsLogger.debug(LTag.DATABASE, "PROFILESWITCH: New record from: " + Source.getString(profileSwitch.source) + " " + profileSwitch.toString());
scheduleProfileSwitchChange();
return true;
}
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return false;
}
@@ -1699,17 +1693,16 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
getDaoProfileSwitch().delete(profileSwitch);
scheduleProfileSwitchChange();
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
}
- private static void scheduleProfileSwitchChange() {
+ private void scheduleProfileSwitchChange() {
class PostRunnable implements Runnable {
public void run() {
- if (L.isEnabled(LTag.DATABASE))
- log.debug("Firing EventProfileNeedsUpdate");
- RxBus.Companion.getINSTANCE().send(new EventReloadProfileSwitchData());
- RxBus.Companion.getINSTANCE().send(new EventProfileNeedsUpdate());
+ aapsLogger.debug(LTag.DATABASE, "Firing EventProfileNeedsUpdate");
+ rxBus.send(new EventReloadProfileSwitchData());
+ rxBus.send(new EventProfileNeedsUpdate());
scheduledProfileSwitchEventPost = null;
}
}
@@ -1735,9 +1728,9 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
}
*/
- public void createProfileSwitchFromJsonIfNotExists(ActivePluginProvider activePluginProvider, JSONObject trJson) {
+ public void createProfileSwitchFromJsonIfNotExists(ActivePluginProvider activePluginProvider, NSUpload nsUpload, JSONObject trJson) {
try {
- ProfileSwitch profileSwitch = new ProfileSwitch(MainApp.instance());
+ ProfileSwitch profileSwitch = new ProfileSwitch(StaticInjector.Companion.getInstance());
profileSwitch.date = trJson.getLong("mills");
if (trJson.has("duration"))
profileSwitch.durationInMinutes = trJson.getInt("duration");
@@ -1758,18 +1751,15 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
Profile profile = store.getSpecificProfile(profileSwitch.profileName);
if (profile != null) {
profileSwitch.profileJson = profile.getData().toString();
- if (L.isEnabled(LTag.DATABASE))
- log.debug("Profile switch prefilled with JSON from local store");
+ aapsLogger.debug(LTag.DATABASE, "Profile switch prefilled with JSON from local store");
// Update data in NS
- NSUpload.updateProfileSwitch(profileSwitch);
+ nsUpload.updateProfileSwitch(profileSwitch);
} else {
- if (L.isEnabled(LTag.DATABASE))
- log.debug("JSON for profile switch doesn't exist. Ignoring: " + trJson.toString());
+ aapsLogger.debug(LTag.DATABASE, "JSON for profile switch doesn't exist. Ignoring: " + trJson.toString());
return;
}
} else {
- if (L.isEnabled(LTag.DATABASE))
- log.debug("Store for profile switch doesn't exist. Ignoring: " + trJson.toString());
+ aapsLogger.debug(LTag.DATABASE, "Store for profile switch doesn't exist. Ignoring: " + trJson.toString());
return;
}
}
@@ -1777,15 +1767,14 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
profileSwitch.profilePlugin = trJson.getString("profilePlugin");
createOrUpdate(profileSwitch);
} catch (JSONException e) {
- log.error("Unhandled exception: " + trJson.toString(), e);
+ aapsLogger.error("Unhandled exception: " + trJson.toString(), e);
}
}
public void deleteProfileSwitchById(String _id) {
ProfileSwitch stored = findProfileSwitchById(_id);
if (stored != null) {
- if (L.isEnabled(LTag.DATABASE))
- log.debug("PROFILESWITCH: Removing ProfileSwitch record from database: " + stored.toString());
+ aapsLogger.debug(LTag.DATABASE, "PROFILESWITCH: Removing ProfileSwitch record from database: " + stored.toString());
delete(stored);
scheduleTemporaryTargetChange();
}
@@ -1805,7 +1794,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
return null;
}
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return null;
}
@@ -1816,7 +1805,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
try {
getDaoInsightHistoryOffset().createOrUpdate(offset);
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
}
@@ -1824,7 +1813,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
try {
return getDaoInsightHistoryOffset().queryForId(pumpSerial);
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return null;
}
@@ -1833,7 +1822,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
try {
getDaoInsightBolusID().createOrUpdate(bolusID);
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
}
@@ -1845,7 +1834,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
.and().between("timestamp", timestamp - 259200000, timestamp + 259200000)
.queryForFirst();
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return null;
}
@@ -1854,7 +1843,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
try {
getDaoInsightPumpID().createOrUpdate(pumpID);
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
}
@@ -1867,7 +1856,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
.and().lt("timestamp", before)
.queryForFirst();
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return null;
}
@@ -1880,7 +1869,7 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
try {
getDaoPodHistory().createOrUpdate(podHistory);
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
}
@@ -1898,9 +1887,57 @@ public class DatabaseHelper extends OrmLiteSqliteOpenHelper {
podHistories = daoPodHistory.query(preparedQuery);
return podHistories;
} catch (SQLException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return new ArrayList<>();
}
+
+ // Copied from xDrip+
+ String calculateDirection(BgReading bgReading) {
+ // Rework to get bgreaings from internal DB and calculate on that base
+
+ List bgReadingsList = MainApp.getDbHelper().getAllBgreadingsDataFromTime(bgReading.date - T.mins(10).msecs(), false);
+ if (bgReadingsList == null || bgReadingsList.size() < 2)
+ return "NONE";
+ BgReading current = bgReadingsList.get(1);
+ BgReading previous = bgReadingsList.get(0);
+
+ if (bgReadingsList.get(1).date < bgReadingsList.get(0).date) {
+ current = bgReadingsList.get(0);
+ previous = bgReadingsList.get(1);
+ }
+
+ double slope;
+
+ // Avoid division by 0
+ if (current.date == previous.date)
+ slope = 0;
+ else
+ slope = (previous.value - current.value) / (previous.date - current.date);
+
+// aapsLogger.error(LTag.GLUCOSE, "Slope is :" + slope + " delta " + (previous.value - current.value) + " date difference " + (current.date - previous.date));
+
+ double slope_by_minute = slope * 60000;
+ String arrow = "NONE";
+
+ if (slope_by_minute <= (-3.5)) {
+ arrow = "DoubleDown";
+ } else if (slope_by_minute <= (-2)) {
+ arrow = "SingleDown";
+ } else if (slope_by_minute <= (-1)) {
+ arrow = "FortyFiveDown";
+ } else if (slope_by_minute <= (1)) {
+ arrow = "Flat";
+ } else if (slope_by_minute <= (2)) {
+ arrow = "FortyFiveUp";
+ } else if (slope_by_minute <= (3.5)) {
+ arrow = "SingleUp";
+ } else if (slope_by_minute <= (40)) {
+ arrow = "DoubleUp";
+ }
+// aapsLogger.error(LTag.GLUCOSE, "Direction set to: " + arrow);
+ return arrow;
+ }
+
}
diff --git a/app/src/main/java/info/nightscout/androidaps/db/DatabaseHelperProvider.java b/app/src/main/java/info/nightscout/androidaps/db/DatabaseHelperProvider.java
new file mode 100644
index 0000000000..0e9f9d82b2
--- /dev/null
+++ b/app/src/main/java/info/nightscout/androidaps/db/DatabaseHelperProvider.java
@@ -0,0 +1,101 @@
+package info.nightscout.androidaps.db;
+
+import com.j256.ormlite.dao.CloseableIterator;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.sql.SQLException;
+import java.util.List;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import info.nightscout.androidaps.MainApp;
+import info.nightscout.androidaps.interfaces.DatabaseHelperInterface;
+
+@Singleton
+public class DatabaseHelperProvider implements DatabaseHelperInterface {
+
+ @Inject DatabaseHelperProvider() {}
+
+ @NotNull @Override public List getAllBgreadingsDataFromTime(long mills, boolean ascending) {
+ return MainApp.getDbHelper().getAllBgreadingsDataFromTime(mills, ascending);
+ }
+
+ @Override public void createOrUpdate(@NotNull CareportalEvent careportalEvent) {
+ MainApp.getDbHelper().createOrUpdate(careportalEvent);
+ }
+
+ @Override public void createOrUpdate(@NotNull DanaRHistoryRecord record) {
+ MainApp.getDbHelper().createOrUpdate(record);
+ }
+
+ @NotNull @Override public List getDanaRHistoryRecordsByType(byte type) {
+ return MainApp.getDbHelper().getDanaRHistoryRecordsByType(type);
+ }
+
+ @NotNull @Override public List getTDDs() {
+ return MainApp.getDbHelper().getTDDs();
+ }
+
+ @Override public long size(@NotNull String table) {
+ return MainApp.getDbHelper().size(table);
+ }
+
+ @Override public void create(@NotNull DbRequest record) {
+ try {
+ MainApp.getDbHelper().create(record);
+ } catch (SQLException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override public void deleteAllDbRequests() {
+ MainApp.getDbHelper().deleteAllDbRequests();
+ }
+
+ @Override public int deleteDbRequest(@NotNull String id) {
+ return MainApp.getDbHelper().deleteDbRequest(id);
+ }
+
+ @Override public void deleteDbRequestbyMongoId(@NotNull String action, @NotNull String _id) {
+ MainApp.getDbHelper().deleteDbRequestbyMongoId(action, _id);
+ }
+
+ @NotNull @Override public CloseableIterator getDbRequestInterator() {
+ return MainApp.getDbHelper().getDbRequestInterator();
+ }
+
+ @Override public long roundDateToSec(long date) {
+ return MainApp.getDbHelper().roundDateToSec(date);
+ }
+
+ @Override public void createOrUpdateTDD(@NotNull TDD record) {
+ MainApp.getDbHelper().createOrUpdateTDD(record);
+ }
+
+ @Override public void createOrUpdate(@NotNull TemporaryBasal tempBasal) {
+ MainApp.getDbHelper().createOrUpdate(tempBasal);
+ }
+
+ @NotNull @Override public TemporaryBasal findTempBasalByPumpId(long id) {
+ return MainApp.getDbHelper().findTempBasalByPumpId(id);
+ }
+
+ @NotNull @Override public List getTemporaryBasalsDataFromTime(long mills, boolean ascending) {
+ return MainApp.getDbHelper().getTemporaryBasalsDataFromTime(mills, ascending);
+ }
+
+ @NotNull @Override public CareportalEvent getCareportalEventFromTimestamp(long timestamp) {
+ return MainApp.getDbHelper().getCareportalEventFromTimestamp(timestamp);
+ }
+
+ @NotNull @Override public List getTDDsForLastXDays(int days) {
+ return MainApp.getDbHelper().getTDDsForLastXDays(days);
+ }
+
+ @NotNull @Override public List getProfileSwitchData(long from, boolean ascending) {
+ return MainApp.getDbHelper().getProfileSwitchData(from, ascending);
+ }
+
+}
diff --git a/app/src/main/java/info/nightscout/androidaps/dependencyInjection/APSModule.kt b/app/src/main/java/info/nightscout/androidaps/dependencyInjection/APSModule.kt
index d3fef14166..0e55e30b85 100644
--- a/app/src/main/java/info/nightscout/androidaps/dependencyInjection/APSModule.kt
+++ b/app/src/main/java/info/nightscout/androidaps/dependencyInjection/APSModule.kt
@@ -8,7 +8,7 @@ import info.nightscout.androidaps.plugins.aps.openAPSAMA.DetermineBasalAdapterAM
import info.nightscout.androidaps.plugins.aps.openAPSAMA.DetermineBasalResultAMA
import info.nightscout.androidaps.plugins.aps.openAPSSMB.DetermineBasalAdapterSMBJS
import info.nightscout.androidaps.plugins.aps.openAPSSMB.DetermineBasalResultSMB
-import info.nightscout.androidaps.plugins.iob.iobCobCalculator.AutosensData
+import info.nightscout.androidaps.plugins.iob.iobCobCalculator.data.AutosensData
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobOref1Thread
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobThread
@@ -17,12 +17,10 @@ import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobThread
abstract class APSModule {
@ContributesAndroidInjector abstract fun loggerCallbackInjector(): LoggerCallback
- @ContributesAndroidInjector abstract fun apsResultInjector(): APSResult
@ContributesAndroidInjector abstract fun determineBasalResultSMBInjector(): DetermineBasalResultSMB
@ContributesAndroidInjector abstract fun determineBasalResultAMAInjector(): DetermineBasalResultAMA
@ContributesAndroidInjector abstract fun determineBasalAdapterAMAJSInjector(): DetermineBasalAdapterAMAJS
@ContributesAndroidInjector abstract fun determineBasalAdapterSMBJSInjector(): DetermineBasalAdapterSMBJS
- @ContributesAndroidInjector abstract fun autosensDataInjector(): AutosensData
@ContributesAndroidInjector abstract fun iobCobThreadInjector(): IobCobThread
@ContributesAndroidInjector abstract fun iobCobOref1ThreadInjector(): IobCobOref1Thread
}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/dependencyInjection/ActivitiesModule.kt b/app/src/main/java/info/nightscout/androidaps/dependencyInjection/ActivitiesModule.kt
index 134be115db..3c2e89b348 100644
--- a/app/src/main/java/info/nightscout/androidaps/dependencyInjection/ActivitiesModule.kt
+++ b/app/src/main/java/info/nightscout/androidaps/dependencyInjection/ActivitiesModule.kt
@@ -11,10 +11,6 @@ import info.nightscout.androidaps.plugins.general.overview.activities.QuickWizar
import info.nightscout.androidaps.plugins.general.smsCommunicator.activities.SmsCommunicatorOtpActivity
import info.nightscout.androidaps.plugins.pump.common.dialog.RileyLinkBLEScanActivity
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.dialog.RileyLinkStatusActivity
-import info.nightscout.androidaps.plugins.pump.danaR.activities.DanaRHistoryActivity
-import info.nightscout.androidaps.plugins.pump.danaR.activities.DanaRUserOptionsActivity
-import info.nightscout.androidaps.plugins.pump.danaRS.activities.BLEScanActivity
-import info.nightscout.androidaps.plugins.pump.danaRS.activities.PairingHelperActivity
import info.nightscout.androidaps.plugins.pump.insight.activities.InsightAlertActivity
import info.nightscout.androidaps.plugins.pump.insight.activities.InsightPairingActivity
import info.nightscout.androidaps.plugins.pump.insight.activities.InsightPairingInformationActivity
@@ -25,11 +21,6 @@ import info.nightscout.androidaps.setupwizard.SetupWizardActivity
@Suppress("unused")
abstract class ActivitiesModule {
- @ContributesAndroidInjector abstract fun contributesBLEScanActivity(): BLEScanActivity
- @ContributesAndroidInjector abstract fun contributeBolusProgressHelperActivity(): BolusProgressHelperActivity
- @ContributesAndroidInjector abstract fun contributeDanaRHistoryActivity(): DanaRHistoryActivity
- @ContributesAndroidInjector abstract fun contributeDanaRUserOptionsActivity(): DanaRUserOptionsActivity
- @ContributesAndroidInjector abstract fun contributeErrorHelperActivity(): ErrorHelperActivity
@ContributesAndroidInjector abstract fun contributesHistoryBrowseActivity(): HistoryBrowseActivity
@ContributesAndroidInjector abstract fun contributesInsightAlertActivity(): InsightAlertActivity
@ContributesAndroidInjector abstract fun contributesInsightPairingActivity(): InsightPairingActivity
@@ -37,7 +28,6 @@ abstract class ActivitiesModule {
@ContributesAndroidInjector abstract fun contributesLogSettingActivity(): LogSettingActivity
@ContributesAndroidInjector abstract fun contributeMainActivity(): MainActivity
@ContributesAndroidInjector abstract fun contributesMedtronicHistoryActivity(): MedtronicHistoryActivity
- @ContributesAndroidInjector abstract fun contributesPairingHelperActivity(): PairingHelperActivity
@ContributesAndroidInjector abstract fun contributesPreferencesActivity(): PreferencesActivity
@ContributesAndroidInjector abstract fun contributesQuickWizardListActivity(): QuickWizardListActivity
@ContributesAndroidInjector abstract fun contributesRequestDexcomPermissionActivity(): RequestDexcomPermissionActivity
@@ -48,5 +38,6 @@ abstract class ActivitiesModule {
@ContributesAndroidInjector abstract fun contributesSmsCommunicatorOtpActivity(): SmsCommunicatorOtpActivity
@ContributesAndroidInjector abstract fun contributesStatsActivity(): StatsActivity
@ContributesAndroidInjector abstract fun contributesSurveyActivity(): SurveyActivity
+ @ContributesAndroidInjector abstract fun contributesDefaultProfileActivity(): ProfileHelperActivity
@ContributesAndroidInjector abstract fun contributesPrefImportListActivity(): PrefImportListActivity
}
\ No newline at end of file
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 387de6419c..e45db6c006 100644
--- a/app/src/main/java/info/nightscout/androidaps/dependencyInjection/AppComponent.kt
+++ b/app/src/main/java/info/nightscout/androidaps/dependencyInjection/AppComponent.kt
@@ -5,56 +5,18 @@ import dagger.Component
import dagger.android.AndroidInjectionModule
import dagger.android.AndroidInjector
import info.nightscout.androidaps.MainApp
-import info.nightscout.androidaps.core.dependencyInjection.CoreModule
-import info.nightscout.androidaps.data.Profile
-import info.nightscout.androidaps.data.ProfileStore
-import info.nightscout.androidaps.data.PumpEnactResult
-import info.nightscout.androidaps.db.BgReading
-import info.nightscout.androidaps.db.CareportalEvent
-import info.nightscout.androidaps.db.ProfileSwitch
-import info.nightscout.androidaps.db.TemporaryBasal
-import info.nightscout.androidaps.plugins.aps.logger.LoggerCallback
-import info.nightscout.androidaps.plugins.aps.loop.APSResult
-import info.nightscout.androidaps.plugins.aps.openAPSAMA.DetermineBasalResultAMA
-import info.nightscout.androidaps.plugins.aps.openAPSSMB.DetermineBasalAdapterSMBJS
-import info.nightscout.androidaps.plugins.aps.openAPSSMB.DetermineBasalResultSMB
-import info.nightscout.androidaps.plugins.constraints.objectives.objectives.*
-import info.nightscout.androidaps.plugins.general.automation.AutomationEvent
-import info.nightscout.androidaps.plugins.general.automation.actions.*
-import info.nightscout.androidaps.plugins.general.automation.elements.*
-import info.nightscout.androidaps.plugins.general.automation.triggers.*
-import info.nightscout.androidaps.plugins.general.overview.graphData.GraphData
-import info.nightscout.androidaps.plugins.general.overview.notifications.NotificationWithAction
-import info.nightscout.androidaps.plugins.general.smsCommunicator.AuthRequest
-import info.nightscout.androidaps.plugins.iob.iobCobCalculator.AutosensData
-import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus
-import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobOref1Thread
-import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobThread
-import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkCommunicationManager
-import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.RFSpy
-import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.RileyLinkBLE
-import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.command.SendAndListen
-import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.command.SetPreamble
-import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.data.RadioPacket
-import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.data.RadioResponse
-import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks.*
-import info.nightscout.androidaps.plugins.pump.medtronic.comm.MedtronicCommunicationManager
-import info.nightscout.androidaps.plugins.pump.medtronic.comm.ui.MedtronicUITask
-import info.nightscout.androidaps.plugins.treatments.Treatment
-import info.nightscout.androidaps.queue.CommandQueue
-import info.nightscout.androidaps.queue.commands.*
-import info.nightscout.androidaps.setupwizard.SWEventListener
-import info.nightscout.androidaps.setupwizard.SWScreen
-import info.nightscout.androidaps.setupwizard.elements.*
-import info.nightscout.androidaps.utils.wizard.BolusWizard
-import info.nightscout.androidaps.utils.wizard.QuickWizardEntry
+import info.nightscout.androidaps.core.di.CoreModule
+import info.nightscout.androidaps.dana.di.DanaModule
+import info.nightscout.androidaps.danar.di.DanaRModule
+import info.nightscout.androidaps.danars.di.DanaRSModule
import javax.inject.Singleton
@Singleton
@Component(
modules = [
AndroidInjectionModule::class,
- CoreModule::class,
+ PluginsModule::class,
+ SkinsModule::class,
ActivitiesModule::class,
FragmentsModule::class,
AppModule::class,
@@ -65,13 +27,17 @@ import javax.inject.Singleton
ObjectivesModule::class,
WizardModule::class,
MedtronicModule::class,
+ OmnipodModule::class,
APSModule::class,
PreferencesModule::class,
OverviewModule::class,
DataClassesModule::class,
SMSModule::class,
UIModule::class,
- OmnipodModule::class
+ CoreModule::class,
+ DanaModule::class,
+ DanaRModule::class,
+ DanaRSModule::class
]
)
interface AppComponent : AndroidInjector {
diff --git a/app/src/main/java/info/nightscout/androidaps/dependencyInjection/AppModule.kt b/app/src/main/java/info/nightscout/androidaps/dependencyInjection/AppModule.kt
index 944fe3615f..4fb00e9bb5 100644
--- a/app/src/main/java/info/nightscout/androidaps/dependencyInjection/AppModule.kt
+++ b/app/src/main/java/info/nightscout/androidaps/dependencyInjection/AppModule.kt
@@ -8,46 +8,34 @@ import dagger.Provides
import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.Config
import info.nightscout.androidaps.MainApp
-import info.nightscout.androidaps.interfaces.ActivePluginProvider
-import info.nightscout.androidaps.interfaces.CommandQueueProvider
-import info.nightscout.androidaps.interfaces.PluginBase
-import info.nightscout.androidaps.logging.AAPSLogger
+import info.nightscout.androidaps.db.DatabaseHelperProvider
+import info.nightscout.androidaps.interfaces.*
+import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
import info.nightscout.androidaps.plugins.configBuilder.PluginStore
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctionImplementation
+import info.nightscout.androidaps.plugins.general.nsclient.UploadQueue
+import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
import info.nightscout.androidaps.queue.CommandQueue
-import info.nightscout.androidaps.utils.FabricPrivacy
-import info.nightscout.androidaps.utils.resources.ResourceHelper
-import info.nightscout.androidaps.utils.sharedPreferences.SP
+import info.nightscout.androidaps.utils.androidNotification.NotificationHolder
import info.nightscout.androidaps.utils.storage.FileStorage
import info.nightscout.androidaps.utils.storage.Storage
import javax.inject.Singleton
@Module(includes = [
- AppModule.AppBindings::class,
- PluginsModule::class,
- SkinsModule::class
+ AppModule.AppBindings::class
])
open class AppModule {
@Provides
- @Singleton
- fun provideProfileFunction(injector: HasAndroidInjector, aapsLogger: AAPSLogger, sp: SP, resourceHelper: ResourceHelper, activePlugin: ActivePluginProvider, fabricPrivacy: FabricPrivacy): ProfileFunction {
- return ProfileFunctionImplementation(injector, aapsLogger, sp, resourceHelper, activePlugin, fabricPrivacy)
- }
-
- @Provides
- fun providesPlugins(@PluginsModule.AllConfigs allConfigs: Map<@JvmSuppressWildcards Int, @JvmSuppressWildcards PluginBase>,
+ fun providesPlugins(configInterface: ConfigInterface,
+ @PluginsModule.AllConfigs allConfigs: Map<@JvmSuppressWildcards Int, @JvmSuppressWildcards PluginBase>,
@PluginsModule.PumpDriver pumpDrivers: LazyAutoAutomatisierung== ∑ %1$s IE
- IE/h
- g/IE
- /IESpeichere Sensor Wechsel in NightscoutEreignis \"Sensorwechsel\" bei Sensorstart automatisch in NS erstellenTomato (MiaoMiao)Tomato
- Sekunde
- Minute
- Stunde
- Tag
- Woche
- Sekunden
- Minuten
- Stunden
- Tage
- WochenDein Tidepool-Login-Benutzername, normalerweise deine E-Mail-AdresseLogin-BenutzernameDein Tidepool Anmeldekennwort
@@ -1215,7 +989,6 @@ Unerwartetes Verhalten.
WiederholungszeitJeder/jede/jedesNie
- %1$d MinutenBedingung:Aktion:IOB [IE]:
@@ -1229,9 +1002,8 @@ Unerwartetes Verhalten.
Wir haben festgestellt, dass Du eine ungültige Version verwendest. Loop deaktiviert!Vorherige Versionsehr alte Version
- Neue Version für mindestens %1$d Tage verfügbar! Rückfall zur sensorunterstützten Pumpentherapie nach %2$d Tagen, Loop wird nach %3$d Tagen deaktiviert.
+ Neue Version seit mindestens %1$d Tagen verfügbar! Rückfall zur sensorunterstützten Pumpentherapie nach %2$d Tagen, Loop wird nach %3$d Tagen deaktiviert.2h
- %1$.2f IEgepatchte Dexcom AppDXCMEmpfange Blutzucker-Werte von der gepatchten Dexcom App.
@@ -1276,142 +1048,6 @@ Unerwartetes Verhalten.
Auslöser:ENTFERNENVoraussetzung:
-
- Operation nicht durch Pumpe und/oder Treiber unterstützt.
- Operation NOCH NICHT von Pumpe unterstützt.
-
- Pumpenintegration für Medtronic, benötigt RileyLink und ein spezielles Pumpenmodell
-
- Seriennummer der Pumpe
- Pumpentyp
- Pumpenfrequenz
- Verzögerung vor dem Start des Bolus (sek.)
- Max Bolus in der Pumpe (IE)
- Max Basal in der Pumpe (IE/h)
- Medtronic Enkodierung
- US & Kanada (916 MHz)
- Weltweit (868 Mhz)
- Software 4b6b Codierung
- Hardware 4b6b Codierung
- Aufwachen und anpassen
- Bolus Block löschen
- RileyLink-Konfiguration zurücksetzen
- Akkutyp (Power View)
- Nicht ausgewählt (Einfache Ansicht)
- Alkaline Batterie (erweiterte Ansicht)
- Lithium Batterie (erweiterte Ansicht)
- Nickel-Zink-Akku (erweiterte Ansicht)
- Nickel-Zink-Akku (erweiterte Ansicht)
- Fehlersuche Bolus/Behandlungen
-
- SCANNEN
- STOP
- Ausgewählt
- RileyLink Scan
- Bluetooth-Low-Energy nicht unterstützt.
- Bluetooth nicht aktiviert.
- Standortdienst ist nicht aktiviert
- Auf neueren Geräten muss für die Bluetooth-Erkennung der Standortdienst aktiviert sein. AAPS speichert keine Standortdaten und der Dienst kann nach erfolgreichem Pairing wieder deaktiviert werden.
- Aktivieren
- Nein
- Scannt
- Scannen abgeschlossen
- Scanfehler: %1$d
- Nie
-
- Einstellungen
- Verlauf
- RileyLink Status
- Pumpen-Status
- RileyLink Einstellungen
- RileyLink
- Konfigurierte Adresse
- Verbundenes Gerät
- Verbindungsstatus
- Verbindungsfehler
- Gerät
- Geräte-Typ
- Gerätemodell
- Zuletzt verwendete Frequenz
- Letzter Gerätekontakt
- RL Firmware
-
- Initialisiere Bluetooth…
- Bluetooth-Fehler
- Bluetooth bereit
- Nicht gestartet
- RileyLink Initialisierung…
- RileyLink Fehler
- RileyLink und Pumpe einstellen
- Problem beim Verbinden mit Pumpe
- Verbunden
-
- Gerät ist kein RileyLink
- RileyLink nicht erreichbar
- Bluetooth ist deaktiviert
- Kein Bluetooth-Adapter
- TuneUp fehlgeschlagen
- Pumpe ist nicht erreichbar
- Pod nicht erreichbar
- Nicht angegeben
-
- Medtronic Pumpe
- Omnipod
-
- Fehler
- Seriennummer nicht angegeben.
- Seriennummer ungültig.
- Pumpenart nicht angegeben.
- Pumptyp nicht unterstützt.
- Pumpen-Frequenz nicht angegeben.
- Pumpen-Frequenz nicht unterstützt.
- RileyLink Adresse ungültig.
- Erkannter Pumpentyp entspricht nicht dem eingestellen Pumpentyp.
- Einstellung für Basalprofile/-muster ist auf der Pumpe nicht aktiviert. Aktiviere es auf der Pumpe.
- Das eingestellte Basalprofl der Pumpe ist falsch (muss STD sein).
- Falscher TBR-Typ auf der Pumpe (muss \"Absolut\" sein).
- Falscher Max-Bolus auf Pumpe eingestellt (muss %1$.2f sein).
- Falsche Max-Basal auf Pumpe eingestellt (muss %1$.2f sein).
- Operation ist nicht möglich.\n\n Du musst zuerst die Medtronic Pumpe konfigurieren, bevor Du diese Operation verwenden kannst.
- Mehr als 24h Zeitänderung wurde eingestellt.
-
- Basal
- Einstellungen
- Benachrichtigungen
- Statistiken
- Unbekannte
- Alle
- Medtronic Pumpenverlauf
-
- Nie verbunden
- Aufwecken
- Fehler bei der Kommunikation
- Zeitüberschreitung bei Kommunikation
- Pumpe ist nicht erreichbar
- Ungültige Einstellung
- Aktiv
- Schläft
-
- Du hast den Bolus abgebrochen nachdem er bereits an die Pumpe übermittelt war. Da Medtronic-Pumpen den Abbrechen-Befehl nicht unterstützen, musst du den Bolus manuell abbrechen. Versetze die Pumpe in den Suspend-Modus und gehe dann auf Fortsetzen (wenn Du den Bolus nach wie vor abbrechen möchtest). Die App wird die Änderungen beim nächsten Update (weniger als 5 Minuten) anzeigen.
- Aktuelle TBR konnte nicht gelesen werden.
- Aktuelle TBR konnte nicht gestoppt werden. Funktion unterbrochen.
- Einstellen des Profils fehlgeschlagen weil folgende Basal-Raten zu hoch sind: %1$s
- Bolus konnte nicht abgegeben werden.
- Der Bolus konnte nicht abgegeben werden, da weniger Insulin zur Verfügung steht (%1$.2f) als für den Bolus benötigt wird (%2$.2f).
- TBR konnte nicht eingestellt werden.
- Konnte die aktuelle TBR nicht abbrechen.
- Basalprofil konnte nicht eingestellt werden.
- Basalprofil, unverändert wird nicht erneut eingestellt.
- Hole Verlauf - Seite %1$d (%2$d/16)
- Hole Verlauf - Seite %1$d
- Hole Pumpen-Zeit
- Hole Einstellungen
- Hole Pumpenmodel
- Hole Basal-Profil
- Setzte Basal-Profil
- Hole Temporäre Basalraten
- Setze Temporäre Basalrate
- Setze BolusProfil wechseln zuProfil wechseln zu %1$sLetzte Verbindung zur Pumpe
@@ -1423,7 +1059,6 @@ Unerwartetes Verhalten.
%2$+.2fU]]>Bolus-Einschränkung angewendet: %2$.2fIE zu %3$.2fIE]]>!!!!! Langsamer Kohlenhydrat-Abbau erkannt: %2$d%% der Zeit. Überprüfe Deine Berechnung. COB könnte zu hoch sein und deswegen zu viel Insulin abgegeben werden!!!!!]]>
- %1$.0f / %2$d IEAbgabe von [%] des Ergebnisses des BolusrechnersDer Bolus-Assistent führt Berechnungen durch, aber nur dieser Teil der berechneten Insulin wird abgegeben. Nützlich mit SMB-Algorithmus.Lädt ...
@@ -1431,7 +1066,6 @@ Unerwartetes Verhalten.
ZeitraumFür die Zeit zwischen %1$s und %2$sZwischen
- SchließenDer Wert max basal wird erhöht, weil Du ihn niedriger eingestellt hast als die höchste Basalrate in Deinem Profil.Ungültiger Inhalt%1$s ISF: %2$.1f
@@ -1444,12 +1078,11 @@ Unerwartetes Verhalten.
Ausgewählt:EinheitenWillst Du das Profil wechseln und die Änderungen am aktuellen Profil verwerfen?
- %1$dg
+ %1$d gEinAusZiel erneut öffnenZiel neu starten
- ZeiterkennungMöchtest Du den Start der Ziele zurücksetzen? Du verlierst Deine Fortschritte.Zeit- und/oder Zeitzonenänderung an der PumpeKeine Pumpe ausgewählt
@@ -1462,13 +1095,13 @@ Unerwartetes Verhalten.
KlonenSpeichere oder verwerfe die aktuellen Änderungen zuerstAktuelles Profil löschen?
- Neues lokales Profil auf Basis dieses Profilwechsels erstellen?
+ Neues lokales Profil auf Basis dieses Profils erstellen?Profilname enthält Punkte.\nDies wird von NS nicht unterstützt.\nProfil wird nicht zu NS hochgeladen.Unterer Wert des Zielbereichs (nur Anzeige)Oberer Wert des Zielbereichs (nur Anzeige)UmsortierenAlter:
- Gewicht:
+ Gewicht:ID:SendenMeistgenutztes Profil:
@@ -1476,10 +1109,9 @@ Unerwartetes Verhalten.
UmfrageUngültige AltersangabeUngültige Gewichtsangabe
- %1$s: ∑: %2$.2f Bol: %3$.2f Bas: %4$.2f]]>
+ Ungültige % Eingabe%1$s: Low: %2$02d%% In: %3$02d%% High: %4$02d%%]]>Durchschnitt
- TDDTIRAktivitätsmonitorWillst Du die Aktivitätsstatistik zurücksetzen?
@@ -1489,12 +1121,8 @@ Unerwartetes Verhalten.
BZToolsBerechnung anzeigen
- Fehler
- 12h
- 24hAutomatisierungs-EreignisBereits festgelegt
- NachrichtWarteschlange löschen? Alle Daten in der Warteschlange gehen verloren!Die Verwendung eines Verzögerungsbolus unterbricht dem Closed Loop Modus für die Dauer des Verzögerungsbolus. Willst Du das wirklich?Closed Loop wegen Verzögerungsbolus unterbrochen
@@ -1538,4 +1166,137 @@ Unerwartetes Verhalten.
StatusanzeigeEinstellung aus NS kopierenNS-Einstellungen kopieren (falls vorhanden)?
+ Ursprüngliches Erscheinungsbild
+ Schaltflächen werden immer am unteren Rand des Bildschirms angezeigt
+ Großer Bildschirm
+ Erscheinungsbild
+
+ Nie verbunden
+ Aufwecken
+ Fehler bei der Kommunikation
+ Zeitüberschreitung bei Kommunikation
+ Pumpe ist nicht erreichbar
+ Ungültige Einstellung
+ Aktiv
+ Schläft
+
+
+ Um den Omnipod nutzen zu können, brauchst Du einen RileyLink (mind. Firmware 2.0).
+
+ Bolus-Piep aktiviert
+ Basal-Piep aktiviert
+ SMB-Piep aktiviert
+ TBR-Piep aktiviert
+ Pod-Debugging-Optionen aktiviert
+ Sommerzeit/Zeitzonen-Erkennung aktiviert
+
+ Pod Mgmt
+ Pod Status
+ %1$.2f IE übrig
+ über 50 IE
+ Pod Adresse
+ Pod läuft ab
+ Keine Info
+ Kein Pod verbunden
+ Nicht initialisiert
+ Aktive Pod-Warnungen
+ Alarm bestätigen
+
+ Omnipod (433.91 MHz)
+
+ Aktion ist nicht möglich.\n\n Du musst zuerst den Omnipod konfigurieren, bevor Du diese Operation verwenden kannst.
+ Aktion ist nicht möglich.\n\n Du musst ein paar Minuten warten bis AAPS versucht, das Profil zum ersten Mal zu setzen.
+ Illegal PodInitActionType: %1$s
+ Kein aktiver Pod.
+ Kommandoprüfung fehlgeschlagen
+ Es ist ein unerwarteter Fehler aufgetreten. Bitte melden! (Typ: %1$s).
+ Kommunikation fehlgeschlagen: Ungültige Eingabeparameter empfangen.
+ Keine Verbindung: Zeitüberschreitung
+ Keine Verbindung: Es ist ein unerwarteter Fehler aufgetreten. Bitte melden!
+ Kommunikation fehlgeschlagen: Die Überprüfung der Nachrichtenintegrität ist fehlgeschlagen.
+ Kommunikation fehlgeschlagen: Es wurde ein ungültiges Paket vom Pod empfangen.
+ Kommunikation fehlgeschlagen: Der Pod befindet sich in einem falschen Status.
+ Kommunikation fehlgeschlagen: Es wurde eine ungültige Antwort vom Pod empfangen.
+ Kommunikation fehlgeschlagen: Ungültige Zeichenfolge vom Pod empfangen.
+ Kommunikation fehlgeschlagen: Ungültige Adresse vom Pod empfangen.
+ Kommunikation fehlgeschlagen: Nachricht vom Pod konnte nicht decodiert werden.
+ Kommunikation fehlgeschlagen: Nonce resync fehlgeschlagen.
+ Kommunikation fehlgeschlagen: Nonce nicht synchronisiert
+ Kommunikation fehlgeschlagen: Nicht genügend Daten vom Pod empfangen.
+ Ein Pod-Fehler (%1$03d %2$s) wurde festgestellt. Bitte deaktiviere den Pod und starte einen neuen.
+ Kommunikation fehlgeschlagen: Fehlerhafte Antwort vom Pod.
+
+ Pod Management
+ Init Pod
+ Pod deaktivieren
+ Pod zurücksetzen
+ Pod Historie
+ Setze Bolus
+ Bolus abbrechen
+ Setze Temporäre Basalrate
+ Temporäre Basalrate abbrechen (intern über den Treiber)
+ Temporäre Basalrate abbrechen (vom Benutzer erzwungen)
+ Basalrate festlegen
+ Pod-Status abrufen
+ Pod-Info abrufen
+ Zeit einstellen
+ Warnungen konfigurieren
+ Alarme bestätigen
+ Abgabe abbrechen
+ Abgabe wieder aufnehmen
+ Unbekannte Eingabe
+ %1$.1f IE
+ %1$.1f IE, CH=%2$.1f g
+ Rate: %1$.1f IE, Dauer: %2$d min
+ Wenn Du OK klickst, wird die Verbindung zum Pod zwangsweise getrennt und Du wirst Dich nicht mehr mit ihm verbinden können.
+Mache das nur, wenn AAPS nicht mehr mit dem Pod kommunizieren kann. Wenn dies noch geht, nutze stattdessen die Option Deaktiviere Pod.
+ Pod Historie derzeit nicht verfügbar.
+ Befülle den Pod
+ \nBefülle den neuen Pod mit ausreichend Insulin für 3 Tage.\n\nAchte auch zwei Pieptöne vom Pod während des Füllens. Diese zeigen an, dass der Pod mit der Mindestmenge von 85 IE befüllt wurde. Leere die Spritze komplett, auch wenn Du die beiden Pieptöne gehört hast.\n\nKlicke Weiter nachdem Du den Pod befüllt hast.\n\nHinweis: Entferne den Nadelschutz des Pods noch nicht.
+ Befüllen
+ Versuche Dich mit dem neuen Pod zu verbinden und befülle ihn.\n\nWenn alle Anzeigen angehakt sind, kannst Du Weiter klicken.\n\nHinweis: Pod und RileyLink müssen dabei sehr nah beieinander sein.
+ Befestige den Pod
+ \nBereite die Infusionsstelle vor. Entferne den Nadelschutz des Pods und die Schutzfolie über dem Kleber. Klebe dann den Pod an die gewünschte Körperstelle.\n\nFalls die Kanüle herausragt, klicke Abbrechen und verwirf den Pod.\n\nKlicke Weiter; um die Kanüle zu setzen und die Insulinabgabe zu beginnen.
+ Kanüle setzen
+ Erste Basalrate und Kanüle werden nun gesetzt.\n\nWenn alle Häkchen gesetzt sind, kannst Du Weiter klicken.
+ Pod Info
+ \nDer Pod ist jetzt aktiv.\n\nDeine Basalrate ist programmiert und die Kanüle wurde gesetzt.\n\nBitte überprüfe, ob die Kanüle korrekt gesetzt wurde und ersetze den Pod, wenn Du das Gefühl hast, dass dies nicht erfolgreich war.
+ Pod deaktivieren
+ \nDrücke Weiter um den Pod zu deaktivieren.\n\nHinweis: Dies unterbricht die gesamte Insulinabgabe und deaktiviert den Pod.
+ Deaktiviere den Pod
+ Deaktiviere den Pod.\n\nWenn alle Häkchen gesetzt sind, kannst Du Weiterdrücken.\n\nHinweis: Wenn das Deaktivieren fortwährend fehlschlägt, drücke bitte Abbrechen und verwende die Option Reset Pod, um den Pod Status zwangsweise zurückzusetzen.
+ Pod deaktiviert.\n\nBitte entferne den Pod von Deinem Körper und entsorge ihn.
+ Pod verbinden
+ Pod befüllen
+ Kanüle befüllen
+ Basalprofil setzen
+ Abgabe abbrechen
+ Pod deaktivieren
+
+
+ Integration für Omnipod Dash.
+ Erinnerung Kopplung beendet
+ Erinnerung Setup beendet
+ Pod läuft in Kürze ab
+ Pod läuft in Kürze ab
+ Herunterfahren steht unmittelbar bevor
+ Niedriger Reservoirstand
+ Unbekannter Alarm
+ Das Festlegen der Basalrate evtl. fehlgeschlagen. Insulinabgabe wird evtl. ausgesetzt! Aktualisiere den Pod-Status.
+ Das Festlegen der temporären Basalrate evtl. fehlgeschlagen. Sofern eine temporäre Basalrate bestand, wurde diese ggf. beendet! Aktualisiere den Pod-Status.
+ Das Festlegen der Zeit evtl. fehlgeschlagen. Insulinabgabe wird evtl. ausgesetzt! Aktualisiere den Pod-Status.
+ Erfolgreiche Bolusabgabe konnte nicht sicher ermittelt werden. Stelle sicher, dass der Pod Insulin abgibt oder brich den Bolus ab.
+ RL Stats
+ Pulse Log
+ Profile vergleichen
+ Profil-Helfer
+ Standard-Profil
+ Aktuelles Profil
+ Verfügbares Profil
+ Profil-Typ
+ Alter: %1$.0f TDD: %2$.0f U
+ Alter: %1$.0f TDD: %2$.0f IE %3$d%%
+ Alter: %1$.0f Gewicht: %2$.0f kg
+ % der Basalrate
+ DPV-Standard-Profil
diff --git a/app/src/main/res/values-el-rGR/exam.xml b/app/src/main/res/values-el-rGR/exam.xml
index 1e3c242290..b65ee7b54a 100644
--- a/app/src/main/res/values-el-rGR/exam.xml
+++ b/app/src/main/res/values-el-rGR/exam.xml
@@ -1,7 +1,6 @@
Ποια είναι η αλήθεια για το DIA;
- Θέμα: η Διάρκεια της Δράσης ΙνσουλίνηΗ ελάχιστη τιμή είναι 3 ώρες.Η ελάχιστη τιμή είναι 5 ώρες.https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html?#insulin
@@ -122,7 +121,6 @@
App κύκλωμα για το iPhone.Spike app για iPhone.https://androidaps.readthedocs.io/en/latest/EN/Children/Children.html
- Θέμα: ISF Διορθωτικός ΠαράγονταςΥψηλότερη τιμή ISF οδηγεί σε λιγότερη χορήγηση ινσουλίνης, όταν το AAPS διορθώνει την υψηλή BG.Χαμηλότερη τιμή ISF οδηγεί σε λιγότερη χορήγηση ινσουλίνης, όταν το AAPS διορθώνει την υψηλή BG.Αλλάζοντας την τιμή του ISF δεν έχει καμία επίδραση στην ποσότητα ινσουλίνης που χορηγείται όταν το AAPS διορθώνει την υψηλή BG.
@@ -130,7 +128,6 @@
Η αλλαγή της τιμής της ISF στο προφίλ σας είναι αρκετό για να εφαρμόσετε την αλλαγή αυτή.https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#insulin-sensitivity-factor-isf-mmol-l-u-or-mg-dl-uhttps://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html
- Θέμα: IC Αναλογία ΥδατανθράκωνΥψηλή αναλογία IC οδηγεί σε λιγότερη χορήγηση ινσουλίνης για μια δεδομένη ποσότητα υδατανθράκων.Μικρή αναλογία IC οδηγεί σε λιγότερη χορήγηση ινσουλίνης για μια δεδομένη ποσότητα υδατανθράκων.Αν έχετε 0 COB Ενεργούς Υδατ., αλλάζοντας την αναλογία IC θα οδηγήσει σε μια διαφορετική ποσότητα ινσουλίνης για να διορθωθεί μια συγκεκριμένη τιμή BG.
diff --git a/app/src/main/res/values-el-rGR/strings.xml b/app/src/main/res/values-el-rGR/strings.xml
index df59b1b91a..0410c5b8d7 100644
--- a/app/src/main/res/values-el-rGR/strings.xml
+++ b/app/src/main/res/values-el-rGR/strings.xml
@@ -12,13 +12,10 @@
Επαναφορά Βάσεων ΔεδομένωνΘέλετε πραγματικά να επαναφέρετε την βάση δεδομένων;Έξοδος
- Χρησιμοποιήστε Εκτεταμένο bolus για >200%%
- DanaR συσκευή BluetoothΧρησιμοποιείτε πάντα απόλυτες τιμές βασικούΠαρακαλώ κάντε επανεκίνηση στο τηλέφώνο ή restart στο AndroidAPS από τις Ρυθμίσεις Συστήματος, \nαλλιώς το AndroidAPS δεν θα έχει καταγραφή (επαληθεύστε ότι οι αλγόριθμοι δουλεύουν σωστά)!Αυτή η συσκευή δεν φαίνεται να υποστηρίζει τη λίστα κατάτμησης βελτιστοποίησης μπαταρίας - ενδέχεται να αντιμετωπίσετε προβλήματα απόδοσης.Ορισμένα πλήκτρα για γρήγορη πρόσβαση σε κοινά χαρακτηριστικά
- Εισάγετε καταχωρήσεις ημερολογίου.Χρησιμοποιείται για ρύθμιση ενεργών συνδέσεωνΠρόγραμμα εκμάθησηςΕμφανίζει τις επιλογές τροφίμων που ορίζεται στο Nightscout
@@ -36,10 +33,6 @@
Παρέχει το προφίλ που έχετε ορίσει στο NightscoutΟρίστε ένα προφίλ με μόνο μία χρονική περίοδο.Η ολοκλήρωση της αντλίας, για τις αντλίες Accu-Check Combo, απαιτεί να έχετε εγκαταστήσει ruffy
- Ολοκλήρωση αντλίας για τις αντλίες Dana Diabecare R
- Ολοκλήρωση αντλίας για τις εγχώριες αντλίες Dana Diabecare R
- Ολοκλήρωση αντλίας για τις αντλίες Dana Diabecare R με αναβαθμισμένο λογισμικό
- Ολοκλήρωση αντλίας για τις αντλίες Dana Diabecare RSΟλοκλήρωση αντλίας για ανθρώπους που κάνουν εντατικοποιημένο σχήμα ενέσεων για την θεραπεία τουςΟλοκλήρωση αντλίας για αντλίες που δεν έχουν κανέναν οδηγό ακόμα (Ανοιχτό Κύκλωμα)Η ευαισθησία υπολογίζεται με τον ίδιο τρόπο όπως το Oref0, αλλά μπορείτε να καθορίσετε το χρονικό διάστημα στο παρελθόν. Η ελάχιστη απορρόφηση υδατανθράκων υπολογίζεται από την μέγιστη απορρόφηση υδατανθράκων από τις επιλογές.
@@ -53,13 +46,6 @@
Παρακολουθεί και ελέγχει το AndroidAPS χρησιμοποιώντας το ρολόι σας WearOS.Δείτε πληροφορίες σχετικά με το κύκλωμά σας στην πρόσοψη xDrip +.Ελεγξτε απομακρυσμένα το AndroidAPS χρησιμοποιώντας τις εντολές SMS.
- Μονάδες
- DIA
- IC
- ISF
- Βασικός ρυθμός
- Στόχος
- Δεν ορίστηκε προφίλΙνσουλίνη:Υδατάνθρακες:IOB:
@@ -75,15 +61,9 @@
TTΥδατάνθρακεςΔιόρθωση
- UBolus IOBΈναρξη τώραΕΙΚΟΝΙΚΗ ΑΝΤΛΙΑ
- Βάση Βασικού Ρυθμού
- Προσωρινός Ρυθμός
- Εκτεταμμένο bolus
- Μπαταρία
- ΑμπούλαΟΚΤελευταίος ΥπολογισμόςΕισαγωγή Παραμέτρων
@@ -95,16 +75,11 @@
ΑποτέλεσμαΑποτέλεσμα: %1$s %2$sΜη διαθέσιμα δεδομένα γλυκόζης
- Δεν απαιτείται αλλαγήΑίτημα
- Τιμή
- Διάρκεια
- ΑιτιολογίαΓλυκόζηΔιαφοράΔιαφορά:Διαμόρφωση
- ΒήματαΕπισκόπησηΠροφίλ NSΑπλό Προφίλ
@@ -122,7 +97,6 @@
ΓενικάΑυτά είναι μερικά πρόσθετα που μπορεί να βρείτε χρήσιμα.Ποιοι περιορισμοί έχουν εφαρμοστεί;
- ημέρεςΠεριορισμοίΚύκλωμαΚύκλωμα
@@ -131,24 +105,18 @@
Μετά από επεξεργασία περιορισμώνΠροσωρινός Ρυθμός ορίστηκε από την αντλίαΤελευταία εφαρμογή
- ΟΚ
- ΑκύρωσηΔΕΝ ΕΠΙΛΕΧΘΗΚΕ APS Ή ΒΡΕΘΗΚΕ ΑΠΟΤΕΛΕΣΜΑΑσφάλειαΠροσθήκη απενεργοποιημένηΠαραβίαση ΠεριορισμώνΣφάλμα παράδοσης Bolus
- Σφάλμα παράδοσης Προσ ΡυθμούΑποδοχή νέου Προσ Ρυθμού:ΘεραπείαΥπολογιστήςΕφαρμόστηκαν Περιορισμοί!
- Επιβεβαίωση
- BolusBolus:Βασικός ΡυθμόςΒασικός Ρυθμός:
- ΥδατάνθρακεςΑλλάξτε αυτό που εισάγατε!Πηγή BGΑπό πού πρέπει το AndroidAPS να πάρει τα δεδομένα του;
@@ -165,24 +133,6 @@
Βασική ΙΟΒΕνεργός Περιορισμός BolusΕνεργός περιορισμός Υδατανθράκων
- Έλεγχος BG
- Ανακοίνωση
- Σημείωση
- Ερώτηση
- Άσκηση
- Αντικατάσταση Αντλίας
- Εισαγωγή Αισθητήρα CGM
- Έναρξη Αισθητήρα CGM
- Αλλαγή Αμπούλας Ινσουλίνης
- Bolus για σνακ
- Bolus Γεύματος
- Διορθωτικό Bolus
- Συνδυαστικό Bolus
- Έναρξη Προσ Ρυθμού
- Τέλος Προσ Ρυθμού
- Διόρθωση Υδατανθράκων
- OpenAPS εκτός σύνδεσης
- Τύπος ΣυμβάντοςΆλλοΜετρητήςΑισθητήρας
@@ -209,38 +159,15 @@
Μη εύρεση φακέλουΕξαγωγή ρυθμίσεωνΕισαγωγή ρυθμίσεων
- Μέγιστο U/hr Προσωρινού Ρυθμού μπορεί να είναιΑυτή η τιμή ονομάζεται μέγιστο βασικού ρυθμού στο περιεχόμενο του OpenAPSΜέγιστο βασικής IOB που το OpenAPS μπορεί να δώσει [U]Αυτή η τιμή ονομάζεται μέγιστο IOB στο OpenAPS \nΑυτή είναι η μέγιστη ινσουλίνη [U] που το APS μπορεί να δώσει με την μία.
- ΑΠΟΡΡΙΨΗ
- DanaR
- Συνδέεται
- Συνδέθηκε
- ΑποσυνδέθηκεΆδεια χρήσης τελικού χρήστηΔΕΝ ΠΡΕΠΕΙ ΝΑ ΧΡΗΣΙΜΟΠΟΙΗΘΕΙ ΓΙΑ ΝΑ ΚΑΝΕΤΕ ΙΑΤΡΙΚΗ ΑΠΟΦΑΣΗ. ΔΕΝ ΥΠΑΡΧΕΙ ΕΓΓΥΗΣΗ ΓΙΑ ΤΟ ΠΡΟΓΡΑΜΜΑ, ΣΤΟ ΒΑΘΜΟ ΠΟΥ ΕΠΙΤΡΕΠΕΤΑΙ ΑΠΟ ΤΟ ΕΦΑΡΜΟΣΤΕΟ ΔΙΚΑΙΟ. ΕΚΤΟΣ ΟΠΟΙΑΣΔΗΠΟΤΕ ΔΙΑΒΑΘΜΙΣΜΕΝΗ ΚΑΤΑ ΤΗΝ ΕΓΓΡΑΦΗ ΤΩΝ ΚΑΤΟΧΟΙ ΠΝΕΥΜΑΤΙΚΩΝ ΔΙΚΑΙΩΜΑΤΩΝ ΚΑΙ/Ή ΑΛΛΑ ΜΕΡΗ ΠΑΡΕΧΟΝΤΑΙ ΤΟ ΠΡΟΓΡΑΜΜΑ \"ΩΣ ΕΧΕΙ\" ΧΩΡΙΣ ΕΓΓΥΗΣΗ ΟΠΟΙΟΥΔΗΠΟΤΕ ΕΙΔΟΥΣ, ΕΞΑΙΡΟΥΜΕΝΕΣ Ή ΣΙΩΠΗΡΕΣ, ΣΥΜΠΕΡΙΛΑΜΒΑΝΟΜΕΝΩΝ, ΕΝΔΕΙΚΤΙΚΑ, ΤΩΝ ΣΙΩΠΗΡΩΝ ΕΓΓΥΗΣΕΩΝ ΕΜΠΟΡΕΥΣΙΜΟΤΗΤΑΣ ΚΑΙ ΚΑΤΑΛΛΗΛΟΤΗΤΑΣ ΓΙΑ ΣΥΓΚΕΚΡΙΜΕΝΟ ΣΚΟΠΟ. Ο ΟΛΟΚΛΗΡΩΜΕΝΟΣ ΚΙΝΔΥΝΟΣ ΟΣΟΝ ΑΦΟΡΑ ΤΗΝ ΠΟΙΟΤΗΤΑ ΚΑΙ ΤΗΝ ΑΠΟΔΟΣΗ ΤΟΥ ΠΡΟΓΡΑΜΜΑΤΟΣ ΕΙΝΑΙ ΔΙΚΟ ΣΑΣ. ΕΑΝ ΤΟ ΠΡΟΓΡΑΜΜΑ ΔΕΝ ΕΙΝΑΙ ΕΛΑΤΤΩΜΑΤΙΚΟ, ΠΡΕΠΕΙ ΝΑ ΕΞΕΤΑΣΤΕ ΤΟ ΚΟΣΤΟΣ ΟΛΩΝ ΤΩΝ ΑΠΑΡΑΙΤΗΤΩΝ ΣΥΝΤΗΡΗΣΕΩΝ, ΕΠΙΣΚΕΥΩΝ Ή ΔΙΟΡΘΩΣΕΩΝ.ΚΑΤΑΛΑΒΑ ΚΑΙ ΣΥΜΦΩΝΩΑποθήκευση
- Δεν βρέθηκε προσαρμογέας Bluetooth
- Δεν βρέθηκε η επιλεγμένη συσκευή
- Λάθος σύνδεσης αντλίας
- IOB αντλίας
- Μονάδες ανά ημέρα
- Τελευταίο Bolus:
- %1$.1fώρες πριν
- Μη έγκυρα δεδομένα
- Η τιμή δεν μπήκε σωστάΞαναφορτώστε το προφίλ
- Δείτε το προφίλ
- Ενεργοποιήθηκε
- Σχόλιο
- Επιτυχία
- Ποσοστό
- Απόλυτο
- Ακύρωση Προσωρινού ΡυθμούSMS Επικοινωνία
- Περιμένετε για αποτέλεσμαΕπιτρεπτά τηλεφωνικά νούμερα+XXXXXXXXXX;+YYYYYYYYYYΓια έγχυση bolus %1$.2fU στείλτε με κωδικό %2$s
@@ -249,52 +176,13 @@
Bolus %1$.2fU δόθηκε επιτυχώςΠρος έγχυση %1$.2fUBolus %1$.2fU δόθηκε επιτυχώς
- Εγχύεται %1$.2fUΆδεια για απομακρυσμένες εντολές μέσω SMS
- Δάκτυλο
- Αισθητήρας
- ΧειροκίνηταΡυθμίσεις προφίλ DanaRDIA [h]Διάρκεια Δράσης Ινσουλίνης
- Αποτυχία αναβάθμισης βασικού προφίλ
- ΓέμισμαΑνέβασμα
- E bolus
- Διφασικό άμεσο bolus
- Διφασικό εκτεταμένο bolus
- σφάλμα
- ξαναγέμισμα
- ώρα βασικού
- γλυκόζη
- υδατάνθρακες
- συναγερμός
- Ανέβηκαν συνολικά %1$d εγγραφές
- Άμεσο bolus
- Συναγερμοί
- Ώρες Βασικού
- Bolus
- Υδατάνθρακες
- Ημερήσια Ινσουλίνη
- Σφάλματα
- Γλυκόζη
- Ξαναγέμισμα
- Αναστολή
- Σύνδεση για %1$d δευτερόλεπτα
- Κωδικός αντλίας
- Λάθος κωδικός αντλίας!
- Αντλία απασχολημένη
- Παραδόθηκε
- ΣταμάτησεΤο bolus σταμάτησεΤο bolus σταματάει
- Έμφραξη
- Stop
- Πιέστε STOP
- Αναμονή για αντλία
- Προς έγχυση %1$.2fU
- Φτάσατε το επιτρεπτό όριο
- Δεν επηλέχθηκε προφίλΤο κύκλωμα απενεργοποιήθηκεΤο κύκλωμα ενεργοποιήθηκεΚύκλωμα απενεργοποιημένο
@@ -331,20 +219,15 @@
ΓεύμαΔιορθΕνέργειες
- AndroidAPS ξεκίνησεNS φορτώνεται μόνο (απενεργοποίηση συγχρ)NS φορτώνεται μόνο. Δεν είναι αποτελεσματικό στο SGV εκτός εάν έχει επιλεγεί μία τοπική πηγή όπως το xDrip. Δεν είναι αποτελεσματικό στα Προφίλ ενώ χρησιμοποιείται το NS-Profiles.Η αντλία δεν έχει ρυθμιστεί!
- Η αντλία δεν έχει ρυθμιστεί, δεν ορίστηκε προφίλ!Πλήρωση/ΓέμισμαΠαρακαλώ ελέγξτε ότι η ποσότητα ταιριάζει με τις προδιαγραφές του σετ έγχυσης!Άλλο
- Πλήρωση/Γέμισμα στανταρ ποσότητες ινσουλίνης.Πλήκτρο 1Πλήκτρο 2Πλήκτρο 3
- mg/dl
- mmol/lΕύρος στόχου:Εύρος εμφάνισηςΥψηλό και Χαμηλό σημείο για την γραφική στην Επισκόπηση και Smartwatch
@@ -353,17 +236,7 @@
WearΞαναστείλτε όλα τα ΔεδομέναΡυθμίσεις στο Wear
- Σφάλμα Αντλίας
- Χαμηλή Μπαταρία
- Αντλία κλειστή
- Μπαταρία αντλίας Αποφορτίστηκε
- DanaR KoreanΒασικός Ρυθμός:
- Αποτυχία ρύθμισης βασικού προφίλ
- Το Βασικό προφίλ στην αντλία ενημερώθηκε
- Απενεργοποιήστε την λειτουργία EasyUI στην αντλία
- Ενεργοποιήστε εκτεταμμένο bolus στην αντλία
- Αλλάξτε την επιλογή από U/d σε U/h στην αντλίαΤιμή βασικού κάτω από το ελάχιστο. Δεν έχει ρυθμιστεί το προφίλ!BG:Τελευταία BG:
@@ -371,7 +244,6 @@
MM640gΣυνεχής ΕιδοποίησηΠαλιά Δεδομένα
- πριν από %1$d λεπτάπριν από %1$d λεπτάΤοπικό ΠροφίλOpenAPS AMA
@@ -386,47 +258,27 @@
Γεύμα ΣύντομαΥπογλυκαιμίαΆσκηση
- Στατιστικά DanaR
- Άθροισμα TDD
- Εκθετικά Σταθμισμένο TDD
- Βασικός Ρυθμός
- Bolus
- TDD
- Ημερομηνία
- Αναλογία
- # Ημέρες
- Βάρος
- Πιθανώς ανακριβής όταν χρησιμοποιείτε bolus για πλήρωση/γέμισμα!
- Παλιά Δεδομένα Παρακαλώ Πατήστε \"Ξαναφόρτωση\"
- Συνολικός Βασικός Ρυθμός
- TBB * 2
- Παραμετροποίηση...ΔΡΑΣΗΔιαμόρφωσηΚΥΚΛΩΜΑSPOAPSLP
- DANAΑΡΧΙΚΗΕικ. αντλίαNSPROFILEΘΕΡΑΠ
- CPΣΤΟΧΟΙWEARSMSΣυντομογραφίες ενοτήτωνΧρησιμοποιείτε πάντα τη βραχυπρόθεσμη μέση διαφορά αντί της απλής διαφοράςΧρήσιμο όταν δεδομένα από μη φιλτραρισμένες πηγές όπως το xDrip αποκτούν θόρυβο.
- Ρυθμίσεις για Προχωρημένους
- Μοντέλο: %1$02X Πρωτόκολλο: %2$02X Κωδικός: %3$02XΠροφίλΠροεπιλεγμένη τιμή: 3 Αυτό είναι ένα κλειδί ασφαλείας του OpenAPS. Αυτό περιορίζει την αύξηση του βασικού x3 (σε αυτούς τους ανθρώους) από την μεγαλύτερη τιμή του. Συνήθως δεν χρειάζεται να το αλλάξετε, αλλά πρέπει να ξέρετε τι σημαίνει “3x μέγιστο ημερήσιο; 4x τρέχων” για λόγους ασφαλείας.Προεπιλεγμένη τιμή: 4 Αυτό είναι το μισό του θέματος ασφαλείας του OpenAPS, και το άλλο μισό του «3 x μέγιστο ημέρας: 4 x τρέχων» των θεμάτων ασφαλείας. Αυτό σημαίνει ότι ο βασικός ρυθμός, ανεξάρτητα από την μέγιστη τιμή βασικού ρυθμού στην αντλία σας, δεν μπορεί να είναι υψηλότερος από το πολλαπλάσιο αυτού του αριθμού. Αυτό γίνεται για να αποτρέψει τους ανθρώπους από το να μπουν σε επικίνδυνες καταστάσεις θέτωντας υψηλό βασικό πριν κατανοήσουν πλήρως πώς λειτουργεί ο αλγόριθμος. Και πάλι, η προεπιλεγμένη τιμή είναι 4x: οι περισσότεροι άνθρωποι ποτέ δεν θα χρειαστεί να το προσαρμόσουν και αντίθετα είναι πιο πιθανό να χρειαστεί να προσαρμόσουν άλλες ρυθμίσεις αν αισθάνονται ότι κινούνται με ασφάλεια.Προεπιλεγμένη τιμή: 1.2\nΑυτός είναι ένας πολλαπλασιαστής για το autosens (και σύντομα autotune) για να ορίσετε ένα 20%% ανώτατο όριο στο πόσο ψηλά μπορεί να είναι ο λόγος autosens, που με τη σειρά του καθορίζει πόσο ψηλά το autosens μπορεί να ρυθμίσει τον βασικό ρυθμό, πόσο χαμηλά μπορεί να ρυθμίσει την ISF, και πόσο χαμηλά μπορεί να ορίσει το στόχο της BG.Προεπιλεγμένη τιμή: 0.7\n H άλλη πλευρά από τα όρια ασφαλείας του autosens, θέτοντας ένα ανώτατο όριο στο πόσο χαμηλά to autosens μπορεί να προσαρμόσει τον βασικό ρυθμό και πόσο ψηλά μπορεί να ρυθμίσει τη ISF και τον στόχο του BG.
- Το autosens ρυθμίζει στόχουςΠροεπιλεγμένη τιμή: true\nΑυτό χρησιμοποιείται για να επιτρέψει στο autosens να προσαρμόσει τον στόχο BG, επιπρόσθετα από το ISF και βασικό ρυθμό.Προεπιλεγμένη τιμή: 2\nΗ αναβολή Bolus ενεργοποιείται αφού κάνετε ένα γευματικό bolus, έτσι το κύκλωμα δεν θα εξουδετερώσει με χαμηλό προσωρινό μόλις έχετε φάει. Το παράδειγμα εδώ και η προεπιλογή είναι 2: έτσι μια τρίωρη DIA σημαίνει ότι το bolus αναβολής θα είναι σταδιακά πάνω από 1,5 ώρα (3DIA/2).Προεπιλεγμένη τιμή: 3.0 (AMA) ή 8.0 (SMB). Αυτό είναι μια ρύθμιση για την επίπτωση της προεπιλεγμένης απορρόφησης υδατανθράκων ανά 5 λεπτά. Η προεπιλογή είναι μια αναμενόμενη 3mg/dl/5min. Αυτό επηρεάζει το πόσο γρήγορα το COB ελλατώνεται, και πόση απορρόφηση υδατανθράκων θα υποθέτει για τον υπολογισμό της μελλοντικής πρόβλεψης BG, όταν το BG πέφτει περισσότερο από το αναμενόμενο ή δεν αυξάνεται όσο το αναμενόμενο.
@@ -439,18 +291,9 @@
Το καλιμπράρισμα στάλθηκε. Η λήψη πρέπει να είναι ενεργοποιημένη στο xDrip.το xDrip δεν λαμβάνει καλιμπραρίσματαΗ αντλία είναι σε παύση
- Φόρτωση κατάστασης αντλίας
- Ρύθμιση Προσ Ρυθμού
- Σταμάτημα Προσ Ρυθμού
- Ρύθμιση εκτεταμμένου bolus
- Σταμάτημα εκτεταμμένου bolus
- Ενημέρωση Βασικού ρυθμού
- ΑποσυνδέεταιΕκτελείτεΡυθμίσεις Εικονικής αντλίαςΦόρτωση κατάστασης στο NS
- Λάθος κωδικός
- Φτάνετε το ημερήσιο όριο ινσουλίνηςNSClientNSCIURL:
@@ -474,7 +317,6 @@
Δείξε αναλυτικά IOBΧώρισε την IOB σε bolus και βασικό στο ρολόιαποτυχία - ελέγξτε τηλέφωνο
- Μη διαθέσιμοΗλικία χρήστηΠαιδίΈφηβος
@@ -507,8 +349,6 @@
SuperbolusΗ εφαρμογή καταγραφής ξεκινά από το NSΈξοδος από το application για την εφαρμογή των ρυθμίσεων
- DanaRv2
- ΙνσουλίνηΠοιο τύπο ινσουλίνης χρησιμοποιείτε;Γρήγορη ΙνσουλίνηNovorapid, Novolog, Humalog
@@ -523,9 +363,6 @@
Όριο προειδοποίησης πολύ χαμηλής μπαταρίας [%]IOBCOB
- Έκδοση
- Τελευταία σύνδεση
- Κατάσταση BluetoothΣχετικά μεΑπουσία δικαιωμάτων SMSΛείπει η άδεια κατάστασης τηλεφώνου
@@ -536,23 +373,12 @@
Πρόσθεσε BGI στην γραμμή κατάστασηςΜη φόρτωση στο NSΌλα τα δεδομένα που αποστέλλονται στην NS έχουν καταργηθεί. Το AAPS συνδέεται με NS, αλλά δεν γίνεται καμία αλλαγή στα NS
- Βήμα Βασικού
- Βήμα BolusΑκύρωση Εκτεταμμένου bolusΧρόνος ζωής ΑισθητήραΧρόνος ζωής ΚάνουλαςΧρόνος ζωής Ινσουλίνης
- ώρες
- Μη έγκυρο προφίλ!!!Χρόνος ζωής μπαταρίας αντλίας
- Αλλαγή μπαταρίας αντλίαςΕπιλογές συναγερμού
- Επείγον υψηλό
- Υψηλό
- Χαμηλό
- Επείγον χαμηλό
- Παλιά δεδομένα
- Επείγον παλιά δεδομέναΟριακή τιμή για παλιά δεδομένα [min]Επείγουσα οριακή τιμή για παλιά δεδομένα [min]Εσωτερικά διαστήματα για autosense [h]
@@ -569,7 +395,6 @@
Ρύθμιση απορρόφησηςΜέγιστος χρόνος απορρόφησης γεύματος [h]Χρόνος σε ώρες που περιμένουμε να απορροφηθούν όλοι οι υδατάνθρακες ενός γεύματος
- Εμφάνιση εκτεταμένου bolus σε %%SAGEIAGECAGE
@@ -594,7 +419,6 @@
ΑΝΤΛΙΑΔιάρκεια [min]OpenAPS SMB
- SMBΕνεργοποίηση UAMΕνεργοποίηση SMBΧρησιμοποιήστε Super Micro Boluses αντί προσωρινού ρυθμού για ταχύτερα αποτελέσματα
@@ -606,22 +430,7 @@
Έξτρα Γρήγορη δράση - OrefDIA για %1$f πολύ μικρή - χρησιμοποιήστε %2$f! Ενεργοποίηση προφίλ
- ΗμερομηνίαΜΗ ΕΓΚΥΡΟ
- Περιμένετε για σύζευξη με αντλία
- Σύζευξη ΟΚ
- Τέλος χρόνου σύζευξης
- Δεν βρέθηκε συσκευή ακόμα
- Άδεια αμπούλα
- Ειδοποίηση υψηλής τιμής σακχάρου
- Υπόλοιπο Ινσουλίνης
- DanaRS
- Dana
- Επιλεγμένη αντλία
- Σύζευξη νέας αντλίας
- Ταχύτητα Bolus
- Ρυθμίστε το βήμα βασικού στο 0.01 U/h
- Serial numberΠοσοστόΑλλαγή της ώραςΠροκαθορισμένος Στόχος-Προσ Ρυθμού
@@ -631,31 +440,18 @@
στόχος άσκησηςδιάρκεια υπογλυκαιμίαςστόχος υπογλυκαιμίας
- Πλήρωση
- Κατάσταση εκτεταμένου bolus
- Κατάσταση bolus
- Λήψη κατάστασης Προσ Ρυθμού
- Λήψη ρυθμίσεων αντλίας
- Λήψη ώρας αντλίαςεπαναχρησιμοποίησηΈλεγχος από ρολόιΡυθμίστε Στόχους-Προσ Ρυθμού και βάλτε Θεραπείες από το ρολόι.
- Ο χρόνος σύνδεσης έληξεΓεύμαg
- m
- h]]>kjΕνέργειαΠρωτεΐνεςΛίπος]]>
- Αναμονή για το τέλος του bolus. Απομένουν %1$d δευτερόλεπτα.
- Επεξεργασία συμβάντος
- Έναρξη bolusΗ εντολή εκτελείται τώρα
- Ο οδηγός αντλίας διορθώθηκεΗ αντλία δεν είναι διαθέσιμηΧαμένες μετρήσεις BGΧρησιμοποιήστε ειδοποιήσεις συστήματος για ειδοποιήσεις και συναγερμούς
@@ -665,21 +461,15 @@
Όριο για μη διαθεσιμότητα της αντλίας [λεπτά]Συναγερμός έκτακτης ανάγκηςΠληροφορίες
- Bluetooth
- BT Watchdog
- Απενεργοποιεί το bluetooth του τηλεφώνου για ένα δευτερόλεπτο αν δεν είναι δυνατή η σύνδεση με την αντλία. Αυτό μπορεί να βοηθήσει σε ορισμένα τηλέφωνα όπου το bluetooth παγώνει.Eversense App (τροποποιημένη)Ανέβασμα δεδομένων BG στο NSΑνέβασμα ρυθμίσεων BGΕμφάνιση λεπτομερών στατιστικώνΔείξτε τη διαφορά με ένα επιπλέον δεκαδικό ψηφίοΤα μέγιστα λεπτά του βασικού ρυθμού που περιορίζουν το SMB να
- Μη υποστηριζόμενη έκδοση στην αντλίαΑποστολή δεδομένων BG στο xDrip+Στο xDrip+, επιλέξτε την πηγή δεδομένων 640g / EversenseNSClient BG
- Η τιμή του βασικού αντικαταστάθηκε από την ελάχιστη υποστηριζόμενη τιμή: %1$s
- Η τιμή του βασικού αντικαταστάθηκε από την μέγιστη υποστηριζόμενη τιμή: %1$sΥπολογισμός BGΥπολογισμός του IOB bolusΥπολογισμός βασικού IOB
@@ -697,8 +487,6 @@
Ενεργοποιήθηκε η κλειστή λειτουργίαΤο μέγιστο IOB έχει ρυθμιστεί σωστάBG διαθέσιμη από επιλεγμένη πηγή
- Οι τιμές του βασικού ρυθμού δεν αντιστοιχούν σε ώρες: %1$s
- Μη έγκυρο προφίλ: %1$sΠρογραμματισμός της αντλίας για bolusΑνανέωσηΚατάσταση
@@ -737,7 +525,6 @@
Σφάλμα έγχυσης εκτεταμένου bolusSightπριν
- %1$.2f hΠάντα ενεργό SMBΕνεργοποιήστε τις ΜΜΕ ανεξάρτητα από τα bolus. Πιθανόν μόνο με πηγές BG με καλό φιλτράρισμα δεδομένων, όπως το G5Ενεργοποίηση SMB μετά από υδατάνθρακες
@@ -747,9 +534,6 @@
Ενεργοποίηση SMB με προσωρινούς στόχουςΕνεργοποίηση του SMB όταν υπάρχει ενεργός προσωρινός στόχος (τρώω σύντομα, άσκηση)Ενεργοποίηση SMB με υψηλούς προσωρινούς στόχους
- Ενεργοποίηση SMB όταν υπάρχει ενεργός υψηλός προσωρινός στόχος (άσκηση)
- Αφήστε τον προσωρινό ρυθμό ενεργό
- ΣίγασηΙνσουλίνηΥδατάνθρακεςΠλήκτρα
@@ -777,7 +561,6 @@
Μην κάνετε bolus, μόνο να καταγράφετεΚατηγορίαΥποκατηγορία
- Το bolus θα εγγραφεί μόνοΣυμπληρώνεται αυτόματα η BG που λείπει από το NSΤο SMB ρυθμίστηκε από την αντλίαΔραστηριότητα
@@ -791,7 +574,6 @@
Εκτελείται έκδοση Dev. Το κλειστό κύκλωμα είναι απενεργοποιημένο.Μηχανική λειτουργία ενεργοποιημένηΗ μηχανική λειτουργία δεν είναι ενεργοποιημένη και δεν είναι ελευθερωμένη
- %1$.2f U/hΑνάγνωση βασικού προφίλΤο ιστορικό της αντλίας έχει αλλάξει μετά την εκτέλεση του υπολογισμού του bolus. Το bolus δεν εκτελέστηκε. Παρακαλούμε να υπολογίσετε ξανά αν είναι ακόμα απαραίτητο.Το bolus εκτελέστηκε με επιτυχία, αλλά η καταχώριση στην θεραπεία απέτυχε. Αυτό μπορεί να συμβεί εάν χορηγηθούν δύο bolus ίδιου μεγέθους μέσα σε 2 λεπτά. Ελέγξτε το ιστορικό της αντλίας και το ιστορικό στο μενού Θεραπείες και χρησιμοποιείστε το Careportal για να εισαγάγετε τα στοιχεία που λείπουν. Βεβαιωθείτε ότι δεν εισάγετε το ίδιο μέγεθος στον ακριβώς ίδιο χρόνο.
@@ -814,15 +596,10 @@
Το SMB απενεργοποιήθηκε στις ΕπιλογέςΤο UAM απενεργοποιήθηκε στις ΕπιλογέςΤο UAM απενεργοποιήθηκε επειδή είναι ενεργοποιημένο στην προσθήκη ευαισθησία στο Oref1
- Ο μέγιστος βασικός ρυθμός περιορίζεται σε %1$.2f U/h λόγω ότι %2$s
- όριο αντλίας
- πρέπει να είναι θετική τιμήπολλαπλασιαστής μέγιστου βασικούπολλαπλασιαστής ημερήσιου μέγιστου βασικούΈνα bolus παραδόθηκε μέσα στα τελευταία 3 λεπτά, παράκαμψη SMBΟ βασικός ρυθμός ορίστηκε σωστά
- Περιορίζεται το μέγιστο επί τοις εκατό ποσοστό σε %1$d%% λόγω %2$s
- Περιορίζεται το bolus σε %1$.1f U λόγω %2$sΠεριορίζεται το εκτεταμένο bolus σε %1$.1f U λόγω %2$sΠεριορίζεται η μέγιστη IOB σε %1$.1f U λόγω %2$sΠεριορίζονται οι υδατάνθρακες σε %1$d g λόγω %2$s
@@ -837,7 +614,6 @@
To SMB δεν επιτρέπεται σε λειτουργία ανοιχτού κυκλώματοςΦαγητόεπαναφορά
- Αναμονή για συγχρονισμό ώρας (%1$d δευτ)Αποσυνδέθηκε (%1$d m)Μέγιστη συνολική IOB το OpenAPS δεν μπορεί να πάει πάνω από [U]Αυτή η τιμή ονομάζεται μέγιστη IOB στο OpenAPS\nTο OpenAPS δεν θα προσθέσει περισσότερη ινσουλίνη αν η τρέχουσα IOB είναι μεγαλύτερη από αυτή την τιμή
@@ -853,7 +629,6 @@
Οδηγός εγκατάστασηςΤΕΛΟΣΕπιλέξτε τη γλώσσα σας
- Απαιτείται: %1$.2fU Παραδόθηκε: %2$.2fU Κωδικός σφάλματος: %3$sΠρώτη αύξηση ινσουλίνηςΔεύτερη αύξηση ινσουλίνηςΤρίτη αύξηση ινσουλίνης
@@ -876,7 +651,6 @@
Τύπος εικονικής αντλίαςΟρισμός ΑντλίαςBolus: Άμεσο=%1$s\nΕκτεταμένο Bolus: [Άμεσο=%2$s, Διάρκεια=%3$smin-%4$sh]\nΒασικός: Άμεσο=%5$s\nTBR: %6$s (με %7$s), Διάρκεια=%8$smin-%9$sh\n%10$s
- * Υποστηρίζονται μόνο διακριτές τιμές και όχι εύρος τιμών για βασικό/bolus στην εικονική αντλία.Αυτόματη φόρτωση BGΡυθμίσεις Γρήγορου ΟδηγούΥπολογισμοί που περιλαμβάνονται στο αποτέλεσμα του γρήγορου οδηγού:
@@ -901,23 +675,9 @@
Ξεκινήστε τον πρώτο στόχοΆδειαΖητείστε άδεια
- Η εφαρμογή απαιτεί άδεια τοποθεσίας για την αναζήτηση συσκευών BT
- Η εφαρμογή απαιτεί πρόσβαση στη μνήμη για την αποθήκευση αρχείων καταγραφήςΑίτημαΡυθμίστε την προσθήκη ινσουλίνηςΈξοδος
- Ρυθμίσεις χρήστη
- Μορφή ώρας
- Πλήκτρα κύλισης
- Ήχος πλήκτρων
- Συναγερμός
- Ήχος
- Δόνηση
- Και τα δύο
- Μονάδες γλυκόζης
- Αποθήκευση ρυθμίσεων στην αντλία
- Ενεργό
- ΑνενεργόΆνοιγμα μενού πλοήγησηςΚλείσιμο μενού πλοήγησηςΕπιλογές προσθήκης
@@ -933,8 +693,6 @@
Εσφαλμένη ρύθμιση αντλίας. Ελέγξτε τα κείμενα και βεβαιωθείτε ότι η Quick Info ονομάζεται QUICK INFO χρησιμοποιώντας το λογισμικό διαμόρφωσης 360.Προσαρμογή
- Μεγάλη χρονική διαφορά
- Μεγάλη χρονική διαφορά:\nΗ ώρα στην αντλία διαφέρει περισσότερο από 1,5 ώρες. \nΠαρακαλώ ρυθμίστε την ώρα χειροκίνητα στην αντλία και βεβαιωθείτε ότι η ανάγνωση του ιστορικού από την αντλία δεν προκαλεί απροσδόκητη συμπεριφορά. \nΑν είναι δυνατόν, αφαιρέστε το ιστορικό από την αντλία πριν την αλλαγή της ώρας ή κλείστε το κλειστό κύκλωμα για μία DIA μετά την τελευταία λάθος καταχώρηση ιστορικού αλλά κατ΄ελάχιστο μία DIA από τώρα.Ξεκίνησε το AndroidAPS καθαρόΒρέθηκαν αποθηκευμένες ρυθμίσειςΠροσοχή: Εάν ενεργοποιήσετε και συνδεθείτε με μια αντλία, το AndroidAPS θα αντιγράψει τις ρυθμίσεις βασικού από το προφίλ στην αντλία, αντικαθιστώντας τον υπάρχων βασικό ρυθμό της αντλίας. Βεβαιωθείτε ότι έχετε τον σωστό βασικό ρυθμό στο AndroidAPS. Εάν δεν είστε βέβαιοι ή δεν θέλετε να αντικαταστήσετε τον βασικό ρυθμό στην αντλία σας, πατήστε Άκυρο και επαναλάβετε εναλλαγή προς την αντλία σε μεταγενέστερο χρόνο.
@@ -958,17 +716,10 @@
Προτιμώμενη λειτουργία APSΣύνολοΥπολογ
- Δημιουργία σύνδεσηςΣτείλτε τα αρχεία καταγραφής της ημέρας στους προγραμματιστές μαζί με αυτή τη φορά. Απροσδόκητη κατάσταση.
- Υπέρβαση μέγιστου bolus
- Σφάλμα εντολής
- Σφάλμα ταχύτητας
- Υπέρβαση του ορίου ινσουλίνηςΕλάχιστο αίτημα για αλλαγή [%]Το Ανοιχτό κύκλωμα θα εμφανίσει νέο μήνυμα αλλαγής μόνο αν η αλλαγή είναι μεγαλύτερη από αυτήν τη τιμή %. Προεπιλεγμένη τιμή 20%
- Παρακαλώ συνδέστε την αντλία στο τηλέφωνο!Αναζήτηση συσκευών…
- Περιμένετε…Σύζευξη ολοκληρώθηκεΤαιριάζουν οι εμφανιζόμενοι κωδικοί με αυτούς της αντλίας;Σύζευξη Insight
@@ -1057,7 +808,6 @@
είναι ίσο ή μεγαλύτερο απόείναι μεγαλύτερο απόδεν είναι διαθέσιμο
- άγνωστοΓλυκόζη δεν είναι διαθέσιμηΓλυκόζη %1$s %2$.0f %3$sΓλυκόζη %1$s %2$.1f %3$s
@@ -1074,23 +824,10 @@
ΑυτόματοΑυτοματισμός== ∑ %1$s U
- U/h
- g/U
- /UΑλλαγή αρχείου αισθητήρα σε NSΔημιουργία συμβάντος «Αλλαγή αισθητήρα» στο NS αυτόματα με έναρξη αισθητήραTomato (MiaoMiao)Tomato
- δευτερόλεπτο
- λεπτό
- ώρα
- ημέρα
- εβδομάδα
- δευτερόλεπτα
- λεπτά
- ώρες
- ημέρες
- εβδομάδεςΤο όνομα χρήστη του Tidepool, συνήθως το mail σαςΌνομα ΧρήστηΤο συνθηματικό του Tidepool
@@ -1115,7 +852,6 @@
Χρόνος επαναλαμβανόμενωνΚάθεΠοτέ
- %1$dλΚατάσταση:Ενέργεια:ΙΟΒ [U]:
@@ -1130,7 +866,6 @@
παλιά έκδοσηπολύ παλιά έκδοση2ώρες
- %1$.2fUΕφαρμογή Dexcom (τροποποιημένη)DXCMΛάβετε τις τιμές BG από την εφαρμογή του Dexcom.
@@ -1165,137 +900,6 @@
Ενεργοποιήσεις:ΜΕΤΑΚΙΝΗΣΗΠροϋποθέσεις:
-
- Η λειτουργία δεν υποστηρίζεται από την αντλία ή/και οδηγό.
- Η λειτουργία δεν υποστηρίζεται ΑΚΟΜΑ από την αντλία.
-
- Η ολοκλήρωση της αντλίας για τη Medtronic, απαιτεί τη συσκευή RileyLink και το συγκεκριμένο μοντέλο αντλίας
-
- Σειριακός Αριθμός Αντλίας
- Τύπος Αντλίας
- Συχνότητα Αντλίας
- Η καθυστέρηση πριν το bolus ξεκίνησε (s)
- Μέγιστο Bolus στην αντλία (U)
- Μέγιστος Βασικός στην αντλία (U/h)
- Αποκωδικοποίηση Medtronic
- US & Canada (916MHz)
- Παγκοσμίως (868 Mhz)
- Κωδικοποίηση λογισμικού 4b6b
- Κωδικοποίηση hardware 4b6b
- Wake and Tune Up
- Καθαρισμός Bolus Block
- Επαναφορά Ρυθμίσεων RileyLink
- Τύπος Μπαταρίας (Power View)
- Μη επιλεγμένη (Simple View)
- Αλκαλική (Extended view)
- Λιθίου (Extended view)
-
- SCAN
- STOP
- Επιλεγμένο
- RileyLink Scan
- Χαμηλή ενέργεια Bluetooth δεν υποστηρίζεται.
- Bluetooth μη ενεργοποιημένο.
- Τοποθεσία μη ενεργοποιημένη
- Για την εύρεση Bluetooth σε νεότερες συσκευές, η τοποθεσία πρέπει να είναι ενεργοποιημένη. Το AAPS δεν παρακολουθεί την τοποθεσία σας και μπορεί να απενεργοποιηθεί μετά την επιτυχή σύζευξη.
- Ενεργοποίηση
- Όχι
- Σάρωση
- Η σάρωση ολοκληρώθηκε
- Λάθος σάρωσης: %1$d
-
- Ρυθμίσεις
- Ιστορικό
- Κατάσταση RileyLink
- Κατάσταση Αντλίας
- Ρυθμίσεις RileyLink
- RileyLink
- Διαμορφωμένη Διεύθυνση
- Συνδεδεμένες συσκευές
- Κατάσταση Σύνδεσης
- Σφάλμα σύνδεσης
- Συσκευή
- Τύπος Συσκευής
- Μοντέλο συσκευής
- Τελευταία χρησιμοποιημένη συχνότητα
- Τελευταία επαφή συσκευής
- Έκδοση RL
-
- Επαναφορά Bluetooth…
- Σφάλμα Bluetooth
- Bluetooth Έτοιμο
- Δεν ξεκίνησε
- Αρχικοποίηση του RileyLink…
- RileyLink Σφάλμα
- Συντονισμός RileyLink και Αντλίας
- Πρόβλημα σύνδεσης με την Αντλία
- Συνδέθηκε
-
- Η συσκευή δεν είναι RileyLink
- Το RileyLink μη προσπελάσιμο
- Bluetooth απενεργοποιημένο
- Δεν υπάρχει προσαρμογέας Bluetooth
- TuneUp απέτυχε
- Η αντλία δεν είναι διαθέσιμη
- Το Pod δεν είναι διαθέσιμο
- Μη ορισμένο
-
- Αντλία Medtronic
- Omnipod
-
- Σφάλματα
- Δεν ορίστηκε # Serial.
- Serial # μη έγκυρο.
- Δεν ορίστηκε Τύπος Αντλίας.
- Τύπος Αντλίας δεν υποστηρίζεται.
- Δεν ορίστηκε Συχνότητα Αντλίας.
- Συχνότητα Αντλίας δεν υποστηρίζεται.
- Διεύθυνση RileyLink μη έγκυρη.
- Ο τύπος αντλίας που ανιχνεύτηκε δεν είναι ο ίδιος με αυτόν που ορίστηκε.
- Το βασικό προφίλ που ορίστηκε στην αντλία είναι λάθoς (πρέπει να είναι STD).
- Λάθος τύπος TBR ορίστηκε στην αντλία (πρέπει να είναι Absolute).
- Λάθος μέγιστο bolus ορίστηκε στην αντλία (πρέπει να είναι %1$.2f).
- Λάθος μέγιστο Βασικού ορίστηκε στην αντλία (πρέπει να είναι %1$.2f).
- Λειτουργία δεν είναι δυνατή. \n\n Χρειάζεται να ρυθμίσετε την αντλία Medtronic πρώτα, προτού να μπορέσετε να χρησιμοποιήσετε αυτή την λειτουργία.
- Απαιτήθηκε αλλαγή ώρας πάνω από 24h.
-
- Βασικοί
- Ρύθμιση παραμέτρων
- Ειδοποιήσεις
- Στατιστικά
- Άγνωστα
- Όλα
- Ιστορικό Αντλίας Medtronic
-
- Ποτέ δεν επικοινωνήσατε
- Ξύπνημα
- Σφάλμα με επικοινωνία
- Λήξη χρόνου επικοινωνίας
- Η αντλία δεν είναι διαθέσιμη
- Μη έγκυρη παραμετροποίηση
- Ενεργή
- Sleeping
-
- Ακυρώσατε τον Bolus, αφού είχε ήδη σταλεί στην αντλία. Επειδή η αντλία Medtronic δεν υποστηρίζει ακύρωση, θα χρειαστεί να ακυρωθεί χειροκίνητα. Βάλτε την αντλία σε αναστολή λειτουργίας και μετά κάντε Συνέχιση (αν θέλετε να ακυρώσετε ακόμα). Η εφαρμογή θα πάρει τις αλλαγές, στην επόμενη ενημέρωση (σε λιγότερο από 5 λεπτά).
- Αδυναμία ανάγνωσης τρέχοντος TBR.
- Αδυναμία ακύρωσης τρέχοντος TBR. Αναστολή λειτουργίας.
- Η δημιουργία προφίλ απέτυχε, επειδή ακολουθώντας πρότυπα, έχετε υπερβολικά μεγάλο βασικό ρυθμό: %1$s
- Το Bolus δεν μπορεί να χορηγηθεί.
- Το Bolus δεν μπορεί να παραδοθεί διότι η διαθέσιμη ποσότητα ινσουλίνης (%1$.2f) είναι μικρότερη από αυτήν που ζητείται (%2$.2f).
- TBR δεν μπορεί να μπει.
- Αδυναμία ακύρωσης τρέχοντος TBR.
- Το Βασικό Προφίλ δεν μπορεί να τοποθετηθεί.
- Το Βασικό Προφίλ είναι ίδιο, οπότε δεν θα μπει ξανά.
- Βλέπε Ιστορικό - Σελίδα %1$d (%2$d/16)
- Βλέπε Ιστορικό - Σελίδα %1$d
- Πάρτε Ώρα Αντλίας
- Λάβετε ρυθμίσεις
- Λάβετε Μοντέλο Αντλίας
- Λάβετε Βασικό Προφίλ
- Βάλτε Βασικό Προφίλ
- Λάβετε Προσωρινό Ρυθμό
- Βάλτε Προσωρινό Ρυθμό
- Βάλτε BolusΑλλαγή προφίλ σεΑλλαγή προφίλ σε %1$sΤελευταία σύνδεση με αντλία
@@ -1306,7 +910,6 @@
%2$+.2fU]]>Bolus constraint applied: %2$.2fU to %3$.2fU]]>!!!!! Μικρή απορρόφηση υδατανθράκων ανιχνεύτηκε: %2$d%% της ώρας. Τσεκάρετε τους υπολογισμούς σας. COB μπορεί να υπερεκτιμήθηκε και να δόθηκε περισσότερη ινσουλίνη!!!!!]]>
- %1$.0f / %2$d UΧορήγηση του αποτελέσματος αυτού του μέρους του υπολογισμού bolus [%]Ο Υπολογισμός Bolus κάνει υπολογισμούς αλλά μόνο αυτό το μέρος της υπολογίσημης ινσουλίνης χορηγείται. Χρήσιμο με τον αλγόριθμο SMB.Φόρτωση ...
@@ -1314,7 +917,6 @@
Εύρος χρόνουΟ χρόνος είναι μεταξύ %1$s και %2$sΑνάμεσα
- ΚλείσιμοΑυξείστε την μέγιστη βασική τιμή, επειδή η ρύθμιση είναι χαμηλότερη από τη μέγιστη βασική στο προφίλ σαςΜη έγκυρο μήνυμα%1$s ISF: %2$.1f
@@ -1325,4 +927,22 @@
min%1$dg
+
+ Ποτέ δεν επικοινωνήσατε
+ Ξύπνημα
+ Σφάλμα με επικοινωνία
+ Λήξη χρόνου επικοινωνίας
+ Η αντλία δεν είναι διαθέσιμη
+ Μη έγκυρη παραμετροποίηση
+ Ενεργή
+ Sleeping
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values-es-rES/exam.xml b/app/src/main/res/values-es-rES/exam.xml
index 6b5006b5f0..d10c0449d3 100644
--- a/app/src/main/res/values-es-rES/exam.xml
+++ b/app/src/main/res/values-es-rES/exam.xml
@@ -1,7 +1,7 @@
¿Qué es cierto acerca de DIA?
- Tema: la Duración de la Acción de la Insulina
+ Tema: Duración de la acción de la insulinaEl valor mínimo es de 3 horas.El valor mínimo es de 5 horas.https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html?#insulin
@@ -122,7 +122,7 @@
Aplicación de Loop en el iPhone.App de Spike en el iPhone.https://androidaps.readthedocs.io/en/latest/EN/Children/Children.html
- Tema: Factor de sensibilidad de la insulina
+ Tema: Factor de sensibilidad de insulinaLos valores más altos de ISF llevan a una menor cantidad de insulina cuando AAPS corrige los valores altos de glucemia.Los valores más bajos de ISF llevan a una menor cantidad de insulina cuando AAPS corrige los valores altos de glucemia.El cambio de los valores de ISF no afecta a la cantidad de insulina que se entrega cuando AAPS corrige para compensar los valores altos de glucemia.
@@ -130,7 +130,7 @@
El cambio del valor de ISF en el perfil es suficiente para aplicar el cambio.https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#insulin-sensitivity-factor-isf-mmol-l-u-or-mg-dl-uhttps://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html
- Tema: El ratio IC
+ Tema: El ratio insulina carbohidratos- ICLos ratios IC más altos conducen a menos insulina entregada por una cantidad determinada de carbohidratos.Los ratios IC más bajos conducen a menos insulina entregada por una cantidad determinada de carbohidratos.Si tiene 0 COB, cambiar la ratio IC conducirá a una cantidad distinta de insulina para corregir un valor de glucemia determinado.
diff --git a/app/src/main/res/values-es-rES/objectives.xml b/app/src/main/res/values-es-rES/objectives.xml
index 047ce04909..d1377e8706 100644
--- a/app/src/main/res/values-es-rES/objectives.xml
+++ b/app/src/main/res/values-es-rES/objectives.xml
@@ -20,7 +20,9 @@
Una semana con éxito en lazo cerrado durante el día con entrada regular de carbohidratosHabilitar funciones adicionales para su uso durante el día, como el asistente de comida avanzadoHabilitar funciones adicionales para uso durante el día como SMB
+ Activar automatización¡Debes leer el wiki y subir maxIOB para que SMB funcione bien! Para comenzar un buen valor sería maxIOB = bolo de comida medio + 3 x máximo basal diario
+ Lea los documentos sobre cómo funciona la automatización. Configura tus primeras reglas simples. En lugar de acción, deje que AAPS muestre solo notificaciones. Cuando esté seguro de que la automatización se activa en el momento adecuado, reemplace la notificación por acción real. (https://androidaps.readthedocs.io/en/latest/EN/Usage/Automation.html)Glucosa disponible en NSEstado de la bomba disponible en NSAprobación Manual
@@ -35,6 +37,7 @@
Mostrar contenido del plugin LoopUsar función de escala mediante un gráfico BG pulsado largoIntro
+ Si tienes al menos 3 meses de experiencia con el lazo cerrado de otros sistemas puedes cualificarte para obtener un código para saltarte los objetivos. Para información detallada (en inglés): https://androidaps.readthedocs.io/en/latest/EN/Usage/Objectives.html#skip-objectives.Código aceptadoCódigo no válidoCompruebe su conocimiento
diff --git a/app/src/main/res/values-es-rES/protection.xml b/app/src/main/res/values-es-rES/protection.xml
index 3ea04e700d..81480ef4d5 100644
--- a/app/src/main/res/values-es-rES/protection.xml
+++ b/app/src/main/res/values-es-rES/protection.xml
@@ -1,2 +1,25 @@
-
+
+ Autentificación requerida
+ Coloque el dedo en el lector de huellas dactilares para verificar su identidad
+ Protección de ajustes
+ Protección de aplicación
+ Protección de bolo
+ Contraseña maestra
+ Contraseña de configuración
+ Contraseña de aplicación
+ Contraseña de Bolus
+ Desbloquear ajustes
+ Biométrico
+ Contraseña personalizada
+ Sin protección
+ Protección
+ ¡La contraseña maestra no está configurada!\n\nPor favor, configure su contraseña maestra en Preferencias (%1$s → %2$s)
+ No es seguro volver atrás
+ Para ser eficaz, la protección biométrica necesita una contraseña maestra establecida para el respaldo.\n\nPor favor, establezca una contraseña maestra!
+ ¡Contraseña establecida!
+ Contraseña no establecida
+ Contraseña no cambiada
+ ¡Contraseña borrada!
+ Introducir contraseña aquí
+
diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml
index b7498bed57..08d7d3de0b 100644
--- a/app/src/main/res/values-es-rES/strings.xml
+++ b/app/src/main/res/values-es-rES/strings.xml
@@ -12,13 +12,10 @@
Restablecer las bases de datos¿Realmente quiere restablecer las bases de datos?Salir
- Usar bolos extendidos para >200%%
- Dispositivo Bluetooth DanaRUsar siempre valores basales absolutosPor favor reinicia el teléfono o AndroidAPS desde ajustes de sistema, sino AndroidAPS no guardará registros (importante para trazar y verificar que el algoritmo funcione correctamente)Este dispositivo no parece soportar la optimización de la batería por los ajustes - pueden ocurrir problemas de funcionamiento.Algunos botones para acceder rápidamente a funciones comunes
- Insertar notas de registro avanzadas.Utilizado para configurar complementos activosPrograma de aprendizajeMuestra los ajustes preestablecidos de alimentos definidos en Nightscout
@@ -36,13 +33,10 @@
Proporciona el perfil definido en NightscoutDefinir un perfil con un solo bloque de tiempo.Integración de bombas de insulina Accu-Check Combo, necesita tener ruffy instalado
- Integración de bombas de insulina de DANA Diabecare R
- Integración de bombas de insulina domésticas de DANA Diabecare R
- Integración para bombas de insulina DANA Diabecare R con el firmware actualizado
- Integración de bombas de insulina de DANA Diabecare RSIntegración de bomba de insulina para personas que usan varias inyecciones diarias para su terapia de diabetesIntegración para bombas de insulina que aún no tienen ningún controlador/driver (lazo abierto)Sensibilidad calculada de la misma manera que Oref0, pero puede especificarse el rango de tiempo. Absorción de carbohidratos mínima se calcula con el máximo tiempo de absorción de carbohidratos en preferencias.
+ La sensibilidad se calcula con las últimas 8 h y los carbohidratos (si no son absorbidos) se anulan después del tiempo indicado en preferencias. El complemento también calcula UAM.La sensibilidad se calcula como un promedio ampliado de las desviaciones. Desviaciones más recientes tienen mayor impacto. Absorción de carbohidratos mínima se calcula desde el tiempo de absorción de carbohidratos máximo en preferencias. Este algoritmo es el más rápido siguiendo los cambios de sensibilidad.Recibir los valores de glucosa de la aplicación Eversense parcheada.Recibir valores de glucosa de Glimp.
@@ -53,13 +47,6 @@
Usar tu reloj WearOS para observar y controlar AndroidAPS.Mostrar información sobre tu lazo en tu esfera xDrip+.Control remoto de AndroidAPS mediante comandos SMS.
- Unidades
- DIA (Duración Insulina Activa)
- IC (Ratio Insulina/Carbohidratos)
- ISF (Factor Sensibilidad Insulina)
- Dosis Basal
- Objetivo
- NINGÚN PERFIL ACTIVOInsulina:Carbohidratos:IOB (Insulina Activa):
@@ -75,15 +62,9 @@
OTCarbohidratosCorrección
- UdsBolo IOBEjecutar ahoraBOMBA VIRTUAL
- Dosis Basal Base
- Basal Temporal
- Bolo extendido
- Batería
- DepósitoOkÚltima acciónParámetros de entrada
@@ -95,16 +76,11 @@
ResultadoResultado: %1$s %2$ssNo hay disponibles datos de glucosa
- Ninguna acción requeridaSolicitud
- Dosis
- Duración
- MotivoGlucosaVariaciónVariación:Tabla de configuraciones
- ObjetivosInicioPerfil NSPerfil simple
@@ -122,7 +98,6 @@
Ajustes generalesComplementos genéricos que pueden serte útiles.¿Qué restricciones se aplican?
- díasRestriccionesLazoLazo
@@ -131,25 +106,19 @@
Tras procesar las restriccionesBasal temporal en la bombaÚltima aceptada
- Ok
- CancelarNO APS Seleccionado o resultado entregadoSeguridadComplemento desactivadoViolación restriccionesError de administración del bolo
- Basal Temporal no emitidaValor basal [%]Aceptar nueva basal temporal:TratamientoCalculadoraRestricción aplicada!
- Confirmación
- BoloBolo:Dosis BasalDosis Basal:
- Carbohidratos¡Cambiar datos!Origen BG¿De donde debe AndroidAPS obtener sus datos?
@@ -157,34 +126,17 @@
Modo APSLazo cerradoLazo abierto
+ Suspensión por glucosa bajaLazo InactivoDesactivar lazoActivar lazoNueva propuesta disponible
+ Sugerencia de carbohidratosVersión no aceptada de NightscoutLOOP DESACTIVADO POR RESTRICCIONESBasal IOBRestricción aplicada en boloRestricción aplicada en carbohidratos
- MEDIR GLUCOSA
- ANUNCIO
- NOTA
- Pregunta
- Ejercicio
- Cambio Lugar Bomba
- Insertar sensor
- Iniciar sensor
- Cambio Cartucho insulina
- Cambio de perfil
- Bolo de aperitivo
- Bolo de comida
- Bolo de corrección
- Combo bolo
- Basal Temporal Inicio
- Basal Temporal Fin
- Corrección Carbohidratos
- OpenAPS sin conexión
- Tipo de eventoOtroMedidorSensor
@@ -212,28 +164,33 @@
Archivo no encontradoExportar ajustesImportar ajustes
- Max U/h para el perfil base
+ Max U/h para la basal temporalEste valor es llamado max basal en OpenAPSMax IOB basal que OpenAPs puede emitir [U]Este valor es llamado Max Iob en el OpenAPS\nEsta es la máxima insulina en [U] que APS puede entregar a la vez.
- DESCARTARSe le solicitará la contraseña maestra, que se utilizará para cifrar las preferencias exportadas.Se le solicitará la contraseña maestra, que es necesaria para descifrar las preferencias importadas.¡Exportación cancelada! ¡Las preferencias NO se han exportado!¡Importación cancelada! ¡Las preferencias NO se han importado!
+ Seleccionar fichero para importarPor favor, compruebe las preferencias antes de importar:¡Las preferencias no se pueden importar!¡Las preferencias no se deben importar!Explicar problemas de importación…
+ Importar Detalles del problemaImportarImportar de todos modos (¡PELIGROSO!)
+ Las preferencias se han creado con distinta versión de AAPS (%1$s), la versión instalada es: %2$s.\n\nAlgunos valores pueden faltar o no ser válidos después de importar, por favor, compruebe y actualice sus preferencias.Las preferencias se han creado en un dispositivo distinto. Está bien si va a importar desde un teléfono más antiguo/diferente, pero ¡asegúrese de que las preferencias importadas son correctas!¡Estás usando el obsoleto formato heredado de versiones antiguas de AAPS, que no es seguro! Únicamente utilizarlo como último recurso, si no tiene una exportación en formato JSON actual.Las preferencias importadas ya tienen %1$s días! ¿Tal vez tengas preferencias más actualizadas o eligiste el archivo equivocado? ¡Recuerda exportar las preferencias regularmente!¡Formato de fecha no válido!
+ Preferencias de una versión menor de la aplicación. Está bien si va a importar después de la actualización, pero ¡compruebe después de la importación si las preferencias siguen siendo correctas!
+ Preferencias de la versión principal distinta de la aplicación. ¡Las versiones principales difieren significativamente y pueden tener preferencias incompatibles! ¡Asegúrese de que, después de importar, las preferencias siguen siendo correctas!Formato del archivoCreado elVersión de AAPS
+ Construir VarianteExportar el nombre del paciente del dispositivoExportar modelo de dispositivoEncriptación de archivos
@@ -243,38 +200,26 @@
Formato de exportación desconocidoArchivo de configuración alteradoEl archivo de configuración es seguro
+ Uso no seguro, sin cifrar del formato de configuración
+ Error de formato JSON, falta campo necesario (formato, contenido, metadatos o seguridad)Error de descifrado, la contraseña proporcionada no puede descifrar el archivo
+ Falta el archivo de la suma de comprobación (hash), ¡no se puede verificar la autenticidad de configuración!¡El archivo se ha modificado tras la exportación!Error de descifrado, ¡el análisis de las preferencias ha fallado!
+ Error de descifrado, ¡la contraseña proporcionada no es válida o se ha modificado el archivo de ajustes! Puede suceder que el archivo importado se haya exportado con una contraseña maestra distinta.
+ Falta la configuración de cifrado, ¡el formato configuración no es válido!¡Algoritmo de cifrado no soportado o no especificado!
- DanaR
- Conectando
- Conectado
- Desconectado
- Ajustes de la bomba Dana
+ exportado hoy
+ exportado hace %1$s
+ exportado en %1$s
+ exportado hace menos de una hora
+ en el directorio: %1$sAcuerdo de licencia de usuario finalNO DEBE UTILIZARSE PARA TOMAR DECISIONES MÉDICAS. NO HAY NINGUNA GARANTÍA PARA EL PROGRAMA, EN LA MEDIDA PERMITIDA POR LA LEY APLICABLE. EXCEPTO CUANDO SE INDIQUE LO CONTRARIO POR ESCRITO, LOS TITULARES DE LOS DERECHOS DE AUTOR Y/O OTRAS PARTES PROPORCIONAN EL PROGRAMA \"TAL CUAL\" SIN GARANTÍA DE NINGÚN TIPO, YA SEA EXPRESA O IMPLÍCITA, INCLUIDAS, ENTRE OTRAS, LAS GARANTÍAS IMPLÍCITAS DE COMERCIABILIDAD Y ADECUACIÓN PARA UN PROPÓSITO EN PARTICULAR. TODO EL RIESGO EN CUANTO A LA CALIDAD Y EL RENDIMIENTO DEL PROGRAMA ES SUYA. SI EL PROGRAMA TUVIERA UN ERROR, USTED ASUME EL COSTE DE TODO SERVICIO, REPARACIÓN O CORRECCIÓN NECESARIOS.ENTIENDO Y ACEPTOGuardar
- No se encuentra adaptador Bluetooth
- El dispositivo seleccionado no se encuentra
- Error de conexión de la bomba
- Bomba IOB
- Unidades diarias
- Último bolo
- Hace %1$.1fh
- Datos inválidos
- Valor no establecido correctamenteRecargar Perfil
- Ver perfil
- Aprobado
- Comentario
- Correcto
- Porciento
- Absoluto
- Cancelar basal temporalComunicador SMS
- Esperando resultadoNúmeros de teléfono permitidosXXXXXXXXXX +; + YYYYYYYYYYPara entregar bolo %1$.2fU responder con código %2$s
@@ -295,60 +240,24 @@
Objetivo %1$s para %2$d minutosObjetivo %1$s para %2$d minutos establecido correctamenteObjetivo temporal cancelado con éxito
- Infundiendo %1$.2fUPermitir comandos remotos vía SMS
- Dedo
- Sensor
- Manualmente
- Objetivo temporal
- Cancelar Objetivo temporalConfiguración perfil DanaRTiempo de acción de la insulina [h]Duración de actividad de insulina
- No se pudo actualizar el perfil basal
- RecargarSubiendo
- E bolo
- bolo DS
- DE bolo
- error
- rellenar
- basal hora
- glucosa
- carbohidratos
- alarma
- Total %1$d registros cargados
- S bolo
- Alarmas
- Basal Horas
- Bolos
- Carbohidratos
- Insulina Diaria
- Errores
- Glucosa
- Rellenar
- Suspender
- Conexión por %1$d s
- Contraseña de la bomba
- ¡Contraseña de la bomba incorrecta!
- Bomba ocupada
- Entregado
- DetenidoBolo interrumpidoDeteniendo bolo
- Oclusión
- Detener
- DETENER PULSADO
- Esperando bomba
- Se van a infundir %1$.2fU
- Alcanzado el límite permitido
- Sin perfil seleccionadoLazo se ha desactivadoLazo se ha activadoLazo inactivoLazo activo%1$.2f limitado a %2$.2fEl valor %1$s está fuera de límites
+ Para conectar la infusora responder con el código %1$s
+ Error al conectar a la bomba
+ Para desconectar la bomba durante %1dminutos responde con el código %2$s
+ Bomba desconectada
+ Bomba reconectadaComando remoto no permitidoEl bolo remoto no está disponible. Inténtalo de nuevo más tarde.Para iniciar una basal de %1$.2fU/h durante %2$d min, responder con el código %3$s
@@ -357,6 +266,9 @@
Para introducir %1$dg en %2$s responder con código %3$sPara iniciar una basal de %1$d%% durante %2$d min, responder con el código %3$sPara cancelar lazo por %1$d minutos responde con código %2$s
+ Para retomar el lazo responder con código %1$s
+ Para activar el lazo responder con código %1$s
+ Para desactivar el lazo responder con código %1$sBasal temporal %1$.2fU/h para %2$d min iniciada correctamenteBolo ampliado de %1$.2fU durante %2$d min se inició correctamenteLos carbohidratos %1$dg introducidos con éxito
@@ -382,22 +294,18 @@
Bolo ComidaCorrecciónAcciones
- AndroidAPS iniciadoNS solo subida (sinc. inactiva)NS solo subida. No efectivo con SGV salvo que este seleccionada una fuente local como xDrip. No efectivo en perfiles usando perfiles NS.¡Bomba no iniciada!
- Bomba no iniciada, ¡perfil no ajustado!Rellenar/Llenar¡Por favor asegurar que la cantidad coincide con la especificación del set de infusión!Otros
- Llenar/Rellenar cantidad de insulina estándar.
+ Llenar/Rellenar cantidad de insulina estándarBotón 1Botón 2Botón 3Unidades:Unidades
- mg/dl
- mmol/lTiempo de acción de la insulinaRango Objetivo:Rango de visualización
@@ -407,17 +315,7 @@
RelojReenviar todos los datosAbrir ajustes en reloj
- Error en bomba
- Batería Baja
- Apagar Bomba
- Batería de la bomba descargada
- DanaR KoreanRatio Basal:
- Error al activar perfil basal
- Perfil basal actualizado en bomba
- Inhabilitar modo EasyUI en bomba
- Habilitar bolos extendidos en bomba
- Cambio de modo de U/d a U/h en bombaValor Basal por debajo del mínimo. Perfil NO aplicado!BG:Último BG:
@@ -425,7 +323,6 @@
MM640gAvisos permanentesDATOS CADUCADOS
- %1$d min anteshace %1$d minPerfil LocalOpenAPS AMA
@@ -441,41 +338,22 @@
HipoActividadEliminar registro
- Estadísticas de DanaR
- TDD acumulativa
- TDD ampliada exponencialmente
- Basales
- Bolo
- Dosis diaria
- Fecha
- Ratio
- # Días
- Peso
- Probablemente impreciso si se usan bolos para llenar/rellenar!
- Datos caducados por favor pulsa RELOAD
- Basal total
- Basal diaria *2
- Inicializando...ACCCONFLAZOPERFSIMOAPSPERFLOC
- DANAINICIOBOMBAVNSPERFTRAT
- CPOBJRELOJSMSTítulo corto en pestañaUsa siempre delta media corto en vez de delta simpleÚtil cuando los datos de fuentes sin filtrar como los de xDrip son inestables.
- Ajustes avanzados
- Modelo: %1$02X Protocolo: %2$02X Codigo: %3$02XPerfilesValor predeterminado: 3 Esta es una protección de seguridad en OpenAPS. Lo que esto hace es limitar tus basales a 3x (en este caso) tu mayor índice basal. Probablemente no necesites cambiar esto, pero debes tener en cuenta las discusiones sobre \"3x max diaria; 4x actual\" para protecciones de seguridad.Ajuste pro defecto: 4 Esto es la otra mitad de los ajustes de seguridad de OpenAPS y la otra mitad de la protección de seguridad de \"3x max diaria, 4x actual\". Esto significa, que tu basal, independientemente de tu máxima basal ajustada en la bomba, no puede ser mas alta que este número de veces el actual nivel de basal. Esto es para evitar que las personas se encuentren en situaciones peligrosas por aumentar mucho la basal sin entender como trabaja el algoritmo. El ajuste por defecto es 4x; la mayoría de las personas nunca tendrá que cambiar estos ajustes, sino que debe modificar otros ajustes en la terapia si se encuentran cerca de este límite de seguridad.
@@ -494,18 +372,9 @@
Calibración enviada. La recepción debe estar habilitada en xDrip.xDrip no recibe calibracionesBomba parada
- Recibir estado de bomba
- Ajustando basal temporal
- Parando basal temporal
- Iniciando bolo extendido
- Parando bolo extendido
- Actualizando dosis basales
- DesconectandoEjecutandoAjustes bomba virtualSubir estado a NS
- Contraseña incorrecta
- Alcanzando el limite de insulina diarioNSClientNSCIURL:
@@ -529,7 +398,7 @@
Mostrar detalles IOBSeparar IOB en bolo y base en el relojsin efecto - por favor verificar en móvil
- No disponible
+ n/aEdad pacienteMenor de edadAdolescente
@@ -565,8 +434,6 @@
SuperboloRegistrar el inicio de la aplicación en NSSaliendo de la aplicación para aplicar ajustes.
- DanaRv2
- Insulina¿Qué tipo de insulina está utilizando?Insulina acción rápidaNovorapid, Novolog, Humalog
@@ -575,15 +442,26 @@
Activar superbolo en asistenteActivar función superbolo en asistente. No lo actives hasta que hayas aprendido lo que realmente hace. ¡PUEDE CAUSAR SOBREDOSIS DE INSULINA usándolo sin precaución!Mostrar luces de estado en la pantalla de inicio
+ Umbral de advertencia de la edad de la cánula [h]
+ Umbral crítico de la edad de la cánula [h]
+ Umbral de advertencia de la edad de la insulina [h]
+ Umbral crítico de la edad de la insulina [h]
+ Umbral de advertencia de la edad del sensor [h]
+ Umbral crítico de la edad del sensor [h]
+ Umbral de advertencia de nivel de pila [h]
+ Umbral crítico de nivel de batería [h]Umbral de advertencia de nivel de reservorio [U]Umbral crítico de nivel de reservorio [U]Umbral de advertencia de nivel de pila [%]Umbral crítico de nivel de batería [%]
+ PREDIOBCOB
- Firmware
- Última conexión
- Estado de bluetooth
+ BAS
+ DEV
+ ACT
+ ABS
+ DEVSLOPEAcerca deFalta permiso SMSFalta permiso de estado del teléfono
@@ -594,24 +472,15 @@
Agregar BGI a línea de estadoDatos no mandados a NSTodos los datos mandados a NS son borrados. AAPS esta conectado a NS pero no hay cambios en NS
- Nivel base
- Nivel boloCancelar bolo extendidoEdad sensorEdad cánulaEdad insulina
- horas
- Perfil invalido !!!Cambio de perfilEdad batería bomba
- Cambio batería bombaOpciones alarma
- Urgente alto
- Alto
- Bajo
- Urgente bajo
- Datos anticuados
- Datos antiguos urgentes
+ Crear notificaciones de alarmas NS
+ Crear notificaciones de avisos de NSDatos antiguos limite [min]Datos antiguos urgentes limite [min]Intervalo para autosens [h]
@@ -628,7 +497,6 @@
Ajustes absorciónTiempo max absorción comida [h]Tiempo en horas en el que se espera que todos los carbohidratos hayan sido absorbidos
- Visualizar el bolo extendido como %%SAGEIAGECAGE
@@ -653,7 +521,6 @@
BOMBADuración [min]OpenAPS SMB
- SMBActivar UAMActivar SMBUsar Super Micro Bolus en lugar de Basal Temporal para una acción más rápida
@@ -665,23 +532,7 @@
Ultra-Rapid OrefDIA de %1$f demasiado corto - usando %2$f!ACTIVAR PERFIL
- FechaINVALIDO
- Esperando para conectar con bomba
- Conexión OK
- Tiempo de Vinculación agotado
- Emparejando
- Aparato no encontrado
- Deposito vacío
- Alerta de control de BG
- Insulina restante en deposito
- DanaRS
- Dana
- Bomba seleccionada
- Conectar bomba nueva
- Velocidad bolo
- Ajustar paso basal a 0.01 U/h
- Número de seriePorcentajeCambio de tiempoObjetivo temporal por defecto
@@ -691,32 +542,18 @@
objetivo actividadDuración HipoObjetivo Hipo
- Cebado
- Recibiendo estado de bolo extendido
- Recibiendo estado bolo
- Recibiendo estado bolo temporal
- Recibiendo ajustes bomba
- Recibiendo hora bombausar otra vezControl desde relojEditar y emitir objetivos temp. y tratamientos desde reloj.
- Fuera tiempo conexiónComidag
- m
- h
- d]]>kJEnPrGrasa]]>
- Esperando terminar bolo. Faltan %1$d seg.
- Procesando evento
- Iniciando emisión boloOrden se esta efectuando en este momento
- Control de la bomba corregidoBomba no alcanzableFaltan lecturas BGUsa avisos del sistema para alarmas y avisos
@@ -724,11 +561,9 @@
Alarma si no llegan datos BGAlarma si bomba no es alcanzableBomba no alcanzable durante [min]
+ Alerta si se necesitan carbohidratosAlarma urgenteINFO
- Bluetooth
- Vigilante de BT
- Apaga el bluetooth del móvil por un segundo si no hay conexión con la bomba. Esto ayuda con algunos móviles con problemas de establecer conexión bluetooth estable.Eversense App (parcheada)Subir datos BG a NSAjuste de subida de datos de glucosa
@@ -739,13 +574,11 @@
Minutos máximos de basal para limitar SMBMinutos máximos de UAM SMBMinutos máximos de basal para limitar SMB para UAM
- Umbral de sugerencia de Carbohidratos
- Firmware de la bomba no soportado
+ Carbohidratos mínimos necesarios para la sugerencia
+ Gramos mínimos de carbohidratos para mostrar una alerta de sugerencia de carbohitratos: las sugerencias de carbohidratos debajo de este número no iniciarán una notificación.Mandar datos BG a xDrip+En xDrip+ elige 640g/Eversense como fuente de datosNSClient BG
- Valor basal reemplazado por el valor mínimo soportado: %1$s
- Valor basal reemplazado por el valor mínimo soportado: %1$sCálculo BGCálculo bolo IOBCálculo basal IOB
@@ -763,8 +596,6 @@
Lazo cerrado activadoMáximo IOB ajustado correctamenteBG disponible desde la fuente seleccionada
- Valores basales no alineados a las horas: %1$s
- Perfil inválido: %1$sProgramando bomba para emitir boloActualizarEstado
@@ -785,7 +616,6 @@
Un bolo de mismo valor ha sido dado durante el pasado minuto. Para evitar bolos dobles y prevenir fallos de programa esto no está permitido.AhoraLeyendo historia bomba
- Historial de la bombaActivando perfil baseNivel del depósito bajoBatería casi agotada
@@ -804,8 +634,8 @@
Error al emitir bolo extendidoSighthace
- %1$.2f h
- %1$d min
+ Establecer basales temporales neutras
+ Si está activado, cancelará un basal temporal antes del final de cada hora. Este método puede ayudar a evitar que algunas bombas pitan/vibran al final de la hora.Habilitar SMB siempreHabilitar SMB siempre de forma independiente a los Bolos. Solo posible con fuente BG con buen filtrado de datos como G5Habilitar SMB después de Carbohidratos
@@ -815,9 +645,6 @@
Habilitar SMB con Objetivos TemporalesHabilitar SMB cuando hay un Objetivo Temporal (TT) activo (ComerPronto, Actividad)Habilitar SMB con Objetivo Temporal Alto
- Habilitar SMB cuando hay un Objetivo Temporal (TT) ALTO activo (Actividad)
- Dejar Basal Temporal correr
- SilenciarInsulinaCarbohidratosBotones
@@ -827,11 +654,17 @@
Cantidad de insulina que se agrega cuando se presiona el botónNo se pudo iniciar la aplicación CGM. Asegúrate de que está instalada.CGM
+ Ignorar 5m
+ Ignorar 15m
+ Ignorar 30m
+ reqHistorialNotificar SMBMostrar SMB en el reloj como un bolo estándar.Crear notificaciones de los errores
+ Crear mensajes de alertas de carbohidratos necesariosCrear notificaciones en Nightscout para diálogos de error y alertas locales (también visibles en Careportal en Tratamientos)
+ Crear mensajes de Nightscout para las alertas de carbohidratos necesariosMostrar predicciones en el relojPrediccionesOpciones de datos
@@ -845,7 +678,6 @@
No administrar Bolo, solo anotarCategoríaSubcategoría
- El Bolo sólo será anotadoRellenar BGs perdidos desde NSSMB administrado por bombaActividad
@@ -859,7 +691,6 @@
Ejecutando versión dev. Lazo cerrado no disponible.Modo de ingeniería activadoModo de ingeniería no está activado y no disponible en esta rama
- %1$.2f U/hLeyendo perfil basalEl historial de la bomba ha cambiado después de que se realizó el cálculo del bolo. El bolo no fue entregado. Por favor, vuelva a calcular si aún se necesita un bolo.El bolo se administró con éxito, pero falló la incorporación de la entrada del tratamiento. Esto puede suceder si se administran dos bolos pequeños del mismo tamaño en los últimos dos minutos. Verifique el historial de la bomba y las entradas de tratamiento y use el portal de tratamientos para agregar entradas faltantes. Asegúrese de no agregar ninguna entrada para el mismo minuto exacto y la misma cantidad.
@@ -882,15 +713,10 @@
SMB deshabilitado en preferenciasUAM, comidas no previstas, no habilitadas en las preferenciasUAM deshabilitado al usar el plugin de sensibilidad Oref1
- Limitando max basal rate a %1$.2f U/h debido a %2$s
- límite de la bomba
- tiene que ser un valor positivoMultiplicador basal máximoMultiplicador diario basal máximoUn Bolo ha sido entregado en los últimos 3 minutos, omitiendo SMBBasal establecida correctamente
- Limitando porcentaje máximo de dosis a %1$d%% debido a %2$s
- Limitando el bolo a %1$.1f U debido a %2$sLimitando el bolo extendido a %1$.1f U debido a %2$sLimitando max IOB a %1$.1f U debido a %2$sLimitando carbohidratos a %1$d g debido a %2$s
@@ -905,7 +731,6 @@
SMB no permitido en modo de lazo abiertoComidareestablecer
- Esperando para sincronización de tiempo (%1$d sec)Desconectado (%1$d m)Máximo IOB total que OpenAPS no puede superar [U]Este valor se denomina IOB máx. En el contexto de OpenAPS\nOpenAPS no agregará más insulina si el IOB actual es mayor que este valor
@@ -921,7 +746,6 @@
Asistente de configuraciónFINALIZARSelecciona tu idioma
- Solicitado: %1$.2fU Entregado: %2$.2fU Código de error: %3$sPrimer incremento insulinaSegundo incremento insulinaTercer incremento insulina
@@ -944,7 +768,6 @@
Bomba virtualDefinición de la bombaBolo: Paso =%1$s\nBolo Extendido: [paso =%2$s, duración =%3$smin -%4$sh] \nBasal: paso =%5$s\nTBR: %6$s ( %7$s), duración =%8$smin -%9$sh\n%10$s
- * Sólo se soportan valores discretos, no rangos, como entrada de datos para basal/bolo en la bomba virtual.Auto Rellenar mediciones perdidasConfiguración del AsistenteCálculos incluidos en el resultado del asistente:
@@ -969,27 +792,11 @@
Comienza tu primer objetivoPermisoPedir permiso
- La aplicación necesita permiso de localización para el escaneo de BT
- La aplicación necesita permiso para guardar los logs
+ La aplicación necesita permiso de ventana del sistema para las notificaciones
+ La aplicación necesita permiso de ubicación para la exploración de BT e identificación de WiFiSolicitarConfigurar complemento de insulinaSalir
- Opciones de usuario
- Mostrar formato de tiempo
- Botones de desplazamiento
- Señal sonora de pulsación
- Alarma
- Sonido
- Vibrar
- Ambos
- Tiempo de encendido de LCD [seconds]
- Tiempo de luz fondo encendida [seconds]
- Unidades de glucosa
- Apagar [hours]
- Depósito bajo [Units]
- Guardar las opciones en la bomba
- Activado
- DesactivadoAbrir navegaciónCerrar navegaciónPreferencias del complemento
@@ -1003,11 +810,12 @@
= 100]]>Objetivo temporal bajo reduce sensibilidad
+ Resistencia baja objetivo
+ Cuando se detecta resistencia, se baja el objetivo de glucosaSensibilidad aumenta objetivo
+ Cuando se detecta sensibilidad a insulina, aumenta el objetivo de glucosaConfiguración de la bomba incorrecta, leer la documentación y comprobar que el menú de Quick Info se llama QUICK INFO usando el software de configuración 360.Personalizado
- Diferencia de tiempo grande
- Gran diferencia de tiempo: \nLa bomba esta desincronizada más de 1,5 horas. \npor favor ajusta la hora manualmente en la bomba y asegúrate de que la lectura del histórico de la bomba no causa comportamiento inesperado. \nSi es posible, borra la historia de la bomba antes de cambiar la hora o desactiva el lazo cerrado durante un DIA (duracion insulina activa) después de la última entrada errónea del histórico pero mínimo un DIA a partir de ahora.Limpiar eventos AndroidAPS iniciadoAjustes guardados encontradosAtención: si activas y conectas al hardware de la bomba, AndroidAPS copiará los ajustes basales del perfil de la bomba, sobrescribiendo el actual perfil basal de la bomba. Comprueba que tengas el perfil basal correcto en AndroidAPS. Si no estás seguro o no quieres sobrescribir los ajustes basales en la bomba, presiona cancelar y repite cambio de la bomba más tarde.
@@ -1033,17 +841,10 @@
Modo preferido de APSTotalCálculo
- De acuerdoEnviar los archivos de registro de hoy a los desarrolladores. Situación inesperada.
- Violación de bolo Max
- Error de comando
- Error de velocidad
- Violación del límite de insulinaValor mínimo de cambio [%]El lazo abierto sólo mostrará una demanda de cambio si el cambio es mayor a este valor. El valor predeterminado es el 20 %
- Por favor, empareje su bomba con su teléfono!Buscando dispositivos…
- Por favor, espere…Sincronización completada¿Coinciden los códigos mostrados en este dispositivo y en su infusor?Insight sincronizada
@@ -1063,6 +864,10 @@
Registro de alarmasActivar emulación de dosis basal temporalUsa bolos extendidos en lugar de TBRs para pasar por alto el límite de 250%%
+ Desactivar vibraciones en la administración manual del bolo
+ Para bolo y bolo extendido (sólo disponible con el firmware de Insight 3.x)
+ Desactivar vibraciones en la administración automática del bolo
+ Para SMB y basal temp. con la emulación TBR (sólo disponible con el firmware de Insight 3.x)Desconectar el retraso [s]Número de serieVersión de software
@@ -1132,7 +937,6 @@
es igual o mayor quees mayor queno está disponible
- desconocidoEl valor de glucosa no está disponibleGlucosa %1$s %2$.0f %3$sGlucosa %1$s %2$.1f %3$s
@@ -1149,23 +953,10 @@
AutoAutomatización== ∑%1$s U
- U/h
- g/U
- /URegistro de cambio de sensor a NSCrear evento \"Cambio sensor\" en la automatización NS al iniciar el sensorTomato (MiaoMiao)Tomato
- segundo
- minuto
- hora
- día
- semana
- segundos
- minutos
- horas
- días
- semanasTu nombre de usuario de Tidepool, normalmente tu dirección de correo electrónicoNombre de usuarioTu contraseña de acceso a Tidepool
@@ -1192,7 +983,6 @@
Hora de RepeticiónCadaNunca
- %1$dminutosCondición:Acción:IOB (Insulina a Bordo) [U]:
@@ -1208,7 +998,6 @@
versión muy antiguaNueva versión desde al menos %1$d dias disponible! Respaldo a LGS después de %2$d días, se deshabilitará el lazo después de %3$d días2h
- %1$.2fUDexcomG App (parcheada)DXCMRecibir valores de glucosa de la app parcheada de Dexcom.
@@ -1253,141 +1042,6 @@
Activadores:ELIMINARPrecondiciones:
-
- Operación no soportada por bomba y/o controlador.
- Operación no soportada todavía por la bomba.
-
- Integración de Bomba para Medtronic, requiere dispositivo RileyLink y modelo específico de Bomba
-
- Número de serie de la Infusora
- Tipo de Infusora
- Frecuencia de la Infusora Medtronic
- Retraso antes de que el bolo se inicie (s)
- Bolo máximo en infusora (U)
- Máxima Basal en Infusora (U/h)
- Codificación de Medtronic
- US & Canadá (916 MHz)
- A nivel mundial (868 Mhz)
- Codificación de software 4b6b
- Codificación de hardware 4b6b
- Encender y ajustar
- Borrar el bloque de bolo
- Restablecer configuración de RileyLink
- Tipo de batería (Vista de energía)
- No seleccionado (Vista simple)
- Alcalina (vista extendida)
- Litio (vista extendida)
- NiZn (vista ampliada)
- NiMH (vista extendida)
- Bolos/Depuración de Tratamientos
-
- ESCANEAR
- DETENER
- Seleccionado
- Escaneo de RileyLink
- Bluetooth de baja energía no soportado.
- Bluetooth no activado.
- La ubicación no está habilitada
- Para activar la visibilidad Bluetooth en nuevos dispositivos, la ubicación debe estar habilitada. AAPS no hace un seguimiento de su ubicación y se puede desactivar después de la realizada la vinculación.
- Habilitar
- No
- Buscando
- Búsqueda Finalizada
- Error de escaneo: %1$d
-
- Configuración
- Historico
- Estado RileyLink
- Estado de Infusora
- Ajustes de RileyLink
- RileyLink
- Dirección configurada
- Dispositivo conectado
- Estado de la conexión
- Error de conexión
- Dispositivo
- Tipo de dispositivo
- Modelo del dispositivo
- Última frecuencia usada
- Último contacto del dispositivo
- Firmware RL
-
- Inicializando Bluetooth…
- Error Bluetooth
- Bluetooth listo
- No iniciado
- Inicialización de RileyLink…
- Error de RileyLink
- Configurando RileyLink y la bomba
- Problema al conectar con la infusora
- Conectado
-
- El dispositivo no es un RileyLink
- RileyLink no accesible
- Bluetooth está desactivado
- No hay adaptador Bluetooth
- Error al configurar
- Infusora no alcanzable
- Infusora no alcanzable
- Sin configurar
-
- Infusora Medtronic
- Omnipod
-
- Errores
- Nº serie no establecido.
- Número de serie no válido.
- Tipo de infusora no establecido.
- Tipo de infusora no soportado.
- No se ha establecido la frecuencia de la infusora.
- Frecuencia de la infusora no soportada.
- Dirección de RileyLink no válida.
- El tipo de infusora detectado no es el mismo que el tipo configurado.
- Los perfiles de basal/valor de los patrones no están activados en la bomba. Actívalos en la bomba.
- El perfil basal establecido en la infusora es incorrecto (debe ser estándar).
- Tipo incorrecto de basal temporal en la infusora (debe ser Absoluto).
- Valor máximo incorrecto configurado en la infusora (debe ser %1$.2f).
- Error en el valor máximo de basal configurado en la infusora (debe ser %1$.2f).
- La operación no es posible.\n\n Necesitas configurar primero la infusora Medtronic, antes de poder usar esta operación.
- Se ha solicitado un cambio de hora de más de 24h.
-
- Dosis Basales
- Ajustes
- Notificaciones
- Estadísticas
- Desconocido/a
- Todos
- Historial de la infusora Medtronic
-
- Nunca conectados
- En fase de inicio
- Error con la comunicación
- Tiempo de espera en la comunicación
- Infusora no alcanzable
- Configuración no válida
- Activo
- Suspendida
-
- Has cancelado el bolo después de que ya estaba enviado a la infusora. Debido a que la infusora Medtronic no soporta comando cancelar, tendrás que cancelarlo manualmente. Pon la infusora en modo suspender y luego reinicia (si todavía quieres cancelar). La aplicación recogerá los cambios en la próxima actualización (en menos de 5 minutos).
- No se pudo leer la basal temporal actual.
- No se pudo cancelar la basal temporal actual. Detener la operación.
- El perfil no se pudo activar debido a que los siguientes patrones tienen una basal demasiado grande: %1$s
- No se pudo entregar el bolo.
- El bolo no pudo ser entregado porque la cantidad de insulina disponible (%1$.2f) es inferior al bolo solicitado (%2$.2f).
- La basal temporal no se ha podido activar.
- No se pudo cancelar la basal temporal actual.
- No se pudo establecer el perfil de basal.
- El perfil basal es el mismo, por lo que no será establecido de nuevo.
- Recuperar el historial - Página %1$d (%2$d/16)
- Recuperar el historial - Página %1$d
- Obtener la hora de la infusora
- Obtener la configuración
- Obtener el modelo de la infusora
- Obtener el perfil basal
- Establecer el perfil basal
- Obtener la basal temporal
- Establecer la basal temporal
- Fijar BoloCambiar perfil aCambiar perfil a %1$sÚltima conexión con la bomba
@@ -1399,7 +1053,6 @@
%2$+.2fU]]>Restricción de bolo aplicada: %2$.2fU a %3$.2fU]]>! Se ha detectado una absorción lenta de hidratos de carbono: %2$d%% de tiempo. Compruebe de nuevo su calculo. Los COB se pueden sobrestimar, por lo que ¡se podría administrar más insulina de la cuenta!]]>
- %1$.0f/%2$dUAdministrar esta parte del resultado del asistente de bolos [%]El asistente de bolos realiza el cálculo, pero solo se entrega esta parte de la insulina calculada. Útil con el algoritmo SMB.Cargando...
@@ -1407,7 +1060,6 @@
Intervalo de tiempoEl tiempo está entre %1$s y %2$sEntre
- CerrarAumentar el valor basal máximo porque el ajuste es inferior a tu base máxima en el perfilEl cuerpo del mensaje es inválido%1$s ISF: %2$.1f
@@ -1425,8 +1077,8 @@
DesactivadoLimpieza finalizadaLimpieza iniciada
- Detección de tiempo¿Desea reiniciar el objetivo? Puedes perder tu progreso.
+ Cambio de hora y/o huso horario en la bombaNinguna bomba seleccionadaSeleccione las unidades en las que desea visualizar los valoresSubir cambios de perfil local a NS
@@ -1437,13 +1089,13 @@
ClonarGuardar o restablecer los cambios actuales primero¿Eliminar el perfil actual?
- ¿Crear un nuevo perfil local a partir de este conmutador de perfil?
+ ¿Crear un perfil local nuevo a partir de este perfil?El nombre de perfil contiene puntos.\nEsto no está soportado por NS.\nEl perfil no se carga en NS.Valor inferior del área de rango (sólo visualización)Valor superior al área de rango (sólo visualización)RepetirEdad:
- Peso:
+ Peso:ID:EnviarPerfil más común:
@@ -1451,10 +1103,8 @@
EncuestaEntrada de edad no válidaPeso no válido
- %1$s: ∑: %2$.2f Bol: %3$.2f Bas: %4$.2f]]>%1$s: Low: %2$02d%% In: %3$02d%% High: %4$02d%%]]>Promedio
- TDDTIRMonitor de actividad¿Desea restablecer las estadísticas de actividad?
@@ -1464,29 +1114,177 @@
BGHerramientasMostrar cálculo
- Error
- 12 h
- 24 hAutomatización de eventosSet listo
- Mensaje¿Borrar cola? ¡Se perderán todos los datos de la cola!El uso de la función de bolo extendido detendrá el modo de bucle cerrado durante el tiempo de ejecución del bolo extendido. ¿Realmente quieres esto?Bucle cerrado inhabilitado debido a la ejecución del bolo extendidoEB
+ \"Verificación de teléfono\"Menú gráficoASTiempo requerido de SMBTiempo de ejecución de SMB
+ Tiempo requerido para Basal temporal
+ Tiempo de ejecución para Temp Basal
+ Alertas de bomba Insight
+ de app de Autentificación a: %1$sHabilitar autentificador
+ Comandos de autentificación usando One Time Password de Google Autenticator o apps 2FA similar.
+ PIN adicional en token final
+ Los dígitos adicionales se deben memorizar y pegar al final de cada una de las contraseñas generadas por One Time PasswordConfiguración de autentificación
+ OTP para comprobar:
+ Restablecer autentificadores
+ Restablecer clave de autentificación¿Está seguro de que desea restablecer la clave del autenticador? Los autenticadores configurados actualmente no seran válidos, y tendrá que volver a configurarlos.¡Se ha generado una clave de autenticador nueva! Utilice QRCode actualizado para suministrar autenticadores.1. Instalar autenticador
+ 2. Escanea el código para instalar códigos AndroidAPS OTP
+ 3. Probar la contraseña de Uso únicoRestablecer autentificadores
+ En cada teléfono seguidor, instale la aplicación Authenticator que admita tokens RFC 6238 TOTP. Las aplicaciones gratuitas populares son:\n • Authy\n • Google Authenticator\n • LastPass Authenticator\n • FreeOTP Authenticator
+ NO COMPARTA este código en línea!\nUsa sólo para la instalación de la Aplicación google Authenticator en teléfonos seguidores.Al resetear el autenticador haces que todos los autenticadores ya provistos no sean válidos. ¡Necesitarás configurarlos de nuevo!Al conectarAl desconectarPredicciones
+ Pendiente de desviación
+ Ha fallado la autorización
+ Insulina en total
+ La contraseña maestra se usa para cifrar la copia de seguridad y para sustituir la seguridad en la aplicación. Recordar o almacenar en sitio seguro.
+ Contraseñas no coinciden
+ Contraseña maestra actual
+ Luces de estado
+ Copiar ajustes de NS
+ ¿Copiar los ajustes de NS (si existe)?
+ Tema original
+ Los botones siempre se muestran en la parte inferior de la pantalla
+ Pantalla grande
+ Tema
+
+ Nunca conectados
+ En fase de inicio
+ Error con la comunicación
+ Tiempo de espera en la comunicación
+ Infusora no alcanzable
+ Configuración no válida
+ Activo
+ Suspendida
+
+
+ La integración de la bomba para Omnipod requiere el dispositivo RileyLink (con al menos 2,0 firmware).
+
+ Aviso de bolo activado
+ Aviso de basal activado
+ Aviso de SMB activado
+ Aviso de TBT activado
+ Opciones de depuración de Pod habilitadas
+ Detección de DST/Timezone habilitada
+
+ Pod Mgmt
+ Estado de Pod
+ %1$.2f U restantes
+ Más De 50 U
+ Dirección de Pod
+ Pod Caduca
+ Sin info
+ Sin Pod conectado
+ No Inicializado
+ Alertas de Pod activas
+ Alertas Ack
+
+ Omnipod (433.91 MHz)
+
+ La operación no es posible.\n\nDebe configurar Omnipod primero, antes de poder usar esta operación.
+ La operación no es posible.\n\n Necesitas esperar unos minutos, hasta que AAPS intente establecer el perfil por primera vez.
+ Ilegal PodInitActionType: %1$s
+ Ningún pod activo.
+ Falló la verificación del comando.
+ Error inesperado. Por favor, informe! (tipo: %1$s).
+ Comunicación fallida: se han recibido parámetros de entrada inválidos.
+ Comunicación fallida: tiempo de espera.
+ La comunicación ha fallado: error inesperado. ¡Por favor, Informe!
+ Comunicación fallida: falló la verificación de integridad del mensaje.
+ La comunicación ha fallado: se ha recibido un paquete no válido del Pod.
+ La comunicación ha fallado: el Pod está en un estado incorrecto.
+ La comunicación ha fallado: se ha recibido una respuesta no válida del Pod.
+ Ha fallado la comunicación: se ha recibido un mensaje con un número de secuencia no válido del Pod.
+ La comunicación ha fallado: se ha recibido un mensaje con una dirección no válida desde el Pod.
+ La comunicación ha fallado: no se ha podido descodificar el mensaje del Pod.
+ La comunicación ha fallado: nonce resync ha fallado.
+ Comunicación fallida: nonce no sincronizada.
+ La comunicación ha fallado: no se han recibido suficientes datos del Pod.
+ Un error de Pod (%1$03d %2$s) se ha detectado. Por favor, desactive su Pod e inicie uno nuevo.
+ La comunicación ha fallado: el Pod ha devuelto una respuesta de error.
+
+ Administración de Pod
+ Iniciar Pod
+ Desactivar Pod
+ Restablecer Pod
+ Historial de Pod
+ Establecer Bolo
+ Cancelar Bolus
+ Establecer la basal temporal
+ Cancelar Basal Temporal (Internamente por controlador)
+ Cancelar Basal Temporal (forzado por el usuario)
+ Establecer Planificación Basal
+ Obtener estado de Pod
+ Obtener información de Pod
+ Establecer hora
+ Configurar alertas
+ Confirmar Alertas
+ Suspender la entrega
+ Reanudar la entrega
+ Entrada desconocida
+ %1$.1fU
+ %1$.1f U, CH=%2$.1f g
+ Tasa: %1$.1f U, Duración: %2$d min
+ Si pulsa OK, el estado de Pod se restablecerá por la fuerza y ya no podrá comunicarse con el Pod. Hágalo sólo si ya no puede comunicarse con el Pod. Si todavía puede comunicarse con el Pod, utilice la opción Desactivar Pod.
+ Historial del Pod no disponible en el momento.
+ Llenar el Pod
+ \nLlenar el nuevo Pod con suficiente insulina durante 3 días.\n\nEscucha dos pitidos del Pod durante el proceso de llenado. Esto indica que se ha insertado la cantidad mínima de 85U. Asegúrese de vaciar completamente la jeringa, incluso después de escuchar los dos pitidos.\n\nDespués de llenar el Pod, por favor pulse Next.\n\nNota: no retire el capuchón de la aguja del Pod en este momento.
+ Cebado
+ Intentando emparejar con el nuevo Pod y primarlo.\n\nCuando todos los elementos están marcados, puedes pulsar Siguiente.\n\nNota: por favor mantenga el Pod muy cerca del RileyLink en este momento.
+ Adherir el Pod
+ \nPreparar el sitio de infusión. Retire el capuchón de la aguja del Pod y el adhesivo y aplique el Pod al sitio de perfusión.\n\nSi la cánula se queda fuera, por favor presione Cancel y descarte su Pod.\n\nPress Next para insertar la cánula y comenzar la entrega basal.
+ Insertar cánula
+ Intentando establecer la programación basal inicial e insertar la cánula.\n\nCuando todos los elementos están marcados, puede pulsar Siguiente.
+ Pod Info
+ \nEl Pod ahora está activo.\n\nSu horario basal ha sido programado y la cánula ha sido insertada.\n\nPor favor, verifique que la cánula ha sido insertada correctamente y reemplace su Pod si usted siente que no lo ha hecho.
+ Desactivar Pod
+ \nPulsa Siguiente para desactivar el Pod.\n\nNota: Esto suspenderá toda la entrega insulina y desactivará el Pod.
+ Desactivando el Pod
+ Desactivando el Pod.\n\nCuando se comprueban todos los elementos, puede pulsar Next.\n\nNota: Si la desactivación falla, por favor pulse Cancelar y utilice la opción Restablecer Pod para restablecer por la fuerza el estado de Pod.
+ Pod desactivado.\n\nPor favor, retire el Pod de su cuerpo y desecharlo.
+ Emparejar Pod
+ Llenado de cánula del Pod
+ Llenar cánula
+ Establecer el perfil basal
+ Cancelar entrega
+ Desactivar Pod
+
+
+ Integración de la bomba para Omnipod Dash.
+ Finalizar recordatorio de emparejamiento
+ Recordatorio de configuración finalizado
+ Pod a punto de caducar
+ Pod a punto de caducar
+ El apagado es inminente
+ Reservorio bajo
+ Alerta desconocida
+ La configuración del perfil basal podría haber fallado. ¡La entrega podría ser suspendida! Por favor, actualiza el estado de Pod.
+ La configuración de basal temporal podría haber fallado. Si ya se está ejecutando una basal temporal, ¡puede que haya sido cancelada! Por favor, actualice el estado del pod.
+ Ajuste de la hora puede ser que haya fallado. La entrega puede ser suspendido! Por favor, actualizar estado de Pod.
+ No se puede verificar si el bolo ha sido exitoso. Por favor verifique que su Pod está poniendo bolo o cancele el bolo.
+ Estadísticas del RL
+ Registro de pulso
+ Comparar perfiles
+ Asistente de perfil
+ Perfil actual
+ Perfil disponible
+ Tipo de perfil
+ Edad: %1$.0f TDD: %2$.0f U
+ Edad: %1$.0f Peso: %2$.0f kg
diff --git a/app/src/main/res/values-fi-rFI/strings.xml b/app/src/main/res/values-fi-rFI/strings.xml
index f2c7564cc4..2578fce6a9 100644
--- a/app/src/main/res/values-fi-rFI/strings.xml
+++ b/app/src/main/res/values-fi-rFI/strings.xml
@@ -4,17 +4,15 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values-fr-rFR/exam.xml b/app/src/main/res/values-fr-rFR/exam.xml
index 7bfc32a3ff..3111898534 100644
--- a/app/src/main/res/values-fr-rFR/exam.xml
+++ b/app/src/main/res/values-fr-rFR/exam.xml
@@ -1,7 +1,7 @@
Qu\'est-ce qu\'il y a de vrai pour le DAI (Durée Action Insuline)?
- Rubrique : Durée de l\'Action de l\'Insuline
+ Rubrique : Durée de l\'Action de l\'InsulineLa valeur minimale est de 3 heures.La valeur minimale est de 5 heures.https://androidaps.readthedocs.io/en/latest/CROWDIN/fr/Configuration/Config-Builder.html?#insulin
@@ -122,7 +122,7 @@
Application Loop sur iPhone.Application Spike sur iPhone.https://androidaps.readthedocs.io/en/latest/CROWDIN/fr/Children/Children.html
- Rubrique : Sensibilité à l\'Insuline (SI)
+ Rubrique : Sensibilité à l\'Insuline (SI)Les valeurs de SI plus élevées conduisent à moins d\'insuline injectée quand AAPS corrige une hyperglycémie.Des valeurs plus faibles de SI entraînent une diminution de l\'administration d\'insuline lorsque l\'AAPS corrige une hyperglycémie.Changer les valeurs de SI n\'a aucun effet sur la quantité d\'insuline injectée quand AAPS corrige une hyperglycémie.
@@ -130,7 +130,7 @@
La modification de la SI dans le profil est suffisant pour appliquer le changement.https://androidaps.readthedocs.io/en/latest/CROWDIN/fr/Getting-Started/FAQ.html#insulin-sensitivity-factor-isf-mmol-l-u-or-mg-dl-uhttps://androidaps.readthedocs.io/en/latest/CROWDIN/fr/Usage/Profiles.html
- Rubrique : Ratio Glucides/Insuline
+ Rubrique : Ratio Glucides/InsulineLes ratios G/I plus élevés conduisent à moins d\'insuline injectée pour une quantité donnée de glucides.Les ratios G/I plus faibles conduisent à moins d\'insuline injectée pour une quantité donnée de glucides.Si vous avez 0 GA, changer le ratio G/I conduira à différentes quantités d\'insuline pour corriger une valeur de glycémie donnée.
diff --git a/app/src/main/res/values-fr-rFR/protection.xml b/app/src/main/res/values-fr-rFR/protection.xml
index 4b38aa53da..7d47f26e8a 100644
--- a/app/src/main/res/values-fr-rFR/protection.xml
+++ b/app/src/main/res/values-fr-rFR/protection.xml
@@ -15,6 +15,8 @@
Pas de ProtectionProtectionLe mot de passe principal n\'est pas défini !\n\nVeuillez définir votre mot de passe principal dans les préférences (%1$s → %2$s)
+ Retour arrière non sécurisé
+ Pour être effective, la protection biométrique nécessite un mot de passe principal pour revenir en arrière.\n\nMerci de définir un mot de passe principal !Mot de passe défini !Mot de passe non définiMot de passe non modifié
diff --git a/app/src/main/res/values-fr-rFR/strings.xml b/app/src/main/res/values-fr-rFR/strings.xml
index 92b4ec3892..7f43be9166 100644
--- a/app/src/main/res/values-fr-rFR/strings.xml
+++ b/app/src/main/res/values-fr-rFR/strings.xml
@@ -12,13 +12,10 @@
Réinitialiser les Bases de Données Voulez-vous vraiment réinitialiser les bases de données ?Quitter
- Utiliser les bolus étendus pour > 200%%
- Dispositif Bluetooth DanaRUtiliser toujours les valeurs absolues du basalRedémarrez votre smartphone ou redémarrez AndroidAPS depuis les paramètres système \nsinon AndroidAPS ne sera pas connecté aux journaux (il est important de suivre et vérifier que les algorithmes fonctionnent correctement)!Ce périphérique ne semble pas permettre l\'optimisation de la batterie par une liste blanche - vous pourriez rencontrer des problèmes de performance.Quelques boutons pour accéder rapidement aux fonctions communes
- Entrer les données du journal de gestion du diabète.Utilisé pour configurer les plugins actifsProgramme d’apprentissageAffiche les aliments définis par défaut dans Nightscout
@@ -36,10 +33,6 @@
Fournit le profil que vous avez défini dans NightscoutDéfinir un profil avec un seul bloc de temps.Intégration des pompes Accu-Chek Combo il faut avoir Ruffy installé
- Intégration pour les pompes Diabecare DANA R
- Intégration pour les pompes coréennes de Diabecare DANA RS
- Intégration pour les pompes de DANA Diabecare R avec firmware mis à jour
- Intégration pour les pompes Diabecare DANA RSIntégration pompe pour les personnes qui font des injections quotidiennes multiples pour le traitement de leur diabèteIntégration pour les pompes qui n’ont pas encore de pilote (Boucle Ouverte)La sensibilité est calculée de la même manière que Oref0, mais vous pouvez spécifier la période concernée. L\'absorption minimale des glucides est calculée à partir des temps d’absorption max des glucides du menu préférences.
@@ -54,13 +47,6 @@
Surveillez et contrôlez AndroidAPS en utilisant votre montre WearOS.Afficher les informations de votre Boucle sur votre écran de montre xDrip+.Commander à distance AndroidAPS en utilisant les commandes SMS.
- Unités
- DAI
- G/I (g/U)
- SI Sensibilité Insuline
- Basal
- Cible
- PAS DE PROFIL PRÉDÉFINIInsuline:Glucides :IA:
@@ -76,15 +62,9 @@
TTGlucidesCorr
- UBolus IAExécuter maintenantPOMPE VIRTUELLE
- Taux du débit Basal
- Basal temporaire
- Bolus étendu
- Niveau batterie
- Niveau réservoirOKDernière exécutionParamètres de saisie
@@ -96,16 +76,11 @@
RésultatsRésultat: %1$s %2$sPas de données glycémiques disponibles
- Pas de changement demandéRequête
- Taux
- Durée
- RaisonGlucoseDeltaDelta:Générateur de configuration
- ObjectifsAperçuProfil NSProfil simple
@@ -123,7 +98,6 @@
GénéralQuelques modules d\'extension que vous pourriez trouver utiles.Quelles restrictions sont appliquées ?
- joursRestrictionsBoucleBoucle
@@ -132,25 +106,19 @@
Après traitement des restrictionsBasal temporaire défini par la pompeDernière activation
- OK
- AnnulerPas d\'APS séléctionné ou pas de résultat fourniSécuritéPlugin désactivéViolation des restrictionsErreur injection bolus
- Erreur injection basal temporaireValeur Basal [%]Accepter nouveau basal temporaire :TraitementAssistantRestriction appliquée !
- Confirmation
- BolusBolus:BasalBasal:
- GlucidesChangez vos entrées !Source des glycémiesQuelle source de données doit être utilisée par AndroidAPS ?
@@ -158,34 +126,17 @@
Mode APSBoucle FerméeBoucle Ouverte
+ Arrêt Glycémie BasseBoucle désactivéeDésactiver la BoucleActiver la BoucleNouvelle recommendation disponible
+ Suggestion de glucidesVersion incompatible de NightscoutBOUCLE DÉSACTIVÉE PAR RESTRICTIONSBasal IARestriction du Bolus appliquéeRestriction des Glucides appliquée
- Contrôle Glycémie
- Notification
- Remarque
- Question
- Activité Physique
- Changement Zone D\'insertion
- Insertion Capteur MGC
- Début Capteur MGC
- Changement du Réservoir
- Changement de profil
- Bolus Goûter
- Bolus Repas
- Bolus de correction
- Bolus Combiné
- Lancer Débit Temporaire
- Fin du Débit Temporaire
- Ressucrage
- OpenAPS hors ligne
- Type d\'évènementAutreLecteurCapteur
@@ -213,15 +164,17 @@
Fichier introuvableExporter les paramètresImporter les paramètres
- Max. U/hr pour le débit temp Basal
+ Débit max en U/h pour une Basal Temp.Cette valeur est appelée Basal Maximum dans le contexte OpenAPS
- IA basale max que OpenAPS pourra délivrer [U]
+ IA Basal max que OpenAPS pourra délivrer [U]Cette valeur est appelée Max IA (Insuline Active) dans le contexte OpenAPS\nC\'estlle maximum d\'insuline en [U] que APS peut délivrer en une seule fois.
- FERMERLe mot de passe principal vous sera demandé pour crypter les préférences exportées.Le mot de passe principal vous sera demandé pour décrypter les préférences exportées.Export annulé ! Les préférences n\'ont PAS été exportées !Import annulé ! Les préférences n\'ont PAS été importées !
+ Impossible d\'importer les préférences !
+ Veuillez retourner à l\'écran principal et réessayer.
+ Sélectionner le fichier à importerVérifiez les préférences avant d\'importer :Les préférences ne peuvent pas être importées !Les préférences ne doivent pas être importées !
@@ -234,6 +187,8 @@
Vous utilisez le format obsolète des anciennes versions d\'APPS qui n\'est pas sécurisé ! Utilisez-le uniquement en dernier recours, si vous n\'avez pas d\'export au format JSON actuel.Les préférences importées ont déjà %1$s jours ! Vous avez peut-être des préférences plus récentes ou vous avez sélectionné un mauvais fichier ? N\'oubliez pas d\'exporter vos préférences régulièrement !Format de date invalide !
+ Préférences d\'une autre version mineure différente de l\'application. C\'est OK si vous importez après la mise à jour, mais vérifiez après l\'importation si les préférences sont toujours correctes !
+ Préférences d\'une autre version majeure différente de l\'application. Les versions majeures diffèrent significativement et peuvent avoir des préférences incompatibles ! Vérifiez bien après l\'import que les préférences sont toujours correctes !Format de fichierCréé leVersion d\'AAPS
@@ -256,35 +211,18 @@
Erreur de décryptage, le mot de passe fourni est invalide ou le fichier de paramètres à été modifié ! Cela peut arriver si le fichier a été exporté avec un mot de passe principal différent.Configuration du cryptage manquant, format des paramètres invalide !Algorithme de cryptage non pris en charge ou non spécifié !
- DanaR
- Connection en cours
- Connectée
- Déconnectée
- Paramètres de la pompe Dana
+ exporté aujourd\'hui
+ exporté il y a %1$s
+ exporté à %1$s
+ exporté il y a moins d\'une heure
+ dans le dossier : %1$sContrat de Licence pour Utilisateur FinalNE DOIT PAS ÊTRE UTILISÉ POUR PRENDRE DES DÉCISIONS MÉDICALES. IL N\'Y A AUCUNE GARANTIE POUR LE PROGRAMME, DANS LA LIMITE PERMISE PAR LA LOI APPLICABLE. SAUF S\'IL EST INDIQUÉ LE CONTRAIRE PAR ÉCRIT. LES TITULAIRES DU DROIT D\'AUTEUR ET / OU D\'AUTRES PARTIES FOURNISSENT LE PROGRAMME «EN L\'ÉTAT» SANS GARANTIE D\'AUCUNE SORTE, EXPLICITE OU IMPLICITE, Y COMPRIS MAIS NON SEULEMENT AUX GARANTIES IMPLICITES DE QUALITÉ MARCHANDE ET D\'ADÉQUATION À UN USAGE PARTICULIER
L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME SONT DE VOTRE RESPONSABILITÉ. SI LE PROGRAMME EST DÉFECTUEUX, VOUS ASSUMEZ LE COÛT DE TOUS LES SERVICES, RÉPARATIONS OU CORRECTIONS NÉCESSAIRES.JE COMPRENDS ET J\'ACCEPTE LES CONDITIONS DU CONTRATSauvegarder
- L\'adaptateur bluetooth est introuvable
- L\'appareil sélectionné est introuvable
- Erreur connection pompe
- Insuline Active pompe
- Unités journalières
- Dernier bolus
- il y a %1$.1fh
- Données saisies invalides
- Valeur pas correctement définieActualiser le profil
- Consulter le profil
- Activé
- Commentaire
- Succès
- Pourcentage
- Absolu
- Annuler le basal temporaireCommunicateur SMS
- Attente de résultatNuméros de tél autorisés+XXXXXXXXXX;+YYYYYYYYYYRenvoyer le code %2$s pour injecter le bolus %1$.2fU
@@ -305,60 +243,24 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
Cible %1$s pendant %2$d minutesCible %1$s pendant %2$d minutes définie avec succèsCible Temp annulée avec succès
- En train d\'injecter %1$.2fUAutoriser les commandes à distance par SMS
- Doigt
- Capteur
- Manuel
- Cible temp.
- Annuler Cible TemporaireParamètres du profil DanaRDurée d\'Action [h] Durée d\'Action de l\'Insuline
- La mise à jour du profil basal a échouée
- ActualiserTéléchargement en cours
- E Bolus
- Bolus DS
- Bolus DE
- Erreur
- Remplir
- Heure basal
- glycémie
- glucides
- alarme
- Total %1$d enregistrements téléchargés
- Bolus S
- Alarmes
- Heures Basal
- Bolus
- Glucides
- Insuline quotidienne
- Erreurs
- Glycémie
- Remplir
- Arrêter
- Connexion à %1$d s en cours
- Mot de passe pompe
- Mot de passe pompe incorrect !
- Pompe occupée
- Injecté
- ArrêtéBolus arrêtéArrêter bolus
- Occlusion
- Arrêt
- BOUTON ARRÊT ACTIVÉ
- Attente connection pompe
- %1$.2fU vont être injectées
- Vous avez atteint la limite maximale
- Aucun profil séléctionnéLa Boucle a été désactivéeLa Boucle a été activéeLa Boucle est désactivéeLa Boucle est activée%1$.2f limité à %2$.2fLa valeur %1$s est en dehors des limites
+ Pour connecter la pompe, répondre avec le code %1$s
+ Echec de la connexion pompe
+ Pour déconnecter la pompe pendant %1d minutes, répondre avec le code %2$s
+ Pompe déconnectée
+ Pompe reconnectéeLa commande à distance n\'est pas autoriséeBolus à distance non disponible. Réessayez plus tard.Pour démarrer la Basal %1$.2fU/h pendant %2$d min, renvoyer le code %3$s
@@ -367,6 +269,9 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
Pour entrer %1$dg à %2$s renvoyer le code %3$sPour démarrer la Basal %1$d%% pendant %2$d min, renvoyer le code %3$sEnvoyer le code %2$s pour suspendre la Boucle pour %1$d minutes
+ Pour reprendre la veuillez répondre avec le code %1$s
+ Pour activer la boucle veuillez répondre avec le code %1$s
+ Pour désactiver la boucle veuillez répondre avec le code %1$sDémarrage réussi pour %1$.2fU/h de basal temporaire pour %2$d minLe Bolus étendu %1$.2fU pendant %2$d min a commencé avec succèsLes %1$dg de glucides entrés avec succès
@@ -392,22 +297,18 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
RepasCorrActions
- AndroidAPS est lancéRemonter uniquement vers NS (sync désactivée)Uniquement téléchargement NS. Ceci n’est pas opérationnel pour les SGV à moins qu’une source locale comme xDrip ne soit sélectionnée. Ceci n’est pas opérationnel sur les profils lorsque les profils NS sont utilisés.Pompe non initialisée !
- Pompe non initialisée, profil non prédéfini !Amorcer/RemplirVeuillez à ce que la quantité corresponde aux caractéristiques de votre cathéter !Autres
- Valeurs prédéfinies pour remplir&amorcer
+ Quantité d\'insuline par défaut pour Amorcer/RemplirBouton 1Bouton 2Bouton 3Unités :Unités
- mg/dl
- mmol/lDAIFourchette cible :Fourchette de visualisation
@@ -417,17 +318,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
WearRenvoyer toutes les donnéesAfficher les Paramètres sur la Montre
- Erreur Pompe
- Piles Faibles
- Arrêt de la Pompe
- Batterie Pompe Déchargée
- DanaR CoréenneDébit Basal :
- L\'enregistrement du profil Basal a échoué
- Profil Basal mise à jour dans la pompe
- Désactiver le mode FacileUI (EasyUI) de la pompe
- Activer les bolus étendus dans la pompe
- Changer le mode de U/d en U/h sur la pompeLe débit Basal est inférieur au minimum autorisé. Profil non accepté !G:Dernière G:
@@ -435,7 +326,6 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
Medtronic 640gNotification en coursDONNÉES ANCIENNES
- %1$d min passéesil y a %1$d minProfil LocalOpenAPS AMA
@@ -451,41 +341,22 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
HypoActivitéSupprimer l\'enregistrement
- Dana Stats
- DTI cumulé
- DTI avec Pondération Exponentielle
- Basal
- Bolus
- DTI
- Date
- Ratio
- Nb Jours
- Pondération
- Peut être inexact si des bolus sont utilisés pour l’amorçage et le remplissage !
- Pour les anciennes données, appuyez svp sur \"Actualiser\"
- Débit Total Basal
- DTB*2
- En cours d\'initialisation...ACTCONFBOUCLEP.S.OAPSPL
- DANAACCUEILPOMPEVP.NSTRAIT
- CPOBJWEARSMSRaccourcir les titres des ongletsUtiliser delta basé sur moyenne courteUtiliser toujours un delta basé sur une moyenne courte au lieu d’une moyenne normale. Utile lorsque les données provenant de sources non filtrées comme xDrip devient incohérentes.
- Paramètres Avancés
- Modèle: %1$02X Protocole: %2$02X Code: %3$02XProfilValeur par défaut : 3 Ceci est un paramètre important de sécurité de l’OpenAPS. Ceci va limiter vos débits basal à 3 fois votre débit Basal maximum. Il est probable que vous n’aurez pas besoin de changer cela, mais vous devez être conscient de ce qui est discuté pour les limites de sécurité dans “3x max daily; 4x current”.Valeur par défaut : 4 Ceci est l’autre moitié des paramètres de sécurité limitant l’OpenAPS, et l’autre moitié de “3x max daily, 4x current” des paramètres de sécurité. Quel que soit le basal maximum prédéfini dans votre pompe, il ne pourra pas être plus haut que ce nombre multiplié par le Basal actuel. Ceci est fait pour ne pas mettre l’utilisateur en danger en programmant des débits Basal maximum trop élevés avant de comprendre comment l’algorithme fonctionne. Encore une fois, la valeur par défaut est 4x, la plupart des gens n’auront jamais besoin d’ajuster ce paramètre, plutôt ils auront tendance à ajuster d’autres paramètres s’ils voient qu’ils atteignent ce paramètre de limite de sécurité.
@@ -504,18 +375,9 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
Étalonnage envoyé. La réception doit être activée dans xDrip.xDrip ne reçoit pas les étalonnagesPompe arrêtée
- Obtenir l\'état de pompe
- Définir le basal temporaire
- Arrêter basal temporaire
- Définir bolus étendu
- Arrêter le bolus étendu
- Mise à jour des débits basals
- Déconnexion en coursExécution en coursParamètres pompe virtuelleRemontée des informations vers NS
- Mauvais mot de passe
- L\'insuline journalière s\'approche de la limiteNSClientNSCIURL :
@@ -539,7 +401,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
Afficher l\'IA détailléeSur la montre, décomposer l’IA en IA bolus et IA basalSans succès - vérifiez votre téléphone
- Non disponible
+ s/oAge du patient EnfantAdolescent
@@ -575,8 +437,6 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
SuperbolusDémarrage AAPS entré dans NSSortir de l’application pour appliquer les nouveaux paramètres.
- DanaRv2
- InsulineQuel type d\'insuline utilisez-vous ?Insuline à action rapideNovorapid, Novolog, Humalog, Apidra
@@ -591,17 +451,20 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
Seuil critique âge insuline [h]Seuil d\'alerte âge capteur [h]Seuil critique âge capteur [h]
- Seuil d\'alerte niveau pile [h]
- Seuil critique niveau pile [h]
- Seuil d\'avertissement de niveau du réservoir [U]
- Seuil critique de niveau du réservoir [U]
- Seuil d’avertissement du niveau de batterie [%]
- Seuil critique du niveau de la batterie [%]
+ Seuil d\'alerte âge pile [h]
+ Seuil critique âge pile [h]
+ Seuil d\'alerte niveau réservoir [U]
+ Seuil critique de niveau réservoir [U]
+ Seuil d’alerte niveau pile [%]
+ Seuil critique niveau pile [%]
+ PREDIAGA
- Firmware
- Dernière connexion
- État Bluetooth
+ BAS
+ DEV
+ ACT
+ ABS
+ PENTEDEVÀ proposAutorisation SMS manquanteAutorisation du téléphone manquante
@@ -612,24 +475,15 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
Ajouter l’IG sur la vue généralePas de téléchargement vers NSToutes les données envoyées à NS sont abandonnées. AAPS est connecté à NS mais aucun changement n’est fait dans NS
- Incrément Basal
- Incrément BolusAnnuler Bolus étenduAge CapteurAge CathéterAge Insuline
- heures
- Profil incorrect !!!Changer de profil
- Age batterie pompe
- Nouvelle Batterie Pompe
+ Age Pile PompeOptions d\'alarme
- Haute urgent
- Haute
- Basse
- Basse urgent
- Données obsolètes
- Urgent données obsolètes
+ Créer des notifications à partir des alarmes NS
+ Créer des notifications à partir des notifications NSSeuil sans nouvelle donnée Glyc. [min]Seuil d\'urgence pour les données obsolètes [min]Plage pour Autosens [h]
@@ -646,7 +500,6 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
Paramètres d’absorptionDurée max d’absorption d\'un repas [h]Le temps estimé en heures pour une absorbption totale des glucides d’un repas
- Afficher le bolus étendu en %%AgeCAgeIAgeC
@@ -671,7 +524,6 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
POMPEDurée [min]OpenAPS SMB
- SMBActiver RNSActiver SMBUtiliser les Super Micro Bolus au lieu des débits de base temporaires pour une action rapide
@@ -683,23 +535,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
Insuline Ultra Rapide OrefDurée d’Action pour %1$f trop courte - utiliser %2$f à la place !Activer le profil
- DateINVALIDE
- Attente de l\'appairage de la pompe
- Appairage OK
- Temps d\'appairage dépassé
- Appairage
- Jusqu\'à présent aucun appareil n\'a été trouvé
- Réservoir vide
- Alerte de mesure de glycémie
- Niveau d\'insuline restant
- DanaRS
- Dana
- Pompe sélectionnée
- Appairer une nouvelle pompe
- Vitesse bolus
- Régler incrément basal à 0.01 U/h
- Numéro de sériePourcentageDécalage horaireCibles Temporaires par défaut
@@ -709,44 +545,28 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
Cible Glycémie pour l\'activitédurée hypo [min]Cible Glycémie pendant l’hypo
- Amorcer
- Obtenir l\'état du bolus étendu
- Obtenir l\'état du bolus
- Obtenir l\'état du basal temporaire
- Obtenir les paramètres pompe
- Obtenir l\'heure de la pomperéutiliserCommandes depuis la montreDéfinir les Cibles Temp et entrer les Traitements depuis la montre
- Connexion interrompueAlimentsg
- m
- h
- j]]>kJEnProtéinesGras (Lipides)]]>
- Bolus en cours. %1$d sec. restantes.
- Traitement d\'événement
- Injection du bolus initiéeCommande exécutée à l\'instant
- Pilote pompe corrigéPompe hors de portéeValeurs de glycémie manquantesUtiliser les notifications système pour les alertes et notificationsAlertes localesAlerte pas nouvelle donnée glycémiqueAlerte si la pompe est hors de portée
- Seuil alerte pompe hors de portée [min]
+ Seuil d\'alerte pompe hors de portée [min]
+ Alerte si glucides requisAlarme d\'urgenceINFO
- Bluetooth
- BT Watchdog
- Ceci va arrêter le Bluetooth du téléphone pour une seconde si la connexion pompe n’est pas possible. Cela peut assister certains téléphones dont la connexion Bluetooth se bloque.App Eversense (patché)Remonter les Gly vers NSParamètres de téléchargement des glycémies
@@ -757,14 +577,11 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
Max. minutes de basal pour limiter le SMBSMB RNS minutes maxMinutes de basal max pour limiter les SMB des RNS
- Seuil de suggestionde glucides
- Quantité de glucides à partir de laquelle une notification est envoyée
- Firmware pompe incompatible
+ Glucides minimum requis pour suggestion
+ Quantité de glucides minimum en g pour afficher une alerte de suggestion de glucides. Les suggestions inférieures ne déclencheront pas de notification.Transmettre les Gly vers xDrip+Dans xDrip+ veuillez séléctionner 640g/Eversense comme source de donnéesGlycémie NSClient
- Valeur de basal remplacée par la valeur minimale autorisée : %1$s
- Valeur de basal remplacée par la valeur maximale autorisée : %1$sCalcul de GlycémieCalcul IA du BolusCalcul IA du Basal
@@ -782,8 +599,6 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
Mode boucle fermée activéMaximum IA réglé correctementGlycémie disponible depuis la source sélectionnée
- Valeurs des débits de basal non alignées sur des heures: %1$s
- Profile incorrect : %1$sProgrammer la pompe pour injecter un bolusActualiserÉtat
@@ -804,7 +619,6 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
Un bolus avec la même quantité d’insuline a été demandé au cours de la dernière minute. Pour prévenir l’administration accidentelle de deux bolus à la fois et pour protéger contre les bugs, ceci (bolus) n\'est pas autorisé.MaintenantLecture historique pompe
- Historique pompeDéfinir le profil basalNiveau réservoir pompe basPile pompe faible
@@ -823,9 +637,8 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
Erreur administration bolus étenduAC-Ipassé(e)s
- %1$.2f h
- %1$d min
- %1$dm
+ Définir des basals temp neutres
+ Si activé, cela annulera une basal temp avant la fin de chaque heure. Cela peut aider à supprimer les bips/vibrations à chaque heure.Activer en permanence les SMBActiver toujours SMB de manière autonome pour les bolus. Ceci est possible uniquement avec une source de glycémie ayant un très bon filtrage de données comme le G5Activer SMB après ingestion de glucides
@@ -835,9 +648,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
Activer SMB avec les cibles temporairesActiver SMB lorsqu\'il y a une cible temporaire active (repas imminent, exercise)Activer SMB avec cibles temp. hautes
- Activer SMB lorsqu\'il y a une cible temporaire haute (activités, exercice,..)
- Laisser démarrer le Basal temporaire
- Coupure du son
+ Activer les SMB quand il y a une cible temp haute active (exercise, au dessus de 100 mg/dl ou 5.5 mmol/l)InsulineGlucidesBoutons
@@ -847,11 +658,17 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
Quantité d’insuline à ajouter lorsque vous appuyez sur le boutonImpossible d’exécuter l’application de MGC. Assurez-vous de que celle-ci est installée.MGC
+ Ignorer 5m
+ Ignorer 15m
+ Ignorer 30m
+ reqHistoriqueNotifier en SMBAfficher SMB sur la montre comme un bolus standard.Créer des messages d’erreurs
+ Créer des annonces à partir des alertes Glucides requisCréer une annonce Nightscout pour les messages d\'erreur et les alertes locales (également visible dans la section Careportal de l\'onglet traitements)
+ Créer des annonces Nightscout pour les alertes besoins de glucidesAffichez les prédictions sur l\'écran de montre.PrédictionsChoix de données
@@ -865,7 +682,7 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
Ne pas administrer de bolus, enregistrer uniquementCatégorieSous-catégorie
- Le bolus sera seulement enregistré
+ Les bolus seront seulement enregistrés (pas délivrés par la pompe)Remplissage automatique des glycémies manquantes en utilisant NSSMB défini par la pompeActivité
@@ -879,7 +696,6 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
Version Dev. La Boucle Fermée est désactivée.Mode ingénierie actifLe mode Ingénierie n\'est pas activé et n\'existe pas sur cette version
- %1$.2f U/hLecture du profil basalL\'historique de la pompe a été modifié depuis le calcul du bolus. Le bolus n\'a pas été administré. Merci de recalculer le bolus s\'il est toujours nécessaire.Le bolus a été délivré mais il n\'a pas pu être ajouté à l\'historique des traitements. Ceci peut se produire lorsque deux petits bolus de la même taille sont gérés dans les deux dernières minutes. Merci de vérifier l\'historique de la pompe et les entrées de traitements puis utilisez le Careportal pour y ajouter les entrées manquantes. Assurez-vous de ne pas ajouter des entrées au cours de la même minute et pour la même quantité d\'insuline.
@@ -902,15 +718,10 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
SMB désactivée dans les préférencesRepas Non Signalé (UAM) désactivé dans les préférencesRepas Non Signalé (UAM) désactivé car il utilise le plugin Sensibilité de Oref1
- Limiter le taux basal max à %1$.2f U/h en raison de %2$s
- Limite de la pompe
- la valeur doit être positivemultiplicateur max basalmultiplicateur max basal quotidienUn bolus a été délivré dans les 3 dernières minutes, SMB ignoréBasal correctement configuré
- Limiter les taux de pourcentage maximum à %1$d%% en raison de %2$s
- Limiter le Bolus à %1$.1f U à cause de %2$sLimiter les bolus prolongé à %1$.1f U à cause de %2$sLimiter l’IA max %1$.1f U en raison de %2$sLimiter les glucides %1$d g à cause de %2$s
@@ -925,7 +736,6 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
SMB non autorisé en mode Boucle OuverteAlimentsréinitialiser
- En attente de synchronisation de l\'heure (%1$d sec)Déconnecté (%1$d m)IA totale maximale pour OpenAPS [U]Cette valeur est appelée Max IA (Insuline Active) dans le contaxte OpenAPS\nOpenAPS n’ajoutera pas plus d’insuline si l\'IA (Insuline Active) actuelle est supérieure à cette valeur
@@ -941,7 +751,6 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
Assistant de configurationTERMINERSélectionnez votre langue
- Demandé : %1$.2fU Injecté : %2$.2fU code d’erreur: %3$sPremier incrément d\'insulineDeuxième incrément d\'insulineTroisième incrément d\'insuline
@@ -964,7 +773,6 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
Type de pompe virtuelleDéfinition de pompeBolus : Étape =%1$s\nExtended Bolus : [Étape =%2$s, Durée =%3$smin -%4$sh]\nBasal : Étape =%5$s\nTBR : %6$s (par %7$s), Durée =%8$smin -%9$sh\n%10$s
- * Uniquement les valeurs discrètes sont acceptées. Les plages ou fourchettes basal-bolus ne sont pas pris en charge par les pompes virtuelles (granularité).Remplissage automatique GParamètres de l’AssistantCalculs inclus dans le résultat de l’Assistant :
@@ -990,30 +798,14 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
AutorisationDemande d\'autorisationL\'application a besoin de l\'autorisation d\'accès à la fenêtre système pour les notifications
- L\'application requiert l\'autorisation de localisation pour le balayage Bluetooth
- L\'application requiert une autorisation de stockage de données afin de pouvoir sauvegarder les fichiers journaux
+ L\'application a besoin de l\'autorisation de localisation pour l\'analyse BT et l\'identification WiFi
+ L\'application a besoin d\'une autorisation de stockage pour pouvoir stocker les fichiers journaux et les paramètres d\'exportationDemandeConfigurer le plugin d\'insulineQuitter
- Options utilisateur
- Format de l\'affichage de l\'heure
- Bouton défiler
- Bip lors de l\'appui bouton
- Alarme
- Son
- Vibration
- Les deux
- Durée affichage LCD [secondes]
- Rétro-éclairage [secondes]
- Unités glycémie
- Éteindre [heures]
- Réservoir faible [Unités]
- Enregistrer les options sur la pompe
- Activé
- DésactivéOuvrir navigationFermer navigation
- Préférences des plugins
+ Préférences du pluginTerminé, félicitations !Pas encore terminéTemps écoulé
@@ -1030,8 +822,6 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
Quand une sensibilité est détectée, augmentation de la glycémie cibleParamétrage de la pompe invalide. Vérifiez la documentation et le menu QUICK INFO en utilisant le logiciel de configuration 360.Personnalisé
- Différence horaire importante
- Différence horaire importante:\nL\'heure de la pompe est en écart de plus d\'une heure et demi.\nMerci d\'ajuster manuellement l\'heure de la pompe et assurez-vous que la lecture de l\'historique de la pompe ne cause pas de dysfonctionnements.\nSi possible, effacez l\'historique de la pompe avant de modifier l\'heure ou désactivez la Boucle Fermée pour une DAI après la dernière entrée erronée de l\'historique et au minimum une DAI à partir de maintenant.Réinitialiser AndroidAPSParamètres sauvegardés trouvésATTENTION : Si vous activez et connectez à une vraie pompe, AndroidAPS copiera les paramètres Basals du profil vers la pompe, écrasant le taux basal existant stocké sur la pompe. Assurez-vous d\'avoir correctement saisi et réglé les paramètres Basal dans AndroidAPS. Si vous ne savez pas ou si ne voulez pas écraser les paramètres Basal sur votre pompe, appuyez sur Annuler et reporter le passage à la pompe à une date ultérieure.
@@ -1057,17 +847,10 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
Mode APS préféréTotalCalc
- Poignée de mainEnvoi des fichiers des journaux aux développeurs. Cas imprévu.
- Violation de bolus Max
- Erreur de commande
- Erreur de vitesse
- Violation d\'une limite d\'insulineChangement minimum [%]Le fonctionnement de la Boucle demandera une confirmation uniquement si le changement est supérieur à cette valeur en %. Par défaut, la valeur est 20%
- Appairez SVP votre pompe avec votre téléphone !Recherche d\'appareils en cours…
- Merci de patienter...Appairage terminéLes codes affichés sur cet appareil et sur la pompe sont-ils identiques ?Appairage de Insight
@@ -1087,6 +870,10 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
Enreg. alertesActiver l’émulation de DBTUtilisez des Bolus étendus au lieu de DBTs pour contourner la limite de 250%%
+ Désactiver les vibrations des bolus manuels
+ Concerne les bolus et bolus étendus (disponible uniquement pour les firmwares 3.x)
+ Désactiver les vibrations des bolus automatiques
+ Concerne les SMB et les basal temp avec émulation DBT (disponible uniquement pour les firmwares 3.x)Délai de déconnexion [s]Numéro de sérieVersion du logiciel
@@ -1156,7 +943,6 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
est supérieur ou égal àest supérieur àn\'est pas disponible
- inconnuLa glycémie n\'est pas disponibleGlycémie %1$s %2$.0f %3$sGlycémie %1$s %2$.1f %3$s
@@ -1173,23 +959,10 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
AutoAutomatisation== ∑ %1$s U
- U/h
- g/U
- /UEnreg. du changement de capteur sur NSCréer automatiquement sur NS un événement \"Changement de capteur\" au démarrage du capteurTomato (MiaoMiao)Tomato
- seconde
- minute
- heure
- jour
- semaine
- secondes
- minutes
- heures
- jours
- semainesVotre nom d\'utilisateur Tidepool, normalement votre adresse e-mailNom d\'utilisateurMot de passe de connexion Tidepool
@@ -1216,7 +989,6 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
Période répétitiveChaqueJamais
- %1$dminsÉtat :Action :IA [U]:
@@ -1232,7 +1004,6 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
très ancienne versionNouvelle version disponible depuis %1$d jours ! Retour à Arrêt Glycémie Basse (AGB) dans %2$d jours, la boucle sera désactivée dans %3$d jours2 h
- %1$.2fUApp Dexcom (patchée)DexcomRecevoir les valeurs de glycémie de l’application Dexcom patchée.
@@ -1277,142 +1048,6 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
Déclencheurs :SUPPRIMERConditions préalables :
-
- Opération non prise en charge par la pompe et/ou le pilote.
- Opération non ENCORE supportée par la pompe.
-
- L\'intégration de la pompe Medtronic nécessite un appareil RileyLink et un modèle de pompe spécifique
-
- Numéro de série de pompe
- Type de pompe
- Fréquence de pompe
- Délai avant le début du Bolus (s)
- Bolus Max sur Pompe (U)
- Basal Max sur Pompe (U/h)
- Encodage Medtronic
- US & Canada (916 MHz)
- Mondial (868 Mhz)
- Encodage logiciel 4b6b
- Encodage matériel 4b6b
- Réveil et Réglage
- Effacer le bloc Bolus
- Réinitialiser la config. RileyLink
- Type de batterie (vue d\'alimentation)
- Non sélectionné (vue simple)
- Alcaline (vue étendue)
- Lithium (vue étendue)
- NiZn (vue étendue)
- NiMH (vue Étendue)
- Débogage de Bolus/Traitements
-
- SCANNER
- ARRÊT
- Sélectionné
- Scanner RileyLink
- Bluetooth Low Energy non pris en charge.
- Le Bluetooth n\'est pas activé.
- La localisation n\'est pas activée
- La localisation doit être activée sur les nouveaux appareils pour que la recherche Bluetooth fonctionne. AAPS n\'enregistre pas votre localisation et la localisation peut être désactivée après le succès de l\'appairage.
- Activer
- Non
- Recherche en cours
- Recherche finie
- Erreur de recherche : %1$d
- Jamais
-
- Paramètres
- Historique
- État du RileyLink
- État de la pompe
- Paramètres RileyLink
- RileyLink
- Adresse configurée
- Appareil connecté
- État de la connexion
- Erreur de Connexion
- Appareil
- Type d\'appareil
- Modèle d’appareil
- Dernière fréquence utilisée
- Dernier contact appareil
- RL Firmware
-
- Initialisation Bluetooth…
- Erreur Bluetooth
- Bluetooth Prêt
- Non démarré
- Initialisation du RileyLink…
- Erreur RileyLink
- Association du RileyLink et de la Pompe
- Problème communication avec la pompe
- Connecté
-
- L\'appareil n\'est pas RileyLink
- RileyLink non accessible
- Bluetooth est désactivé
- Aucun adaptateur Bluetooth
- Échec du réglage
- Pompe hors de portée
- Pod inaccessible
- Non configuré
-
- Pompe Medtronic
- Omnipod
-
- Erreurs
- Numéro de série non défini.
- Numéro de série invalide.
- Type de pompe non défini.
- Type de pompe non pris en charge.
- Fréquence de pompe non définie.
- Fréquence de pompe non pris en charge.
- Adresse RileyLink invalide.
- Le type de pompe détecté n\'est pas le même que le type configuré.
- Le réglage des profils de basal n\'est pas activé sur la pompe. Activez-le sur la pompe.
- Le profil Basal défini sur la pompe est incorrect (doit être STD).
- Mauvais type DBT (TBR) réglé sur la pompe (doit être Absolu).
- Mauvais paramètre Max Bolus sur la pompe (doit être %1$.2f).
- Mauvais paramètre Max Bolus sur la pompe (doit être %1$.2f).
- L\'opération n\'est pas possible.\n\n Vous devez d\'abord configurer la pompe Medtronic avant de pouvoir utiliser cette fonction.
- Un changement de temps de plus de 24h a été demandé.
-
- Basals
- Configurations
- Notifications
- Statistiques
- Inconnus
- Tous
- Historique de la pompe Medtronic
-
- Jamais contacté
- Réveil en cours
- Erreur de communication
- Expiration du délai d\'attente en communication
- Pompe hors de portée
- Configuration non valable
- Activé
- En veille
-
- Vous avez annulé le Bolus, après avoir déjà été envoyé vers la pompe. Puisque la pompe Medtronic n\'accepte pas d\'annulation, vous devrez l\'annuler manuellement. Mettez la pompe en mode Suspendre et puis faites le Reprendre (si vous voulez encore annuler). L\'application va récupérer ces modifications à la prochaine mise à jour (en moins de 5 minutes).
- Impossible de lire le DBT (TBR) actuel.
- Impossible d\'annuler le DBT (TBR) actuel. Arrêt de l\'opération.
- Le nouveau profil a échoué car le taux basal suivant est trop élevé : %1$s
- Le Bolus n\'a pas pu être délivré.
- Le Bolus n\'a pas pu être délivré, car la quantité d\'insuline disponible (%1$.2f) est inférieure à celle requise (%2$.2f).
- DBT n\'a pas pu être défini.
- Impossible d\'annuler le DBT actuel.
- Le profil Basal n\'a pas pu être défini.
- Le profil Basal est le même, donc il ne sera pas redéfini.
- Obtenir l\'historique - Page %1$d (%2$d/16)
- Obtenir l\'historique - Page %1$d
- Obtenir l\'heure de la pompe
- Obtenir les paramètres
- Obtenir le modèle de pompe
- Obtenir le profil Basal
- Obtenir le profil Basal
- Obtenir le Basal Temporaire
- Définir le Basal Temporaire
- Définir le BolusRemplacer le profil parRemplacer le profil par %1$sDernière connexion à la pompe
@@ -1424,7 +1059,6 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
%2$+.2fU]]>Contraintes de Bolus appliquées : %2$.2fU à %3$.2f]]>!!!!! Absorption lente des glucides détectée : %2$d%% du temps. Vérifiez de nouveau votre calcul. Les GA (Glucides Actifs) peuvent être surestimés et alors plus d\'insuline pourrait être délivré !!!!!]]>
- %1$.0f / %2$d UInjecter cette partie de Bolus calculée par l’assistant [%]L\'assistant Bolus effectue le calcul mais seulement cette partie de l\'insuline calculée est délivrée. Utile avec l\'algorithme SMB.Chargement ...
@@ -1432,7 +1066,6 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
Plage horaireL\'heure est comprise entre %1$s et %2$sEntre
- FermerAugmentation de la valeur du débit Basal max parce que ce paramètre est inférieur au débit Basal max de votre profilMessage invalide%1$s SI: %2$.1f
@@ -1450,7 +1083,6 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
OffRefaire l\'objectifSuppression démarrée
- Détection de tempsVoulez-vous réinitialiser le début de l\'objectif ? Vous risquez de perdre vos progrès.Heure et/ou fuseau horaire changé sur la pompeAucune pompe sélectionnée
@@ -1463,13 +1095,13 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
DupliquerSauver ou réinitialiser les modifications actuelles en premierSupprimer le profil actuel ?
- Créer un nouveau profil local à partir de ce changement de profil ?
+ Créer un nouveau profil local à partir de ce profil ?Le nom du profil contient des points.\nCe n\'est pas pris en charge par NS.\nLe profil n\'est pas remonté dans NS.Valeur inférieure dans la plage (affichage uniquement)Valeur supérieure dans la plage (affichage uniquement)RéordonnerÂge :
- Poids :
+ Poids :ID :EnvoyerProfil le plus courant :
@@ -1477,10 +1109,9 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
SondageÂge invalidePoids invalide
- %1$s: ∑: %2$.2f Bol: %3$.2f Bas: %4$.2f]]>
+ % saisi invalide%1$s: Bas: %2$02d%% Cible: %3$02d%% Haut: %4$02d%%]]>Moyenne
- DTICible GlyMoniteur d\'activitéVoulez-vous réinitialiser les stats d\'activité ?
@@ -1490,12 +1121,8 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
GlyOutilsAfficher le calcul
- Erreur
- 12h
- 24h
- Evénement d\'automatisation
+ Evénement auto.Déjà configuré
- MessageEffacer la file d\'attente ? Toutes les données en file d\'attente seront perdues !L\'utilisation du bolus étendu arrètera la boucle fermée pour la durée d\'exécution du bolus étendu. Voulez-vous vraiment le faire ?Boucle fermée désactivée à cause du bolus étendu
@@ -1539,4 +1166,136 @@ L\'ENSEMBLE DES RISQUES LIÉS À LA QUALITÉ ET À LA PERFORMANCE DU PROGRAMME S
Voyants d\'étatCopier les paramètres depuis NSCopier les paramètres NS (s\'ils existent)?
+ Thème d\'origine
+ Les boutons sont toujours affichés en bas de l\'écran
+ Grand écran
+ Thème
+
+ Jamais contacté
+ Réveil en cours
+ Erreur de communication
+ Expiration du délai d\'attente en communication
+ Pompe hors de portée
+ Configuration non valable
+ Activé
+ En veille
+
+
+ L\'intégration de la pompe Omnipod nécessite un boitier RileyLink (avec au minimum un firmware 2.0).
+
+ Bip Bolus Activé
+ Bip Basal Activé
+ Bip SMB activé
+ Bip DBT Activé
+ Options de débogage Pod activées
+ Changement de Zone/Heure Activé
+
+ Pod
+ État du Pod
+ %1$.2f U restantes
+ Plus de 50 U
+ Adresse du Pod
+ Pod Expiré
+ Pas d\'infos
+ Pas de Pod Connecté
+ Non initialisé
+ Activer Alertes Pod
+ Valid Alert
+
+ Omnipod (433.91 MHz)
+
+ Operation impossible.\n\nVous devez d\'abord configurer l\'Omnipod pour pouvoir faire cette operation.
+ Operation impossible.\n\nVous devez attendre quelques minutes, jusqu\'à ce que AAPS tente de définir le profil pour la première fois.
+ type d\'action d\'init Pod non autorisée : %1$s
+ Pas de Pod Actif.
+ Échec de vérification de la commande.
+ Erreur inconnue. Veuillez signaler ! (type : %1$s).
+ Échec de communication : paramètres d\'entrées reçus invalides.
+ Échec de communication : délai expiré.
+ Échec de communication : Erreur inconnue. Veuillez signaler !
+ Échec de communication : vérification de l\'intégrité du message échouée.
+ Échec de communication : paquet reçu du Pod invalide.
+ Échec de communication : état du Pod incorrect.
+ Échec de communication : réponse invalide reçue du Pod.
+ Échec de communication : message reçu du Pod avec un numéro de séquence invalide.
+ Échec de communication : message reçu du Pod avec une adresse invalide.
+ Échec de communication : échec du décodage du message reçu du Pod.
+ Échec de communication : resynchro nonce échouée.
+ Échec de communication : nonce non synchro.
+ Échec de communication : pas assez de données reçues du Pod.
+ Un défaut du Pod a été détecté (%1$03d %2$s). Veuillez désactiver votre Pod et en démarrer un nouveau.
+ Échec de communication : le Pod a renvoyé un message d\'erreur.
+
+ Gestion Pod
+ Init Pod
+ Désactiver Pod
+ Réinit. Pod
+ Historique Pod
+ Définir Bolus
+ Annuler Bolus
+ Définir le Basal Temporaire
+ Basal Temp Annulée (en interne par le pilote)
+ Basal Temp Annulée (par l\'utilisateur)
+ Définir le schéma de basal
+ État du Pod
+ Infos du Pod
+ Régler L\'heure
+ Configurer les alertes
+ Valider les Alertes
+ Suspendre l\'injection
+ Pousuivre l\'injection
+ Entrée inconnue
+ %1$.1f U
+ %1$.1f U, Gluc=%2$.1f g
+ Débit : %1$.1f U, Durée : %2$d min
+ Si vous appuyez sur OK, le Pod sera réinitialisé et vous ne pourrez plus communiquer avec lui. Ne le faite que si vous ne pouvez plus communiquer avec le Pod. Si vous pouvez toujours communiquer avec lui, veuillez utiliser l\'option Désactiver Pod.
+ Historique Pod non disponible pour le moment.
+ Remplir le Pod
+ \nRemplir le nouveau Pod avec suffisamment d\'insuline pendant 3 jours.\n\nÉcoutez les deux bips du Pod pendant le processus de remplissage. Ils indiquent que la quantité minimale de 85U a été ajouté. Assurez-vous de vider complètement la seringue de remplissage, même après avoir entendu les deux bips.\n\nAprès avoir rempli le Pod, veuillez appuyer sur Suivant.\n\nRemarque : Ne retirez pas la protection de l\'aiguille du Pod pour le moment.
+ Amorçage
+ Tentative d\'appairage et d\'amorçage du nouveau Pod.\n\nQuand tous les items sont cochées, appuyez sur Suivant.\n\nRemarque : Veuillez maintenir le Pod tout près du RileyLink en ce moment.
+ Collez le Pod
+ \nPréparez le site d\'injection. Enlevez la protection de l\'aiguille et le support adhésif et collez le Pod sur le site d\'injection.\n\nSi la canule se colle, appuyez sur Annuler et jetez votre Pod.\n\nAppuyez sur Suivant pour insérer la canule et démarrer l\'injection de la basal.
+ Insertion canule
+ Tentative de définir le schéma de basal et d\'insertion de la canule.\n\nQuand tous les items sont cochés, appuyez sur Suivant.
+ Infos Pod
+ \nLe Pod est maintenant actif.\n\nVos débits de basal ont été programmés et la canule a été insérée.\n\nVeuillez verifier que la canule a été insérée correctement et remplacez votre Pod si vous pensez que ce n\'est pas le cas.
+ Désactiver Pod
+ \nAppuyez sur Suivant pour désactiver le Pod.\n\nRemarque : Cela suspendra l\'injection de l\'insuline et désactivera le Pod.
+ Désactivation du Pod
+ Désactivation du Pod.\n\nQuand tous les items sont cochés, appuyez sur Suivant.\n\nRemarque : Si la désactivation échoue en permanence, appuyez sur Annuler et utilisez l\'option Réinit. Pod pour réinitialiser l\'état du Pod.
+ Pod désactivé.\n\nVeuillez enlever le Pod de votre corps et le jeter.
+ Appairer le Pod
+ Amorcer le Pod
+ Remplir tubulure
+ Définir profil de basal
+ Annuler l\'injection
+ Désactiver Pod
+
+
+ Intégration de la pompe Omnipod Dash.
+ Rappel fin d\'appairage
+ Rappel fin de configuration
+ Le Pod expire bientôt
+ Le Pod expire bientôt
+ Arrêt imminent
+ Réservoir bas
+ Alerte inconnue
+ Le paramétrage du profil basal a peut-être échoué. L\'injection pourrait être suspendue ! Veuillez actualiser l\'état du pod.
+ Le réglage de la basal temp a peut-être échoué. S\'il y avait déjà un DBT en cours, cela a peut-être été annulé ! Veuillez actualiser le statut du pod.
+ Le paramétrage de l\'heure a peut-être échoué. L\'injection pourrait être suspendue ! Veuillez actualiser l\'état du pod.
+ Impossible de vérifier si le bolus a réussi. Vérifiez que votre Pod délivre le bolus ou annulez le bolus.
+ État RL
+ Enreg. Pulse
+ Comparer les profils
+ Assistant Profil
+ Profil par défaut
+ Profil actuel
+ Profil disponible
+ Type de profil
+ Âge: %1$.0f DTI: %2$.0f U
+ Âge: %1$.0f DTI: %2$.0f U %3$d%%
+ Âge: %1$.0f Poids: %2$.0f kg
+ % de basal
+ Profil par défaut DPV
diff --git a/app/src/main/res/values-ga-rIE/strings.xml b/app/src/main/res/values-ga-rIE/strings.xml
index 197046af2c..94dbab337b 100644
--- a/app/src/main/res/values-ga-rIE/strings.xml
+++ b/app/src/main/res/values-ga-rIE/strings.xml
@@ -6,31 +6,25 @@
SainroghannaAn bhfuil tú cinnte gur mian leat an bhunachair sonraí a athshocrú?
+ ScoirLe do thoil atosaigh do ghuthán nó atosaigh AndroidAPS ó Socruithe an Chórais \nmura dhéanann tú é seo, ní bheidh logáil ag na appana AndroidAPS (tá sé tábhachtach na halgartaim a rianú agus a fhíorú go bhfuil siad ag obair i gceart)!Luachanna BG a fháil ón 600SeriesAndroidUploader.Sonraí a íoslódáil ó NightscoutLuachanna BG a fháil ó xDrip.
- Cuspóir
- mg/dL
- mmol/lMM640g
- TBB * 2IOBCOBPBAGEOAPS
- SMB
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values-hr-rHR/strings.xml b/app/src/main/res/values-hr-rHR/strings.xml
index f2c7564cc4..2578fce6a9 100644
--- a/app/src/main/res/values-hr-rHR/strings.xml
+++ b/app/src/main/res/values-hr-rHR/strings.xml
@@ -4,17 +4,15 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values-it-rIT/exam.xml b/app/src/main/res/values-it-rIT/exam.xml
index 746936afe5..ee7e7dc4d6 100644
--- a/app/src/main/res/values-it-rIT/exam.xml
+++ b/app/src/main/res/values-it-rIT/exam.xml
@@ -1,7 +1,7 @@
Cosa è vero riguardo DIA?
- Argomento: Durata dell\'Azione dell\'Insulina
+ Argomento: durata dell\'azione dell\'insulinaIl valore minimo è 3 ore.Il valore minimo è 5 ore.https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html?#insulin
@@ -13,26 +13,26 @@
Per evitare che AAPS somministri troppa insulina dopo un aumento di glicemia causato da carboidrati a veloce assorbimento usati per trattare una glicemia bassa.https://androidaps.readthedocs.io/en/latest/EN/Usage/temptarget.htmlQuale profilo può essere usato e configurato offline?
- Argomento: Profilo offline
+ Argomento: profilo offlineIl profilo NS può essere utilizzato, ma non configurato.https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html#profile
- Argomento: Disconnessione dal micro
+ Argomento: disconnessione dal microCosa dovrebbe essere fatto quando si disconnette il micro?Click su \'Disconnetti micro\' cosicché AAPS sappia che non viene erogata alcuna insulina.Click su \'Sospendi loop\' cosicché AAPS stoppi l\'attività di loop mentre il micro è disconnesso.Non cambiare alcunché in AAPS, solo disconnettere il micro.https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#other-settings
- Argomento: Impostazioni di AndroidAPS
+ Argomento: impostazioni di AndroidAPSQuali sono le migliori pratiche per il backup delle impostazioni?Esportarle localmente dal menu Manutenzione.
- Salvare il file esportato in un altro posto come l\'email, Dropbox, Google drive…
+ Memorizzare il file esportato in un altro posto come l\'email, Dropbox, Google drive…Esportarle subito dopo l\'installazione di AAPS.Esportarle dopo aver fatto modifiche d\'impostazione.Esportarle dopo il completamento di un obiettivo.Esportarle quando termini le configurazioni iniziali.https://androidaps.readthedocs.io/en/latest/EN/Usage/ExportImportSettings.htmlhttps://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#what-emergency-equipment-is-recommended-to-take-with-me
- Argomento: Letture CGM \"rumorose\" (noisy)
+ Argomento: letture CGM \"rumorose\" (noisy)Cosa dovrebbe essere fatto se i dati CGM sono \"rumorosi\"?Nulla, AAPS se ne occuperà.Disabilitare il loop per evitare il sovradosaggio.
@@ -40,7 +40,7 @@
Spegnere il telefono.https://androidaps.readthedocs.io/en/latest/EN/Usage/Smoothing-Blood-Glucose-Data-in-xDrip.html#smoothing-blood-glucose-dataVerificare che la tua app CGM faccia lo smoothing dei dati della glicemia.
- Argomento: Esercizio fisico
+ Argomento: esercizio fisicoCome puoi aiutare il sistema a gestire l\'esercizio fisico?Utilizzo della funzione temp-target.Fare un cambio profilo sotto il 100%.
@@ -49,19 +49,19 @@
Impostare un temp-target \"attività fisica\" prima dell\'inizio dell\'esercizio fisico.L\'impostazione di un temp-target \"attività fisica\" dopo l\'inizio dell\'esercizio fisico porta a risultati peggiori rispetto all\'avviarlo prima dell\'inizio dell\'esercizio.https://androidaps.readthedocs.io/en/latest/EN/Usage/temptarget.html#activity-temp-target
- Argomento: Loop Disabilitato/Sospeso
+ Argomento: loop disabilitato/sospesoRicevo insulina quando il loop è disabilitato/sospeso?Sì, l\'insulina basale continua a essere erogata.No, l\'erogazione di insulina è interrotta.
- Argomento: Basale, ISF e Test IC
+ Argomento: basale, ISF e test ICQuando dovrei verificare i valori di basali, ISF e IC?Prima che io inizi l\'attività di loop.Quando si verificano frequentemente glicemie basse.Quando si verificano frequentemente glicemie alte.https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#androidaps-settings
- Argomento: Prerequisiti
+ Argomento: prerequisitiDi cosa ho bisogno?
- Informazioni profilo convalidate (Basale, IC, ISF, DIA).
+ Informazioni profilo convalidate (basale, IC, ISF, DIA).Un computer per creare un APK.Un telefono supportato.Un\'auto.
@@ -74,7 +74,7 @@
https://androidaps.readthedocs.io/en/latest/EN/Module/module.htmlUno smartwatch.Un CGM Supportato.
- Argomento: Aggiornamento di AndroidAPS
+ Argomento: aggiornamento di AndroidAPSCosa è vero?Hai bisogno di avere Git installato.Aggiornare appena la nuova versione viene rilasciata e avere abbastanza tempo per farlo.
@@ -82,9 +82,9 @@
Non aggiornare mai se il sistema funziona bene.Chiedere al tuo amico il nuovo APK.https://androidaps.readthedocs.io/en/latest/EN/Installing-AndroidAPS/Update-to-new-version.html#update-to-a-new-version-or-branch
- Argomento: Risoluzione dei problemi
+ Argomento: risoluzione dei problemiDove cercare aiuto?
- Entrare nel gruppo Facebook di AndroidAPS.
+ Entrare nel gruppo facebook di AndroidAPS.Leggere la documentazione di AndroidAPS.Visitare la Gitter Room di AndroidAPS.Visitare il supporto Google di AndroidAPS
@@ -92,28 +92,28 @@
https://androidaps.readthedocs.io/en/latest/EN/Installing-AndroidAPS/Update-to-new-version.html#troubleshootinghttps://www.facebook.com/groups/aapsitalia/https://gitter.im/MilosKozak/AndroidAPS
- Argomento: Plugin Insulina
+ Argomento: plugin insulinaQuale marca di insulina può essere usata con il plugin \'Ultra-Rapid-Oref\'?Fiasp®NovoRapid®Humalog®Actrapid®https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html#insulin
- Argomento: Plugin di Sensibilità
+ Argomento: plugin di sensibilitàQuale algoritmo di sensibilità ha un intervallo di tempo configurabile?https://androidaps.readthedocs.io/en/latest/EN/Configuration/Sensitivity-detection-and-COB.htmlQuale plugin di sensibilità deve essere utilizzato per la funzione UAM?
- Argomento: Errori di immissione carboidrati
+ Argomento: errori di immissione carboidratiCosa dovresti fare se hai fatto un inserimento non corretto di carboidrati?Nella sezione Trattamenti, eliminare la voce carboidrati non corretta. Inserire nuovi carboidrati.Aggiungere insulina fittizia usando la funzione di riempimento
- Argomento: Cibo con Grassi e Proteine
+ Argomento: cibo con grassi e proteineCosa fare se il tuo cibo contiene una grande quantità di grassi e/o proteine?Convertire grassi e proteine in carboidrati e utilizzare la funzione \"carboidrati estesi\" (eCarbs).Convertire grassi e proteine in carboidrati e aggiungerli al calcolo del bolo.Utilizzare il bolo esteso per coprire grassi e proteine.https://androidaps.readthedocs.io/en/latest/EN/Usage/Extended-Carbs.html
- Argomento: Monitoraggio remoto
+ Argomento: monitoraggio remotoCome puoi monitorare AAPS del tuo bambino in remoto?Usando un sito Nightscout.L\'app Dexcom Follow se stai usando l\'app originale Dexcom (solo glicemia).
@@ -122,22 +122,22 @@
App Loop su iPhone.App Spike su iPhone.https://androidaps.readthedocs.io/en/latest/EN/Children/Children.html
- Argomento: Fattore di Sensibilità all\'Insulina
+ Argomento: fattore di sensibilità all\'insulinaValori ISF più alti portano a una minore erogazione di insulina quando AAPS corregge glicemie alte.Valori ISF più bassi portano a una minore erogazione di insulina quando AAPS corregge glicemie alte.Cambiare i valori di ISF non ha alcun effetto sulla quantità di insulina erogata quando AAPS corregge glicemie alte.
- Devi inserire ISF nelle Preferenze.
+ Devi inserire ISF in Preferenze.Cambiare il valore ISF nel tuo profilo è sufficiente per applicare la modifica.https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#insulin-sensitivity-factor-isf-mmol-l-u-or-mg-dl-uhttps://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html
- Argomento: Il Rapporto IC
+ Argomento: il rapporto ICRapporti IC più alti portano a una minore insulina erogata per una data quantità di carboidrati.Rapporti IC più bassi portano a una minore insulina erogata per una data quantità di carboidrati.Se hai 0 COB, cambiare il rapporto IC porterà a una differente quantità di insulina necessaria a correggere una determinata glicemia.IC sarà diverso se consideri l\'unità di pane (BE) come 10g o 12g.
- Il significato di IC è: Quante unità di pane (BE) sono coperte da 1U di insulina.
+ Il significato di IC è: quante unità di pane (BE) sono coperte da 1U di insulina.https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#carbohydrate-to-insulin-ratio-cr-g-u
- Argomento: Cambio profilo
+ Argomento: cambio profilo Quando si specifica il 90% nel cambio profilo…Le basali saranno il 10% più alte.Le basali saranno il 10% più basse.
@@ -157,12 +157,12 @@
Avviare un cambio profilo con un timeshift di 60Avviare un cambio profilo con un timeshift di -60https://androidaps.readthedocs.io/en/latest/EN/Module/module.html#good-individual-dosage-algorithm-for-your-diabetes-therapy
- Argomento: Aiuto le con velocità basali
+ Argomento: aiuto le con velocità basaliDove andare per avere aiuto con le velocità basali e il resto.Il tuo team diabetologicoGoogleFacebook
- Altri Medicinali
+ Altri medicinaliAAPS riduce la velocità basale per aumentare la glicemia. Farmaci appartenenti al gruppo degli inibitori dell\'SGLT2 (gliflozine) possono ostacolare l\'aumento previsto della glicemia e, quindi, provocare una pericolosa carenza di insulina (DKA).
\nI marchi più comuni sono: Invokana®, Forxiga®, Jardiance®, Steglatro®, Suglat®, Apleway®, Deberza®, Synjardy®, Vokanamet®, Xigduo®.\n\nCon ciò prometto che non prenderò tali farmaci durante l\'utilizzo di AAPS o disattiverò il loop prima di usare questi farmaci.
diff --git a/app/src/main/res/values-it-rIT/insight_alert_descriptions.xml b/app/src/main/res/values-it-rIT/insight_alert_descriptions.xml
index c2081e281f..38cba201f6 100644
--- a/app/src/main/res/values-it-rIT/insight_alert_descriptions.xml
+++ b/app/src/main/res/values-it-rIT/insight_alert_descriptions.xml
@@ -11,13 +11,13 @@
Cambia cartuccia.Cambia la batteria.Controlla lo stato del micro.
- Cambia set infusione.
+ Cambia set di infusione.Contatta il supporto Accu-Chek.Cambia cartuccia.Riavvia il download dei dati.Controlla lo stato del micro.Imposta il tipo di batteria.
- Imposta tipo di cartuccia.
+ Imposta il tipo di cartuccia.Cambia batteria e cartuccia.Cambia cartuccia.Cambia lingua.
diff --git a/app/src/main/res/values-it-rIT/insight_alert_titles.xml b/app/src/main/res/values-it-rIT/insight_alert_titles.xml
index 123334b48d..a73e53f864 100644
--- a/app/src/main/res/values-it-rIT/insight_alert_titles.xml
+++ b/app/src/main/res/values-it-rIT/insight_alert_titles.xml
@@ -1,9 +1,9 @@
Eroga bolo
- Bolo perso
+ Bolo mancanteSveglia
- Cambia set infusione
+ Cambia set di infusioneTBR completatoCartuccia quasi vuotaBatteria quasi scarica
@@ -11,7 +11,7 @@
Fine della garanziaTBR cancellatoBolo cancellato
- Avviso di prestito
+ Avviso prestitoCartuccia non inseritaCartuccia vuotaBatteria scarica
diff --git a/app/src/main/res/values-it-rIT/protection.xml b/app/src/main/res/values-it-rIT/protection.xml
index bb153b84e7..2b1d73801e 100644
--- a/app/src/main/res/values-it-rIT/protection.xml
+++ b/app/src/main/res/values-it-rIT/protection.xml
@@ -14,7 +14,9 @@
Password personalizzataNessuna protezioneProtezione
- La password master non è impostata!\n\nImposta la tua password Master in Preferenze (%1$s → %2$s)
+ La password master non è impostata!\n\nImposta la tua password master in Preferenze (%1$s → %2$s)
+ Fallback non sicuro
+ Per essere efficace, la protezione biometrica richiede una password master per impostare un\'alternativa in caso di necessità (fallback).\n\nImposta una password master!Password impostata!Password non impostataPassword non modificata
diff --git a/app/src/main/res/values-it-rIT/strings.xml b/app/src/main/res/values-it-rIT/strings.xml
index cc4b846a9b..3b53b7f31b 100644
--- a/app/src/main/res/values-it-rIT/strings.xml
+++ b/app/src/main/res/values-it-rIT/strings.xml
@@ -12,38 +12,31 @@
Resetta databaseVuoi davvero resettare i database?Esci
- Usa boli estesi per >200%%
- Dispositivo Bluetooth DanaRUtilizza sempre valori basali assolutiPer favore riavvia il tuo telefono oppure fai ripartire AndroidAPS dalle impostazioni di sistema \naltrimenti Android APS non farà il log (è importante monitorare e verificare che gli algoritmi stiano funzionando correttamente)!
- Questo dispositivo non sembra supportare la whitelist dell\'ottimizzazione della batteria: potrebbero verificarsi problemi di prestazioni.
+ Questo dispositivo non sembra supportare la whitelist dell\'ottimizzazione batteria: potrebbero verificarsi problemi di prestazioni.Alcuni tasti per accedere rapidamente alle funzioni comuni
- Inserisci voci di registro avanzate.Utilizzato per configurare i plugin attiviProgramma di apprendimento
- Visualizza l\'elenco dei cibi definiti in Nightscout
- Preset per insulina Humalog e NovoRapid
+ Visualizza i preset dei cibi definiti in Nightscout
+ Preset per insulina Humalog e NovoRapid / NovoLogPreset per insulina FiaspTi consente di definire il picco di attività dell\'insulina e deve essere utilizzato solo dagli utenti avanzati
- Attiva o disattiva l\'implementazione del loop.
+ Attiva o disattiva l\'implementazione per la gestione del loop.Sincronizza i tuoi dati con NightscoutStato dell\'algoritmo nel 2016Stato dell\'algoritmo nel 2017
- Algoritmo più recente per gli utenti avanzati
+ Algoritmo più recente per utenti avanzatiVisualizza lo stato corrente del tuo loop e i tasti per le azioni più comuni
- Mostra una notifica con una breve panoramica di ciò che sta facendo il tuo loop
- Definisci un profilo disponibile offline.
- Fornisce il profilo definito in Nightscout
- Imposta un profilo con un solo intervallo temporale.
+ Mostra una notifica persistente con una breve panoramica di ciò che sta facendo il tuo loop
+ Definisci un profilo che è disponibile offline.
+ Fornisce il profilo che hai definito in Nightscout
+ Definisci un profilo con un solo blocco temporale.Integrazione del microinfusore Accu-Chek Combo, è necessario avere ruffy installato
- Integrazione del microinfusore DANA Diabecare R
- Integrazione del microinfusore DANA Diabecare R Korean
- Integrazione del microinfusore DANA Diabecare R con firmware aggiornato
- Integrazione del microinfusore DANA Diabecare RSPer le persone in terapia multi-iniettivaPer microinfusori che non hanno ancora alcun driver (Loop aperto)La sensibilità è calcolata allo stesso modo di Oref0, ma puoi specificare l\'intervallo di tempo al passato. L\'assorbimento minimo dei carboidrati è calcolato da \'max tempo assorbimento pasto\' nelle preferenze.
- La sensibilità è calcolata dai dati delle ultime 8h o 24h (utilizzando tra i due periodi il più sensibile) e i carboidrati (se non assorbiti) vengono tagliati fuori dopo il tempo specificato nelle preferenze. Il Plugin calcola anche UAM.
+ La sensibilità è calcolata dai dati delle ultime 8h o 24h (utilizzando tra i due periodi il più sensibile) e i carboidrati (se non assorbiti) vengono tagliati fuori dopo il tempo specificato nelle preferenze. Il plugin calcola anche UAM.La sensibilità è calcolata come media ponderata dalle deviazioni. Le deviazioni più recenti hanno peso maggiore. L\'assorbimento minimo dei carboidrati è calcolato da \'max tempo assorbimento pasto\' nelle preferenze. Questo algoritmo è il più veloce nel seguire i cambiamenti di sensibilità.Ricevi valori glicemia dall\'app Eversense modificata.Ricevi valori glicemia da Glimp.
@@ -54,13 +47,6 @@
Monitora e controlla AndroidAPS usando il tuo smartwatch WearOS.Mostra le informazioni del loop sulla watchface di xDrip+.Controlla AndroidAPS in remoto utilizzando i comandi SMS.
- Unità
- DIA
- IC
- ISF
- Basale
- Target
- NESSUN PROFILO IMPOSTATOInsulina:CHO:IOB:
@@ -75,16 +61,10 @@
BGTTCHO
- Correzione
- U
+ CorrIOB da boloEsegui oraMICRO VIRTUALE
- Velocità basale originale
- Basale temporanea
- Bolo esteso
- Batteria
- SerbatoioOKUltima esecuzioneParametri di input
@@ -93,24 +73,19 @@
Dati IOBProfiloDati pasto
- Esito
+ RisultatoRisultato: %1$s %2$sDati glicemia non disponibili
- Nessun cambiamento richiestoRichiesta
- Tasso
- Durata
- MotivoGlicemiaDeltaDelta:Configuratore strutturale
- ObiettiviPanoramicaProfilo NSProfilo sempliceTrattamenti
- Micro Virtuale
+ Micro virtualePortaleMicroQuale microinfusore desideri utilizzare con AndroidAPS?
@@ -123,7 +98,6 @@
GeneraleQuesti sono alcuni plugin generali che potresti trovare utili.Quali vincoli sono applicati?
- giorniVincoliLoopLoop
@@ -132,25 +106,19 @@
Dopo elaborazione vincoliBasale temporanea impostata dal microUltima attivazione
- OK
- AnnullaNESSUN APS SELEZIONATO O RISULTATO FORNITOSicurezza
- Il Plugin è disabilitato
+ Il plugin è disabilitatoViolazione dei vincoliErrore erogazione bolo
- Errore erogazione basale temporaneaValore basale [%]Accetta nuova basale temporanea:TrattamentoCalcolatoreVincolo applicato!
- Conferma
- BoloBolo:Basale
- Basale
- CHO
+ Basale:Cambia il tuo input!Origine BGDa dove AndroidAPS dovrebbe ottenere i suoi dati?
@@ -158,34 +126,17 @@
Modalità APSLoop chiusoLoop aperto
+ Sospensione a glicemia bassa (LGS)Loop disabilitato
- Disabilita Loop
- Abilita Loop
+ Disabilita loop
+ Abilita loopNuovo suggerimento disponibile
+ Suggerimento CHOVersione non supportata di NightscoutLOOP DISABILITATO DAI VINCOLIIOB da basaleVincolo bolo applicatoVincolo CHO applicato
- Controllo BG
- Annuncio
- Nota
- Domanda
- Esercizio fisico
- Cambio posizione cannula
- Inserimento sensore
- Avvio Sensore
- Cambio serbatoio insulina
- Cambio profilo
- Bolo spuntino
- Bolo pasto
- Bolo di correzione
- Bolo combo
- Inizio basale temporanea
- Fine basale temporanea
- Correzione con CHO
- OpenAPS Offline
- Tipo di eventoAltroGlucometroSensore
@@ -207,8 +158,8 @@
Versione Nightscout:Mancanti %1$dgPreferenze esportate
- Esporta impostazioni su
- Importa impostazioni da
+ Esportare impostazioni su
+ Importare impostazioni daImpostazioni importateFile non trovatoEsporta impostazioni
@@ -217,11 +168,13 @@
Questo valore è chiamato max basale nel contesto OpenAPSMax IOB da basale a cui limitare OpenAPS [U]Questo valore è chiamato Max IOB nel contesto OpenAPS\nIndica l\'insulina massima in [U] che APS può erogare in contemporanea.
- RIMUOVITi verrà richiesta la password principale, che verrà utilizzata per crittografare le preferenze esportate.Ti verrà chiesta la password master, che è necessaria per decrittare le preferenze importate.Esportazione annullata! Le preferenze NON sono state esportate!Importazione annullata! Le preferenze NON sono state importate!
+ Impossibile importare le preferenze!
+ Torna alla schermata principale e riprova.
+ Seleziona il file da importareVerifica le preferenze prima dell\'importazione:Le preferenze non possono essere importate!Le preferenze non dovrebbero essere importate!
@@ -234,6 +187,8 @@
Stai utilizzando il formato precedente (obsoleto) delle vecchie versioni di APPS, che non è sicuro! Utilizzalo solo come ultima risorsa, se non hai un\'esportazione nel corrente formato JSON.Le preferenze importate hanno già %1$s giorni! Forse hai preferenze più aggiornate. Hai scelto il file sbagliato? Ricorda di esportare le preferenze regolarmente!Formato data-ora non valido!
+ Le preferenze arrivano da una differente versione secondaria dell\'applicazione (minor). Va bene se le stai importando dopo l\'aggiornamento, ma controlla che, dopo l\'importazione, le preferenze siano ancora corrette!
+ Le preferenze arrivano da una differente versione principale dell\'applicazione (major). Le versioni principali differiscono in modo significativo e potrebbero avere preferenze incompatibili! Assicurati che, dopo l\'importazione, le preferenze siano ancora corrette!Formato fileCreato:Versione AAPS
@@ -256,108 +211,55 @@
Errore decrittazione, la password fornita è errata o il file delle impostazioni è stato modificato! È possibile che il file importato sia stato esportato con una diversa password master.Configurazione crittografia mancante, il formato delle impostazioni non è valido!Algoritmo di crittografia non supportato o non specificato!
- DanaR
- Connessione
- Connesso
- Disconnesso
- Impostazioni micro Dana
+ esportato oggi
+ esportato %1$s fa
+ esportato il %1$s
+ esportato meno di un\'ora fa
+ nella directory: %1$sContratto di licenza per l\'utenteNON DEVE ESSERE UTILIZZATO PER PRENDERE DECISIONI MEDICHE. NON ESISTE ALCUNA GARANZIA PER IL PROGRAMMA, NELLA MISURA CONSENTITA DALLA LEGGE APPLICABILE. TRANNE QUANDO DIVERSAMENTE INDICATO PER ISCRITTO, I DETENTORI DEL COPYRIGHT E/O ALTRE PARTI FORNISCONO IL PROGRAMMA \"COSÌ COM\'È\" SENZA GARANZIA DI ALCUN TIPO, ESPLICITA O IMPLICITA, INCLUSE, MA NON LIMITATAMENTE A, GARANZIE IMPLICITE DI COMMERCIABILITÀ E IDONEITÀ PER UN SCOPO PARTICOLARE. L\'INTERO RISCHIO RIGUARDO LA QUALITÀ E LE PRESTAZIONI DEL PROGRAMMA È TUO. SE IL PROGRAMMA DOVESSE RISULTARE DIFETTOSO, TI ASSUMI IL COSTO DI TUTTE LE NECESSARIE MANUTENZIONI, RIPARAZIONI O CORREZIONI.COMPRENDO E ACCETTOSalva
- Nessun adattatore bluetooth trovato
- Dispositivo selezionato non trovato
- Errore connessione microinfusore
- IOB microinfusore
- Unità giornaliere
- Ultimo bolo
- %1$.1fh fa
- Dati di input non validi
- Valore non impostato correttamenteRicarica profilo
- Visualizza profilo
- Attivato
- Commento
- OK
- Percentuale
- Assoluto
- Cancella basale temporaneaComunicazioni SMS
- In attesa del risultatoNumeri di telefono consentiti+XXXXXXXXXX;+YYYYYYYYYYPer erogare il bolo di %1$.2fU rispondi col codice %2$sPer erogare il bolo pasto di %1$.2fU rispondi col codice %2$sPer impostare il Temp-Target %1$s rispondi con il codice %2$sPer cancellare il Temp-Target rispondi col codice %1$s
- Per disabilitare il Servizio di Controllo Remoto tramite SMS rispondi col codice %1$s.\n\nRicorda che potrai riattivarlo solo in maniera diretta dallo smartphone master in cui è installato AAPS.
- Servizio di Controllo Remoto tramite SMS stoppato. Per riattivarlo, usa lo smartphone master in cui è installato AAPS.
+ Per disabilitare il servizio di controllo remoto tramite SMS rispondi col codice %1$s.\n\nRicorda che potrai riattivarlo solo in maniera diretta dallo smartphone master in cui è installato AAPS.
+ Servizio di controllo remoto tramite SMS stoppato. Per riattivarlo, usa lo smartphone master in cui è installato AAPS.Per inviare la calibrazione %1$.2f rispondi col codice %2$sBolo fallitoNumero minimo di minuti che devono trascorrere tra un bolo remoto e il successivoQuanti minuti devono trascorrere, almeno, tra un bolo e il successivoPer la tua sicurezza, per modificare questa preferenza hai bisogno di aggiungere almeno 2 numeri di telefono.Bolo di %1$.2fU erogato con successo
- A erogare %1$.2fU
+ Sto per erogare %1$.2fUBolo di %1$.2fU erogato con successoBolo pasto di %1$.2fU erogato con successoTarget %1$s per %2$d minutiTarget %1$s per %2$d minuti impostato con successoTemp-Target cancellato con successo
- Erogazione di %1$.2fUConsenti comandi remoti tramite SMS
- Dito
- Sensore
- Manuale
- Target temporaneo
- Cancella target temporaneoImpostazioni profilo DanaRDIA [h]
- Durata Azione dell\'Insulina
- Impossibile aggiornare il profilo basale
- Ricarica
+ Durata azione dell\'InsulinaCaricamento
- Bolo E
- Bolo DS
- Bolo DE
- errore
- ricarica
- ora basale
- glicemia
- carboidrato
- allarme
- %1$d record totali caricati
- Bolo S
- Allarmi
- Ore basali
- Boli
- Carboidrati
- Insulina giornaliera
- Errori
- Glicemia
- Ricarica
- Sospensione
- In connessione per %1$d s
- Password microinfusore
- Password micro errata!
- Il micro è occupato
- Erogato
- StoppatoBolo stoppatoStop del bolo in corso
- Occlusione
- Stop
- STOP PREMUTO
- In attesa del micro
- Sto per erogare %1$.2fU
- Hai raggiunto il limite consentito
- Nessun profilo selezionato
- Il Loop è stato disabilitato
- Il Loop è stato abilitato
- Il Loop è disabilitato
- Il Loop è abilitato
+ Il loop è stato disabilitato
+ Il loop è stato abilitato
+ Il loop è disabilitato
+ Il loop è abilitato%1$.2f limitato a %2$.2fIl valore %1$s è fuori limite massimo
+ Per connettere il micro rispondi col codice %1$s
+ Connessione al micro fallita
+ Per disconnettere il micro per %1d minuti rispondi col codice %2$s
+ Micro disconnesso
+ Micro riconnessoIl comando da remoto non è permessoBolo remoto non disponibile. Riprova più tardi.Per avviare la basale %1$.2fU/h per %2$d min rispondi col codice %3$s
@@ -366,6 +268,9 @@
Per inserire %1$dg a %2$s rispondi col codice %3$sPer avviare la basale %1$d%% per %2$d min rispondi col codice %3$sPer sospendere il loop per %1$d minuti rispondi col codice %2$s
+ Per riprendere il loop rispondi col codice %1$s
+ Per abilitare il loop rispondi col codice %1$s
+ Per disabilitare il loop rispondi col codice %1$sBasale temporanea %1$.2fU/h per %2$d min avviata con successoBolo esteso %1$.2fU/h per %2$d min avviato con successoCHO %1$dg inseriti con successo
@@ -380,8 +285,8 @@
Basale temporanea: cancellazione fallitaBolo esteso: cancellazione fallitaComando sconosciuto o risposta errata
- Calcolatore Rapido
- Impostazioni Calcolatore Rapido
+ Calcolatore rapido
+ Impostazioni Calcolatore rapidoTesto:CHO:Valido:
@@ -389,52 +294,37 @@
ModificaRimuoviPasto
- Correzione
+ CorrAzioni
- AndroidAPS avviatoNS: solo upload (sincron. disabilitata)
- NS: solo upload. Non ha effetto su SGV a meno che non sia selezionata una fonte locale come xDrip. Non ha effetto sui Profili durante l\'utilizzo dei profili NS.
+ NS: solo upload. Non ha effetto su SGV a meno che non sia selezionata una fonte locale come xDrip. Non ha effetto sui profili durante l\'utilizzo dei profili NS.Micro non inizializzato!
- Micro non inizializzato, profilo non impostato!Carica/RiempiAssicurati che la quantità corrisponda alla specifica del tuo set di infusione!Altro
- Quantità standard di insulina per Carica/Riempi.
+ Carica/Riempi: quantità standard di insulinaTasto 1Tasto 2Tasto 3Unità:Unità
- mg/dl
- mmol/lDIAIntervallo target:Intervallo di visualizzazione
- Limite alto e basso per i grafici nella sezione Panoramica e sullo Smartwatch
+ Limite alto e basso per i grafici nella sezione Panoramica e sullo smartwatchLimite BASSOLimite ALTOSmartwatchInvia di nuovo tutti i datiApri impostazioni sullo smartwatch
- Errore micro
- Livello batteria basso
- Arresto micro
- Batteria del micro scarica
- DanaR KoreanVelocità basale:
- Impostazione profilo basale fallita
- Profilo basale aggiornato nel micro
- Disabilita la modalità EasyUI nel micro
- Abilita bolo esteso sul micro
- Cambia la modalità da U/d a U/h nel microValore basale inferiore al minimo. Profilo non impostato!BG:Ultimo BG:MDIMM640g
- Notifica in corso
+ Notifica persistenteDATI VECCHI
- %1$d min fa%1$dmin faProfilo localeOpenAPS AMA
@@ -450,46 +340,27 @@
IpoglicemiaAttività fisicaRimuovi record
- Statistiche DanaR
- TDD cumulativo
- TDD esponenzialmente ponderato
- Basale
- Bolo
- TDD
- Data
- Rapporto
- # Giorni
- Peso
- Probabilmente inaccurato se si usano i boli per il caricamento/riempimento al posto dell\'apposita funzione!
- Dati vecchi, premi \"RICARICA\"
- Basale originale totale
- TBB * 2
- Inizializzazione...AZNCONFLOOPPSOAPSPL
- DANAHOMEMICROVPROFILONSTRATT
- PTOBTSMWASMS
- Abbrevia i titoli delle schede
+ Accorcia titoli schedeUtilizza sempre il delta medio ridottoUtile quando i dati provenienti da sorgenti non filtrate come xDrip diventano \"rumorosi\" (instabili).
- Impostazioni avanzate
- Modello:%1$02X Protocollo:%2$02X Codice:%3$02XProfilo[Valore predefinito: 3] Questo è un parametro di sicurezza chiave in OpenAPS. Ciò che fa è limitare le tue basali a essere 3 volte, al più, la tua velocità basale massima. Probabilmente non avrai bisogno di cambiare questo valore, ma dovresti essere consapevole di cosa significa il gruppo di parametri \"3x max giornaliera; 4x corrente\" e per quali motivi di sicurezza siano stati impostati tali valori.
- [Valore predefinito: 4] Questo è un ulteriore parametro di sicurezza chiave in OpenAPS. La tua basale temporanea, indipendentemente dalla basale massima impostata sul micro, non può mai essere più alta di questo valore moltiplicato per tua basale corrente in ogni specifico momento. Questo serve a impedire alle persone di addentrarsi in \"territori pericolosi\" impostando basali massime eccessivamente alte prima di aver capito come funziona l\'algoritmo. Ancora una volta, il valore predefinito è 4x; la maggior parte delle persone non avrà bisogno di modificare questo valore e avrà, invece, maggiori probabilità di dover regolare le altre impostazioni.
+ [Valore predefinito: 4] Questo è un ulteriore parametro di sicurezza chiave in OpenAPS. La tua basale temporanea, indipendentemente dalla basale massima impostata sul micro, non può mai essere più alta di questo valore moltiplicato per la tua basale corrente in ogni specifico momento. Questo serve a impedire alle persone di addentrarsi in \"territori pericolosi\" impostando basali massime eccessivamente alte prima di aver capito come funziona l\'algoritmo. Ancora una volta, il valore predefinito è 4x; la maggior parte delle persone non avrà bisogno di modificare questo valore e avrà, invece, maggiori probabilità di dover regolare altre impostazioni se ha la sensazione di \"scontrarsi\" con questo limite di sicurezza.[Valore predefinito: 1.2]\nQuesto è un moltiplicatore di sicurezza per autosens (e presto autotune) per impostare un limite massimo del 20%% (col valore predefinito) su quanto alto può essere il rapporto di autosens, che a sua volta determina quanto in alto autosens può regolare le basali, quanto in basso può regolare ISF e quanto in basso può impostare il target glicemico.
- [Valore predefinito: 0.7]\nUn altro limite di sicurezza di autosens, imposta un blocco a quanto in basso autosens può regolare le basali e a quanto in alto può regolare ISF e i target glicemici.
+ [Valore predefinito: 0.7]\nUn altro limite di sicurezza di autosens, imposta un blocco a quanto in basso autosens può regolare le basali e a quanto in alto può regolare ISF e target glicemici.Autosens regola anche i target[Valore predefinito: vero]\nViene utilizzato per consentire ad autosens di regolare i target glicemici, in aggiunta a ISF e basali.[Valore predefinito: 2]\nBolus snooze è attivato dopo un bolo pasto per fare in modo che il loop non imposti basali temporanee basse quando hai appena mangiato. AndroidAPS non imposterà velocità basali troppo basse nel periodo corrispondente a DIA diviso il parametro bolus snooze - divisore DIA. Con DIA di 3 ore \"bolus snooze\" durerà 1.5 ore (3/2).
@@ -503,18 +374,9 @@
Calibrazione inviata. La ricezione deve essere abilitata in xDrip.xDrip non sta ricevendo calibrazioniMicro sospeso
- Ricezione stato micro
- Impostazione basale temporanea
- Stop basale temporanea
- Impostazione bolo esteso
- Stop bolo esteso
- Aggiornamento velocità basali
- DisconnessioneEsecuzioneImpostazioni micro virtualeCarica stato in NS
- Password Errata
- Si avvicina il limite giornaliero di insulinaNSClientNSCIURL:
@@ -533,12 +395,12 @@
Stato:In pausaCancella log
- NSCLIENT non ha il permesso di scrittura. API secret errato?
+ NSCLIENT non ha l\'autorizzazione di scrittura. API secret errato?Impostazioni smartwatchMostra IOB dettagliatoDividi IOB in bolo e basale sulla watchfacenon riuscito - controlla il telefono
- Non disponibile
+ n/aEtà del pazienteBambinoAdolescente
@@ -574,8 +436,6 @@
SuperboloRegistra l\'avvio dell\'app in NSUscita dall\'applicazione per applicare le impostazioni.
- DanaRv2
- InsulinaQuale tipo di insulina stai usando?Insulina Fast ActingNovorapid, Novolog, Humalog
@@ -596,11 +456,14 @@
Soglia livello serbatoio critico [U]Soglia di avviso livello batteria [%]Soglia livello batteria critico [%]
+ PREDIOBCOB
- Firmware
- Ultima connessione
- Stato bluetooth
+ BAS
+ DEV
+ ATT
+ ASS
+ PENDEVInformazioni suAutorizzazione SMS mancanteAutorizzazione stato telefono mancante
@@ -611,24 +474,15 @@
Aggiungi BGI alla statuslineNessun caricamento in NSTutti i dati inviati a NS vengono rifiutati. AAPS è connesso a NS, ma non vengono apportate modifiche
- Incremento basale
- Incremento boloCancella bolo estesoEtà sensoreEtà cannulaEtà insulina
- ore
- Profilo non valido !!!Cambia profiloEtà batteria micro
- Cambio batteria microOpzioni allarme
- Molto alto
- Alto
- Basso
- Molto basso
- Dati non aggiornati
- Dati non aggiornati da molto tempo
+ Crea notifiche da allarmi NS
+ Crea notifiche da avvisi NSSoglia dati non aggiornati [min]Soglia dati non aggiornati da molto tempo [min]Intervallo per autosens [h]
@@ -645,7 +499,6 @@
Impostazioni assorbimentoMax tempo assorbimento pasto [h]Tempo in ore in cui è previsto che tutti i carboidrati del pasto vengano assorbiti
- Visualizzare bolo esteso come %%SAGEIAGECAGE
@@ -670,35 +523,18 @@
MICRODurata [min]OpenAPS SMB
- SMBAbilita UAMAbilita SMB
- Utilizza Super Micro Boli al posto della basale temporanea per un\'azione più veloce
- Rilevazione dei pasti Non Annunciati
+ Utilizza super-micro-boli al posto della basale temporanea per un\'azione più veloce
+ Rilevamento dei pasti non annunciatiTempo picco Curva IOBTempo del picco [min]Free-Peak OrefRapid-Acting OrefUltra-Rapid Oref
- DIA di %1$f troppo breve - al suo posto, utilizzo %2$f.
+ DIA di %1$f troppo breve - utilizzo %2$f.Attiva profilo
- DataNON VALIDO
- In attesa di associare il micro
- Associazione OK
- Time out associazione
- Accoppiamento
- Nessun dispositivo trovato finora
- Serbatoio vuoto
- Avviso misurazione glicemia
- Livello insulina rimanente
- DanaRS
- Dana
- Micro selezionato
- Associa nuovo micro
- Velocità bolo
- Imposta incremento basale a 0.01 U/h
- Numero serialePercentualeTime shiftTemp-Target predefiniti
@@ -708,62 +544,43 @@
target \"attività fisica\"target \"ipoglicemia\" - duratatarget \"ipoglicemia\"
- Riempimento
- Ricezione stato bolo esteso
- Ricezione stato bolo
- Ricezione stato basale temporanea
- Ricezione stato micro
- Ricezione ora microriutilizzoControlli da smartwatch
- Imposta Temp-Target e inserisci Trattamenti dallo smartwatch.
- Time out connessione
+ Imposta Temp-Target e inserisci trattamenti dallo smartwatch.Cibog
- m
- h
- g]]>kJEnrPrtGrs]]>
- Attesa per la fine del bolo. Rimangono %1$d sec.
- Evento di elaborazione
- Avvio erogazione boloIl comando sarà eseguito ora
- Driver del micro correttoMicro irraggiungibileLetture BG mancantiUsa le notifiche di sistema per gli avvisi
- Allarmi locali
- Allarme se non si ricevono dati BG
- Allarme se il micro non è raggiungibile
+ Avvisi locali
+ Avviso se non si ricevono dati BG
+ Avviso se il micro è irraggiungibileSoglia micro irraggiungibile [min]
+ Avviso se sono richiesti CHOAllarme urgenteINFO
- Bluetooth
- BT Watchdog
- Spegne il bluetooth del telefono per qualche secondo se non è possibile alcuna connessione al micro. Questo può essere utile su alcuni telefoni.Eversense app (modificata)Carica dati BG su NSImpostazioni caricamento BGMostra delta dettagliatoMostra delta con una cifra decimale in più
- Frequenza di erogazione SMB (min)
+ Frequenza erogazione SMB (min)Max minuti SMBMax minuti di basale a cui limitare SMBSMB UAM max minutiMax minuti di basale a cui limitare SMB per UAM
- Soglia proposta CHO
- Quando vengono proposti carboidrati, la quantità minima per la quale verrà mostrata una notifica
- Firmware del micro non supportato
+ CHO minimi richiesti per il suggerimento
+ Quantità minima di carboidrati (in grammi) necessaria per visualizzare un avviso di suggerimento CHO. Al di sotto di questo numero non verrà attivata alcuna notifica.Invia dati BG a xDrip+In xDrip+ seleziona origine dati 640g/EversenseBG NSClient
- Valore basale sostituito dal minimo valore supportato: %1$s
- Valore basale sostituito dal massimo valore supportato: %1$sCalcolo BGCalcolo IOB da boloCalcolo IOB da basale
@@ -777,18 +594,16 @@
Calcolo target temporaneoLoop abilitatoAPS selezionato
- NSClient ha il permesso di scrittura
+ NSClient ha l\'autorizzazione di scritturaModalità chiusa abilitataMax IOB impostata correttamenteBG disponibile da sorgente selezionata
- Valori basali non allineati alle ore: %1$s
- Profilo non valido: %1$sProgrammazione micro per erogazioneRicaricaStatoAttivitàNessuna connessione per %1$d min
- %1$d%% (%2$d min restanti)
+ %1$d%% (%2$d min rimanenti)InizializzazioneSospeso a causa di un erroreSospeso dall\'utente
@@ -798,33 +613,31 @@
Erogazione bolo (%1$.1f U)AggiornamentoOperazione richiesta non supportata dal micro
- Utilizzo non sicuro: sono attivi boli estesi o multiwave. Il loop è stato messo in modalità di sola sospensione dell\'erogazione di insulina in caso di valori bassi, per 6 ore. In modalità loop sono supportati solo boli normali
- Utilizzo non sicuro: il micro utilizza un profilo della velocità basale diverso dal primo in elenco tra le sue impostazioni. Il loop è stato disabilitato. Selezionare sul microinfusore il profilo basale numero 1.
+ Utilizzo non sicuro: sono attivi boli estesi o multiwave. Il loop è stato messo in modalità di sola sospensione dell\'erogazione di insulina a glicemia bassa (LGS), per 6 ore. In modalità loop sono supportati solo boli normali
+ Utilizzo non sicuro: il micro utilizza un profilo della velocità basale diverso dal primo in elenco tra le sue impostazioni. Il loop è stato disabilitato. Selezionare sul micro il profilo basale numero 1.Un bolo con la stessa quantità è stato richiesto negli ultimi due minuti. Questo non è consentito al fine di evitare boli doppi accidentali e a protezione di eventuali \"bug\".AdessoLettura storico micro
- Storico microImpostazione profilo basale
- Livello serbatoio basso
+ Livello cartuccia bassoLivello batteria bassoIl micro sta mostrando l\'errore E%1$d: %2$sBassoVuotoNormaleNecessario aggiornare orologio micro
- Attenzione
+ AvvisoAvviso TBR CANCELLATO: confermatoIl micro potrebbe non essere raggiungibile. Nessun bolo erogatoErogazione bolo fallita. Sembra che nessun bolo sia stato erogato. Per sicurezza, controlla il micro per evitare un doppio bolo e se è tutto ok, erogalo di nuovo. Come protezione da eventuali \"bug\", i boli non vengono ripetuti automaticamente.Solo la quantità di %1$.2f U del bolo richiesto di %2$.2f U è stata erogata a causa di un errore. Controlla il micro per verificare quanto accaduto e intraprendi le azioni necessarie.
- Erogazione del bolo e verifica dello storico del micro fallite, si prega di controllare il micro. Se è stato erogato un bolo, sarà aggiunto ai trattamenti durante la successiva connessione al micro.
+ Erogazione del bolo e verifica dello storico del micro fallite. Controllare il micro. Se è stato erogato un bolo, sarà aggiunto ai trattamenti durante la successiva connessione al micro.Insulina nel serbatoio insufficiente per erogare il boloErrore erogazione bolo estesoSightfa
- %1$.2f h
- %1$d min
- %1$dm
+ Imposta basali temporanee neutre
+ Se abilitato, cancellerà una basale temporanea prima della fine di ogni ora. Questo metodo può aiutare a fermare alcuni micro dall\'emettere un suono/vibrare allo scoccare dell\'ora.Abilita SMB sempreAbilita SMB sempre, indipendentemente dai boli. Possibile solo con sorgente glicemia con un buon filtraggio dei dati, come G5Abilita SMB dopo i CHO
@@ -834,9 +647,7 @@
Abilita SMB con target temporaneiAbilita SMB quando è attivo un target temporaneo (pasto a breve, attività fisica)Abilita SMB con target temporanei \"alti\"
- Abilita SMB quando è attivo un target temporaneo \"alto\"
- Lascia eseguire la basale temporanea
- Muto
+ Abilita SMB quando è attivo un target temporaneo \"alto\" (attività fisica, sopra 100 mg/dl o 5.5 mmol/l)InsulinaCHOTasti
@@ -846,17 +657,23 @@
Quantità di insulina da aggiungere quando si preme il tastoImpossibile avviare l\'applicazione CGM. Assicurati che sia installata.CGM
+ Ignora | 5m
+ Ignora | 15m
+ Ignora | 30m
+ ricStoricoNotifica SMBMostra SMB sullo smartwatch come un bolo standard.Crea avvisi da errori
+ Crea avvisi da CHO richiestiCrea avviso su Nightscout per finestre di errore e allarmi locali (visualizzabile anche nella sezione Portale sotto la voce Trattamenti)
+ Crea avvisi su Nightscout dagli avvisi per CHO richiestiMostra le predizioni sulla watchface.PredizioniScelta dei datiInvio a fabric.ioConsenti la segnalazione automatica degli errori e l\'invio dei dati di utilizzo delle funzioni dell\'app agli sviluppatori tramite il servizio fabric.io.
- Aggiorna la tua app Dexcom ad una versione supportata
+ Aggiorna la tua app Dexcom a una versione supportataApp Dexcom non installata.Avvia TT Attività fisicaAvvia TT Pasto a breve
@@ -864,7 +681,7 @@
No bolo, solo recordCategoriaSottocategoria
- Il bolo sarà solo registrato
+ Il bolo sarà solo registrato (non erogato dal micro)Riempimento automatico glicemie mancanti da NSSMB impostato dal microAttività
@@ -878,17 +695,16 @@
Versione sviluppatore in esecuzione. Loop chiuso disabilitato.Engineering mode abilitataEngineering mode non abilitata e non su \'release branch\'
- %1$.2f U/hLettura profilo basaleLo storico del micro è cambiato dopo il calcolo del bolo. Il bolo non è stato erogato. Ricalcolare se un bolo è ancora necessario.Bolo erogato con successo, ma non è possibile aggiungere la voce ai trattamenti. Questo può accadere se due piccoli boli della stessa quantità sono stati somministrati negli ultimi due minuti. Verifica lo storico del micro e le voci della sezione Trattamenti e utilizza la sezione Portale per aggiungere eventuali voci mancanti. Assicurati di non aggiungere voci che si riferiscano al medesimo minuto e alla stessa quantità.Rifiuto basale temporanea \"alta\" in quanto il calcolo non ha considerato i cambiamenti recenti allo storico del microAggiornamento stato micro
- La velocità basale nel micro è cambiata e verrà aggiornata a breve
+ La velocità basale sul micro è cambiata e verrà aggiornata a breveVelocità basale cambiata sul micro, ma la sua lettura è fallitaControllo modifiche allo storicoSono appena stati importati più boli con la stessa quantità nello stesso minuto. Solo un record può essere aggiunto ai trattamenti. Controlla il micro e aggiungi manualmente un record di bolo utilizzando la sezione Portale. Assicurati di creare un bolo con un\'ora non utilizzata da nessun altro bolo.
- \n\nhttp://www.androidaps.org\nhttp://www.androidaps.de (de)\n\nfacebook:\nhttp://facebook.androidaps.org\nhttp://facebook.androidaps.de (de)
+ \n\nhttp://www.androidaps.org\n\nfacebook:\nhttp://facebook.androidaps.orgL\'ultimo bolo è più vecchio di 24 ore o ha una data nel futuro. Controlla che la data sul micro sia impostata correttamente.L\'ora/la data del bolo erogato sul micro sembra errata, IOB probabilmente non è corretto. Controlla l\'ora e/o la data del micro.Nessun cambio profilo. Effettua un cambio profilo o premi \"Attiva profilo\" nella sezione Profilo locale.
@@ -901,15 +717,10 @@
SMB disabilitato nelle preferenzeUAM disabilitato nelle preferenzeUAM disabilitato perché il plugin di sensibilità Oref1, dal quale UAM dipende, non è abilitato
- Limitazione max velocità basale a %1$.2f U/h a causa di: %2$s
- limite micro
- deve essere un valore positivomoltiplicatore max basalemoltiplicatore max basale giornalieraUn bolo è stato erogato negli ultimi 3 minuti, SMB ignoratoBasale impostata correttamente
- Limitazione max tasso percentuale a %1$d%% a causa di: %2$s
- Limitazione bolo a %1$.1f U a causa di: %2$sLimitazione bolo esteso a %1$.1f U a causa di: %2$sLimitazione max IOB a %1$.1f U a causa di: %2$sLimitazione carboidrati a %1$d g a causa di: %2$s
@@ -919,12 +730,11 @@
utilizzo non sicuroLettura stato fallitaRegistra cambio posizione cannula
- Registra cambio serbatoio insulina
+ Registra cambio cartuccia insulinaLe funzioni \"SMB sempre\" e \"SMB dopo i CHO\" sono disabilitate perché l\'attuale sorgente delle glicemie non supporta il filtraggio avanzatoSMB non consentito in modalità loop apertoCiboreset
- In attesa della sincronizzazione dell\'ora (%1$d sec)Disconnesso (%1$d m)Max IOB totale a cui limitare OpenAPS [U]Questo valore è chiamato Max IOB nel contesto OpenAPS\nOpenAPS non aggiungerà ulteriore insulina se IOB corrente è maggiore di questo valore
@@ -940,7 +750,6 @@
Configurazione guidataFINESeleziona la tua lingua
- Chiesto: %1$.2fU Erogato: %2$.2fU Codice errore: %3$sPrimo incremento di insulinaSecondo incremento di insulinaTerzo incremento di insulina
@@ -960,10 +769,9 @@
Moltiplicatore di sicurezza max basale giornalieraMoltiplicatore di sicurezza basale correnten/a
- Micro virtuale
+ Tipo micro virtualeDefinizione microBolo: Step=%1$s\nBolo Esteso: [Step=%2$s, Durata=%3$smin-%4$sh]\nBasale: Step=%5$s\nTBR: %6$s (di %7$s), Durata=%8$smin-%9$sh\n%10$s
- * Sono supportati solo valori discreti, non intervalli di valori, come incrementi per basale/bolo nel micro virtuale.Riempimento automatico BGImpostazioni CalcolatoreCalcoli inclusi nel risultato del Calcolatore:
@@ -971,45 +779,29 @@
Impostazioni generaliAbilita NSClientBenvenuto nella configurazione guidata. Ti seguirò durante tutto il processo.\n
- Setup Micro
+ Configurazione microLettura statoLe modifiche devono essere fatte in NSSalta configurazione guidataPremi il tasto in basso per permettere ad AndroidAPS di proporre/fare modifiche alla basaleConfigura il plugin APS
- Configura il plugin di Sensibilità
- Il plugin di Sensibilità è utilizzato per il rilevamento della sensibilità all\'insulina e il calcolo di COB. Per ulteriori informazioni visita:
+ Configura il plugin di sensibilità
+ Il plugin di sensibilità è utilizzato per il rilevamento della sensibilità all\'insulina e il calcolo di COB. Per ulteriori informazioni visita:https://github.com/MilosKozak/AndroidAPS/wiki/Sensitivity-detection-and-COBNSClient gestisce la connessione a Nightscout. Puoi saltare questa parte ora, ma non sarai in grado di superare gli obiettivi fino a quando non ne porterai a termine la configurazione.
- Ricorda: i nuovi profili di insulina richiedono una DIA di almeno 5h. DIA di 5 - 6h sui nuovi profili sono uguali a DIA di 3h sui vecchi profili di insulina.
+ Ricorda: i nuovi profili di insulina richiedono una DIA di almeno 5h. DIA di 5-6h sui nuovi profili sono uguali a DIA di 3h sui vecchi profili di insulina.Configura sorgente BGSeleziona il tipo di profilo. Se il paziente è un bambino dovresti utilizzare il profilo di NS. Se non c\'è nessuno a seguirti su Nightscout probabilmente preferirai il profilo locale. Ricorda che stai solo selezionando la sorgente del profilo. Per utilizzarlo devi attivarlo tramite l\'esecuzione del comando \"Cambio profilo\"Seleziona uno degli algoritmi disponibili. Sono ordinati dal più vecchio al più recente. L\'algoritmo più recente è solitamente più potente e più aggressivo. Pertanto, se sei un nuovo utente, probabilmente dovresti iniziare con AMA e non con l\'ultimo. Non dimenticare di leggere la documentazione di OpenAPS e di configurarlo prima dell\'uso.Avvia il tuo primo obiettivo
- Permesso
- Chiedi il permesso
- L\'applicazione richiede il permesso finestra di sistema per le notifiche
- L\'applicazione richiede l\'accesso alla posizione per eseguire lo scan bluetooth
- L\'applicazione richiede l\'accesso alla memoria per salvare i file di log
+ Autorizzazione
+ Chiedi l\'autorizzazione
+ L\'applicazione richiede l\'autorizzazione \"finestra di sistema\" per le notifiche
+ L\'applicazione richiede l\'accesso alla posizione per la scansione bluetooth e l\'identificazione WiFi
+ L\'applicazione richiede l\'accesso alla memoria per memorizzare i file di log ed esportare le impostazioniRichiestaConfigura il plugin InsulinaEsci
- Opzioni utente
- Formato dell\'ora
- Tasto di scorrimento
- Suono alla pressione del tasto
- Allarme
- Suono
- Vibrazione
- Entrambi
- LCD attivo [seconds]
- Retroilluminazione attiva [seconds]
- Unità glucosio
- Spegnimento [hours]
- Livello serbatoio basso [Units]
- Salva opzioni nel micro
- On
- OffApri navigazioneChiudi navigazionePreferenze plugin
@@ -1029,10 +821,8 @@
Quando viene rilevata sensibilità, aumentare la glicemia targetConfigurazione micro non valida, controlla la documentazione e verifica che il menu Quick Info sia denominato QUICK INFO utilizzando \"360 configuration software\".Personalizzato
- Grande differenza oraria
- Grande differenza oraria:\nL\'ora nel micro differisce per più di 1h e 30m. \nRegola l\'ora manualmente e assicurati che la lettura dello storico dal micro non causi comportamenti imprevisti.\nSe possibile, cancella la cronologia del micro prima di cambiare l\'ora oppure disabilita il loop chiuso per un tempo corrispondente al tuo valore DIA.Rimuovi gli eventi \"AndroidAPS avviato\"
- Trovate impostazioni salvate
+ Trovate impostazioni memorizzateAttenzione: se attivi e connetti un micro, AndroidAPS copierà le impostazioni della basale dal profilo al micro, sovrascrivendo la velocità basale esistente memorizzata sul micro. Assicurati di avere la giusta impostazione della basale in AndroidAPS. Se non sei sicuro o non vuoi sovrascrivere le impostazioni della basale sul micro, premi annulla e ripeti il processo in un altro momento.Dati trattamento incompletiImpostazioni manutenzione
@@ -1041,7 +831,7 @@
Numero di log da inviareManutenzioneMANUT
- Fornisce numerose funzioni per la manutenzione (ad es. invio log, eliminazione log).
+ Fornisce numerose funzioni per la manutenzione (es. invio log, eliminazione log).Invia log via EmailElimina logUn trattamento (insulina: %1$.2f, carboidrati: %2$d, a: %3$s) non può essere aggiunto ai trattamenti. Controlla e aggiungi il record necessario.
@@ -1056,17 +846,10 @@
Modalità APS preferitaTotaleCalc
- ConnessioneInvia agli sviluppatori i file log di oggi e di questo momento. Situazione inaspettata.
- Violazione bolo massimo
- Errore comando
- Errore velocità
- Violazione limite insulinaRichiesta minima di modifica [%]Il loop aperto mostrerà una nuova richiesta di modifica solo se la modifica è maggiore di questo valore in %. Il valore predefinito è 20%
- Associa il micro con il tuo telefono!Ricerca dispositivi…
- Attendi…Associazione completataI codici mostrati su questo dispositivo e sul micro combaciano?Associazione Insight
@@ -1077,7 +860,7 @@
Ora del micro aggiornataConfermaMuto
- Avviso microinfusore
+ Avviso microRegistra cambi posizioneRegistra cambi serbatoioRegistra cambi catetere
@@ -1086,9 +869,13 @@
Registra avvisiAbilita emulazione TBRUsa i bolli estesi invece dei TBR per aggirare il limite del 250%%
+ Erogazione bolo manuale: disabilita vibrazioni
+ Per bolo e bolo esteso (disponibile solo con firmware Insight 3.x)
+ Erogazione bolo automatica: disabilita vibrazioni
+ Per SMB e basale temporanea con emulazione TBR (disponibile solo con firmware Insight 3.x)Ritardo disconnessione [s]Numero seriale
- Versione software di rilascio
+ Versione Release softwareVersione UI processor softwareVersione PC processor softwareVersione MD tel processor software
@@ -1118,7 +905,7 @@
Abilita notifica di fine TBR\n(impostazione micro)Disabilita notifica di fine TBR\n(impostazione micro)Ricarica
- Integrazione microinfusore Accu-Chek Insight
+ Integrazione del microinfusore Accu-Chek InsightNon inseritoUltima conn: %1$d min faTBR: %1$d%% per %2$d / %3$d min
@@ -1127,10 +914,10 @@
TDD: %1$.2fSerb.: %1$.2fUBatt: %1$d%%
- Durata massima recupero [s]
- Durata minima recupero [s]
+ Max. durata recupero [s]
+ Min. durata recupero [s]Durata recupero
- Timeout durante la comunicazione - riavvia il bluetooth
+ Timeout durante la connessione - riavvia il bluetoothDomSabVen
@@ -1155,7 +942,6 @@
è uguale o maggiore diè maggiore dinon è disponibile
- sconosciutoGlicemia non disponibileGlicemia %1$s %2$.0f %3$sGlicemia %1$s %2$.1f %3$s
@@ -1165,30 +951,17 @@
O (OR)O (esclusivo - XOR)A %1$s
- Usa posizione di rete
- Usa posizione GPS
- Usa posizione passiva
+ Usa localizzazione di rete
+ Usa localizzazione GPS
+ Usa localizzazione passivaServizio di localizzazioneAutoAutomazione== ∑ %1$s U
- U/h
- g/U
- /URegistra cambio sensore in NSCrea evento \"Cambio Sensore\" in NS all\'avvio del sensoreTomato (MiaoMiao)Tomato
- secondo
- minuto
- ora
- giorno
- settimana
- secondi
- minuti
- ore
- giorni
- settimaneIl tuo nome utente per l\'accesso a Tidepool, generalmente il tuo indirizzo emailNome utenteLa tua password di Tidepool
@@ -1198,9 +971,9 @@
Usa server integrativi (test)TidepoolTDP
- Carica dati in Tidepool
+ Carica dati su TidepoolCarica dati CGM
- Carica trattamenti (insulina, carboidrati)
+ Carica trattamenti (insulina, CHO)Carica basali temporaneeCarica cambi profilo, target temporaneiCarica test BG
@@ -1215,7 +988,6 @@
Tempo ricorrenteOgniMai
- %1$dminCondizione:Azione:IOB [U]:
@@ -1224,14 +996,13 @@
AGGCOPIAAggiungi nuovo
- Controllo Versione
+ Controllo versioneVerificatore firmaAbbiamo rilevato che stai eseguendo una versione non valida. Loop disabilitato!versione datataversione molto datata
- Nuova versione disponibile per almeno %1$d giorni! Ritorno a LGS dopo %2$d giorni, disattivazione del loop dopo %3$d giorni
+ Nuova versione disponibile da almeno %1$d giorni! Ritorno a LGS dopo %2$d giorni, disattivazione del loop dopo %3$d giorni2h
- %1$.2fUDexcom app (modificata)DXCMRicevi valori glicemia dall\'app Dexcom modificata.
@@ -1276,142 +1047,6 @@
Trigger:RIMUOVIPresupposti:
-
- Operazione non supportata dal microinfusore e/o dal driver.
- Operazione NON ANCORA supportata dal microinfusore.
-
- Integrazione del micro Medtronic, richiede un dispositivo RileyLink e uno specifico modello di micro
-
- Numero Seriale micro
- Tipo micro
- Frequenza micro
- Ritardo prima che il Bolo sia avviato (s)
- Max bolo su micro (U)
- Max basale su micro (U/h)
- Codifica Medtronic
- US & Canada (916 MHz)
- Globale (868 Mhz)
- Codifica Software 4b6b
- Codifica Hardware 4b6b
- Risveglio e Sintonizzazione
- Cancella blocco bolo
- Reset Configurazione RileyLink
- Tipo batteria (Power view)
- Non selezionato (Simple view)
- Alcalina (Extended view)
- Litio (Extended view)
- NiZn (Extended view)
- NiMH (Extended view)
- Debug Bolo/Trattamenti
-
- SCAN
- STOP
- Selezionato
- Scansione RileyLink
- Bluetooth Low Energy non supportato.
- Bluetooth disabilitato.
- La posizione è disabilitata
- Affinché la ricerca bluetooth funzioni sui nuovi dispositivi, la localizzazione deve essere abilitata, ma può essere disabilitata dopo l\'associazione. AAPS non tiene traccia della tua posizione.
- Abilita
- No
- Scansione
- Scansione terminata
- Errore scansione: %1$d
- Mai
-
- Impostazioni
- Storico
- Stato RileyLink
- Stato micro
- Impostazioni RileyLink
- RileyLink
- Indirizzo configurato
- Dispositivo connesso
- Stato connessione
- Errore connessione
- Dispositivo
- Tipo dispositivo
- Modello dispositivo
- Ultima frequenza utilizzata
- Ultimo contatto dispositivo
- RL Firmware
-
- Inizializzazione bluetooth…
- Errore Bluetooth
- Bluetooth pronto
- Non avviato
- Inializzazione RileyLink…
- Errore RileyLink
- Sintonizzazione RileyLink e micro
- Problema di connessione al micro
- Connesso
-
- Il dispositivo non è RileyLink
- RileyLink non raggiungibile
- Bluetooth disabilitato
- Nessun adattatore bluetooth
- Sintonizzazione fallita
- Micro irraggiungibile
- Pod irraggiungibile
- Non impostato
-
- Micro Medtronic
- Omnipod
-
- Errori
- # seriale non impostato.
- # seriale non valido.
- Tipo micro non impostato.
- Tipo micro non supportato.
- Frequenza micro non impostata.
- Frequenza micro non supportata.
- Indirizzo RileyLink non valido.
- Il tipo di micro rilevato non è uguale al tipo configurato.
- L\'impostazione di modelli/profili basali non è abilitata sul micro. Abilitala sul micro.
- Il profilo basale impostato nel micro non è corretto (deve essere STD).
- Tipo TBR errato impostato nel micro (deve essere Assoluto).
- Max bolo errato impostato nel micro (deve essere %1$.2f).
- Max basale errata impostata nel micro (deve essere %1$.2f).
- Operazione non possibile.\n\n Devi prima configurare il micro Medtronic.
- È stata richiesta una modifica oraria di oltre 24h.
-
- Basali
- Configurazioni
- Notifiche
- Statistiche
- Sconosciuti
- Tutto
- Storico del micro Medtronic
-
- Mai connesso
- Risveglio
- Errore nella comunicazione
- Timeout della comunicazione
- Micro irraggiungibile
- Configurazione non valida
- Attivo
- In sospensione
-
- Hai cancellato il bolo, dopo che era già stato impostato sul microinfusore. Dal momento che il micro Medtronic non supporta la cancellazione, avrai bisogno di cancellare il bolo manualmente. Metti il micro in modalità sospensione e poi fallo ripartire (se vuoi ancora cancellare il bolo). L\'applicazione rileverà le modifiche al prossimo aggiornamento (in meno di 5 minuti).
- Impossibile leggere il TBR corrente.
- Impossibile cancellare il TBR corrente. Arresto dell\'operazione.
- Impostazione del profilo fallita. A causa dei seguenti pattern, hai una velocità basale troppo grande: %1$s
- Il bolo non può essere erogato.
- Il bolo non può essere erogato perché la quantità di insulina disponibile (%1$.2f) è inferiore al bolo richiesto (%2$.2f).
- Il TBR non può essere impostato.
- Impossibile cancellare il TBR corrente.
- Il profilo basale non può essere impostato.
- Il profilo basale è lo stesso, non sarà impostato di nuovo.
- Ottieni storico - Pagina %1$d (%2$d/16)
- Ottieni storico - Pagina %1$d
- Ottieni ora micro
- Ottieni impostazioni
- Ottieni modello micro
- Ottieni profilo basale
- Imposta profilo basale
- Ottieni basale temporanea
- Imposta basale temporanea
- Imposta boloCambia profilo inCambia profilo in %1$sUltima connessione al micro
@@ -1423,7 +1058,6 @@
%2$+.2fU]]>Vincolo Bolo applicato: %2$.2fU a %3$.2fU]]>!!!!! Rilevato assorbimento lento dei carboidrati: %2$d%% del tempo. Ricontrolla il tuo calcolo. COB potrebbero essere sovrastimati e potrebbe essere somministrata più insulina !!!!!]]>
- %1$.0f / %2$d UEroga parte del risultato del calcolatore [%]Il calcolatore esegue il calcolo, ma solo questa parte dell\'insulina calcolata è erogata. Utile con algoritmo SMB.Caricamento ...
@@ -1431,7 +1065,6 @@
Intervallo di tempoL\'intervallo di tempo è compreso tra %1$s e %2$sTra
- ChiudiAumento del valore max basale perché l\'impostazione è inferiore alla tua basale massima nel profiloCorpo del messaggio non valido%1$s ISF: %2$.1f
@@ -1449,7 +1082,6 @@
OffCancella completamentoCancella avvio
- Rilevazione tempoVuoi resettare l\'avvio dell\'obiettivo? Potresti perdere i tuoi progressi.Cambio di ora e/o fuso orario sul microNessun micro selezionato
@@ -1462,13 +1094,13 @@
ClonaSalva o reimposta prima le modifiche correntiRimuovere il profilo corrente?
- Creare nuovo profilo locale da questo cambio profilo?
+ Creare un nuovo profilo locale da questo profilo?Il nome profilo contiene dei punti.\nQuesto non è supportato da NS.\nIl profilo non viene caricato in NS.Valore più basso per l\'intervallo di visualizzazione dell\'area \"in range\"Valore più alto per l\'intervallo di visualizzazione dell\'area \"in range\"RiordinaEtà:
- Peso:
+ Peso:ID:InviaProfilo più comune:
@@ -1476,10 +1108,9 @@
SondaggioInserimento età non validoInserimento peso non valido
- %1$s: ∑: %2$.2f Bol: %3$.2f Bas: %4$.2f]]>
+ Inserimento % non valido%1$s: Basso: %2$02d%% In: %3$02d%% Alto: %4$02d%%]]>Media
- TDDTIRMonitor attivitàVuoi resettare le statistiche sull\'attività?
@@ -1489,12 +1120,8 @@
BGStrumentiMostra calcolo
- Errore
- 12h
- 24hEvento di automazioneGià impostato
- MessaggioCancellare la coda? Tutti i dati in coda andranno persi!L\'uso della funzione bolo esteso interromperà la modalità loop chiuso per il tempo di esecuzione del bolo esteso. Lo vuoi davvero?Loop chiuso disabilitato a causa dell\'esecuzione di un bolo esteso
@@ -1508,23 +1135,23 @@
Esecuzione basale temporanea (momento)Avvisi micro Insight
- da app Autenticatore per: %1$s
- Abilita Autenticatore
+ da app autenticatore per: %1$s
+ Abilita autenticatoreAutentica i comandi utilizzando OTP (One Time Password) generate da Google Authenticator o app 2FA simili.PIN aggiuntivo a fine tokenCifre aggiuntive che devono essere memorizzate e incollate alla fine di ogni OTP generata
- Configurazione Autenticatore
+ Configurazione autenticatoreOTP per verifica:
- Resetta Autenticatori
- Resetta Chiave Autenticatore
- Sei sicuro di resettare la chiave Autenticatore? Renderà non validi tutti gli Autenticatori attualmente configurati e sarà necessario configurarli nuovamente.
- La nuova Chiave Autenticatore è stata generata! Utilizza il QRCode aggiornato per fornire gli autenticatori.
- 1. Installa l\'Autenticatore
+ Resetta autenticatori
+ Resetta chiave autenticatore
+ Sei sicuro di resettare la chiave autenticatore? Renderà non validi tutti gli autenticatori attualmente configurati e sarà necessario configurarli nuovamente.
+ La nuova chiave autenticatore è stata generata! Utilizza il QRCode aggiornato per fornire gli autenticatori.
+ 1. Installa l\'autenticatore2. Scansione il codice per configurare i codici OTP di AndroidAPS3. Testa OTP
- Resetta Autenticatori
- Su ogni telefono follower installa una app Autenticatore che supporta i token RFC 6238 TOTP. App gratuite popolari sono:\n • Authy\n • Google Authenticator\n • LastPass Authenticator\n • FreeOTP Authenticator
- NON CONDIVIDERE questo codice online!\nUtilizzalo solo per configurare l\'app Autenticatore sui telefoni follower.
+ Resetta autenticatori
+ Su ogni telefono follower installa una app autenticatore che supporta i token RFC 6238 TOTP. App gratuite popolari sono:\n • Authy\n • Google Authenticator\n • LastPass Authenticator\n • FreeOTP Authenticator
+ NON CONDIVIDERE questo codice online!\nUtilizzalo solo per configurare l\'app autenticatore sui telefoni follower.Resettando l\'autenticatore rendi non validi tutti gli autenticatori già forniti. Dovrai configurarli di nuovo!Alla connessioneAlla disconnessione
@@ -1538,4 +1165,136 @@
Indicatori di statoCopia impostazioni da NSCopiare impostazioni NS (se esiste)?
+ Tema originale
+ I tasti vengono sempre visualizzati nella parte inferiore dello schermo
+ Visualizzazione ampia
+ Tema
+
+ Mai connesso
+ Risveglio
+ Errore nella comunicazione
+ Timeout della comunicazione
+ Micro irraggiungibile
+ Configurazione non valida
+ Attivo
+ In sospensione
+
+
+ Integrazione del microinfusore Omnipod, richiede un dispositivo RileyLink (con almeno il firmware 2.0).
+
+ BIP bolo abilitato
+ BIP basale abilitato
+ BIP SMB abilitato
+ BIP TBR abilitato
+ Opzioni debug pod abilitate
+ Rilevamento ora legale/fuso orario abilitato
+
+ GSTN pod
+ Stato pod
+ %1$.2f U rimanenti
+ Oltre 50 U
+ Indirizzo pod
+ Scadenza pod
+ No info
+ Nessun pod connesso
+ Non inizializzato
+ Attiva avvisi pod
+ Conferma avvisi
+
+ Omnipod (433.91 MHz)
+
+ Operazione non possibile.\n\nDevi prima configurare Omnipod.
+ Operazione non possibile.\n\n Devi attendere qualche minuto che AAPS imposti il profilo per la prima volta.
+ Illegal PodInitActionType: %1$s
+ Nessun pod attivo.
+ Verifica comando fallita.
+ Si è verificato un errore imprevisto. Segnalalo! (%1$s).
+ Comunicazione fallita: ricevuti parametri di input non validi.
+ Comunicazione fallita: timeout.
+ Comunicazione fallita: si è verificato un errore imprevisto. Segnalalo!
+ Comunicazione fallita: verifica dell\'integrità del messaggio fallita.
+ Comunicazione fallita: ricevuto un pacchetto non valido dal pod.
+ Comunicazione fallita: il pod è in uno stato non corretto.
+ Comunicazione fallita: ricevuta una risposta non valida dal pod.
+ Comunicazione fallita: ricevuto dal pod un messaggio con una sequenza numerica non valida.
+ Comunicazione fallita: ricevuto dal pod un messaggio con un indirizzo non valido.
+ Comunicazione fallita: non si è riuscito a decodificare il messaggio dal pod.
+ Comunicazione fallita: risincronizzazione \'nonce\' non riuscita.
+ Comunicazione fallita: \'nonce\' non sincronizzato.
+ Comunicazione fallita: non abbastanza dati ricevuti dal pod.
+ È stato rilevato un guasto al pod (%1$03d %2$s). Disattiva il tuo pod e avviane uno nuovo.
+ Comunicazione fallita: il pod ha restituito una risposta di errore.
+
+ Gestione pod
+ Inizializza pod
+ Disattiva pod
+ Resetta pod
+ Storico pod
+ Imposta bolo
+ Cancella bolo
+ Imposta basale temporanea
+ Cancella basale temporanea (internamente dal driver)
+ Cancella basale temporanea (forzato da utente)
+ Imposta piano basale
+ Ottieni stato pod
+ Ottieni info pod
+ Imposta ora
+ Configurazione avvisi
+ Conferma avvisi
+ Sospendi erogazione
+ Riprendi erogazione
+ Inserimento sconosciuto
+ %1$.1f U
+ %1$.1f U, CH=%2$.1f g
+ Tasso: %1$.1f U, Durata: %2$d min
+ Se premi OK, lo stato del pod verrà resettato forzatamente e non potrai più comunicare con il pod. Fallo solo se non riesci più a comunicare con il pod. Se puoi ancora a comunicare con il pod, utilizza l\'opzione Disattiva pod .
+ Storico pod non disponibile al momento.
+ Riempi il pod
+ \nRiempi il nuovo pod con abbastanza insulina per 3 giorni.\n\nResta in ascolto di due bip dal pod durante il processo di riempimento. Questi indicano che è stata inserita la quantità minima di 85U. Assicurati di svuotare completamente la siringa di riempimento, anche dopo aver sentito i due segnali acustici.\n\nDopo il riempimento del pod, premi Avanti.\n\nNota: non rimuovere la protezione dell\'ago del pod in questo momento.
+ Caricamento
+ Prova associazione nuovo pod e caricamento.\n\nQuando tutti gli elementi sono stati controllati, puoi premere Avanti.\n\nNota: mantieni il pod molto vicino al RileyLink in questo momento.
+ Collega il pod
+ \nPrepara il sito di infusione. Rimuovi la protezione dell\'ago del pod e il supporto adesivo e attacca il pod al sito di infusione.\n\nSe la cannula fuoriesce premi Annulla e cambia il tuo pod.\n\nPremi Avanti per inserire la cannula e iniziare l\'erogazione della basale.
+ Inserimento cannula
+ Prova impostazione piano basale iniziale e inserimento cannula.\n\nQuando tutti gli elementi sono stati controllati, puoi premere Avanti.
+ Info pod
+ \nIl pod è adesso attivo.\n\nIl tuo piano basale è stato programmato e la cannula è stata inserita.\n\nVerifica che la cannula sia stata inserita correttamente e sostituisci il tuo pod se avverti il contrario.
+ Disattiva pod
+ \nPremi Avanti per disattivare il pod.\n\nNota: Questo sospenderà tutta l\'erogazione di insulina e disattiverà il pod.
+ Disattivazione del pod
+ Disattivazione del pod.\n\nQuando tutti gli elementi sono stati controllati, puoi premere Avanti.\n\nNota: Se la disattivazione fallisce continuamente, premi Annulla e usa l\'opzione Resetta pod per resettare forzatamente lo stato del pod.
+ Pod disattivato.\n\nRimuovi il pod dal tuo corpo e gettalo.
+ Associa pod
+ Carica pod
+ Riempi cannula
+ Imposta profilo basale
+ Cancella erogazione
+ Disattiva pod
+
+
+ Integrazione del microinfusore Omnipod Dash.
+ Fine promemoria associazione
+ Fine promemoria configurazione
+ Il pod scadrà presto
+ Il pod scadrà presto
+ L\'arresto è imminente
+ Livello serbatoio basso
+ Avviso sconosciuto
+ L\'impostazione del profilo basale potrebbe essere fallita. L\'erogazione potrebbe essere sospesa! Ricarica lo stato del pod.
+ L\'impostazione della basale temporanea potrebbe essere fallita. Se era già in esecuzione una basale temporanea, questa potrebbe essere stata cancellata! Ricarica lo stato del pod.
+ L\'impostazione dell\'ora potrebbe essere fallita. L\'erogazione potrebbe essere sospesa! Ricarica lo stato del pod.
+ Impossibile verificare che il bolo sia riuscito. Verifica che il tuo pod stia erogando il bolo oppure cancellalo.
+ Statistiche RL
+ Log impulsi
+ Compara profili
+ Assistente profilo
+ Profilo predefinito
+ Profilo corrente
+ Profilo disponibile
+ Tipo profilo
+ Età: %1$.0f TDD: %2$.0f U
+ Età: %1$.0f TDD: %2$.0f U %3$d%%
+ Età: %1$.0f Peso: %2$.0f kg
+ % di basale
+ Profilo DPV predefinito
diff --git a/app/src/main/res/values-iw-rIL/strings.xml b/app/src/main/res/values-iw-rIL/strings.xml
index a3b1b0bc3c..d887a2593b 100644
--- a/app/src/main/res/values-iw-rIL/strings.xml
+++ b/app/src/main/res/values-iw-rIL/strings.xml
@@ -11,17 +11,15 @@
להפעיל או לכבות את הלולאה.מסנכרן את הנתונים שלך עם Nightscoutיבא פרופיל מ- Nightscout
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml
index f2c7564cc4..70cc9c5d48 100644
--- a/app/src/main/res/values-ja-rJP/strings.xml
+++ b/app/src/main/res/values-ja-rJP/strings.xml
@@ -17,4 +17,13 @@
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values-ko-rKR/exam.xml b/app/src/main/res/values-ko-rKR/exam.xml
index 7169780910..ee3cb67160 100644
--- a/app/src/main/res/values-ko-rKR/exam.xml
+++ b/app/src/main/res/values-ko-rKR/exam.xml
@@ -1,7 +1,6 @@
DIA에 대하여 올바른 것은?
- 주제: Duration of Insulin Action(DIA)최소값은 3시간입니다.최소값은 5시간입니다.https://androidaps.readthedocs.io/en/latest/CROWDIN/ko/Configuration/Config-Builder.html?#insulin
@@ -122,7 +121,6 @@
아이폰에서 Loop앱을 이용합니다.아이폰에서 Spike앱을 이용합니다.https://androidaps.readthedocs.io/en/latest/CROWDIN/ko/Children/Children.html
- 주제: ISF(인슐린 민감도)높은 ISF 값은 AAPS가 고혈당을 잡으려고 할때 보다 적은 인슐린 주입을 하게끔 합니다.낮은 ISF 값은 AAPS가 고혈당을 잡으려고 할때 보다 적은 인슐린 주입을 하게끔 합니다.ISF 값 변경은 AAPS가 고혈당을 잡으려고 할때의 인슐린양에 아무런 영향을 주지 않습니다.
@@ -130,7 +128,6 @@
변경사항을 적용하는데 프로파일에서 ISF 값 변경하는 것으로 충분합니다.https://androidaps.readthedocs.io/en/latest/CROWDIN/ko/Getting-Started/FAQ.html#insulin-sensitivity-factor-isf-mmol-l-u-or-mg-dl-uhttps://androidaps.readthedocs.io/en/latest/CROWDIN/ko/Usage/Profiles.html
- 주제: IC(인슐린-탄수화물 비)높은 IC 비율은 탄수화물 섭취시 인슐린이 보다 덜 주입되게 합니다.낮은 IC 비율은 탄수화물 섭취시 인슐린이 보다 덜 주입되게 합니다.COB가 0 인 경우 IC 비율을 변경하면 혈당을 교정하기 위해 다른 양의 인슐린이 주입됩니다.
diff --git a/app/src/main/res/values-ko-rKR/strings.xml b/app/src/main/res/values-ko-rKR/strings.xml
index 414d29fbd6..92b135a30c 100644
--- a/app/src/main/res/values-ko-rKR/strings.xml
+++ b/app/src/main/res/values-ko-rKR/strings.xml
@@ -12,13 +12,10 @@
데이터베이스 초기화데이터 베이스를 정말 초기화하시겠습니까?종료
- 200%%이상 주입 위해 확장 Bolus 사용
- 다나R 블루투스Basal 절대값 사용하기폰을 재부팅하거나 AndroidAPS를 재시작하세요 \n그렇지 않으면 로그 기록이 되지 않습니다.(알고리즘이 정상적인 작동하는지 확인하기 위해 로그가 필요합니다.)!이 장치는 배터리 최적화 화이트리스트를 지원하지 않습니다 - 성능 문제가 발생할 수 있습니다.일반 기능을 빠르게 실행시킬 버튼
- 고급 로그 항목을 입력합니다.활성화된 플러그인을 구성하는 데 사용됩니다.프로그램 배우기Nightscout에서 정의된 음식 설정을 표시합니다.
@@ -36,10 +33,6 @@
Nightscout에서 정의한 프로필을 사용합니다.하나의 시간대만 설정 가능한 단순 프로파일아큐-첵 Combo 펌프와 연동, ruffy 설치 필요
- 다나R 펌프와 연동(다나 RN)
- 내수용 다나R 펌프와 연동(다나 R)
- 업그레이드 펌웨어가 설치된 다나R 펌프와 연동
- 다나RS 펌프와 연동다회요법으로 관리하는 사용자를 위한 설정가상용 펌프를 위한 설정(Open Loop)Oref0와 동일한 방법으로 민감도가 계산되지만, 과거 시간을 지정할 수 있습니다. 최소 탄수화물 흡수는 설정에서 최대 탄수화물 흡수 시간으로 부터 계산됩니다.
@@ -53,13 +46,6 @@
WearOS 워치를 이용하여 AndroidAPS를 모니터하고 제어합니다.xDrip+ 워치페이스에서 Loop정보 보여주기SMS 전송을 이용하여 AndroidAPS를 원격 제어합니다.
- 단위
- 인슐린활동시간(DIA):
- 인슐린 대 탄수화물 비율(IC):
- 인슐린 민감도(ISF):
- Basal
- 목표:
- 프로파일이 설정되지 않았습니다.인슐린:탄수화물:IOB:
@@ -75,15 +61,9 @@
임시목표탄수화물교정
- UBolus IOB지금 실행가상 펌프
- 기본 Basal양
- 임시Basal
- 확장Bolus
- 배터리
- 인슐린 잔량네최근 실행입력 변수
@@ -95,16 +75,11 @@
결과결과: %1$s %2$s혈당 데이터 없음
- 변경사항 없음요청
- 주입량
- 기간
- 근거혈당증분Delta:구성 관리자
- 목표홈NS 프로파일Simple 프로파일
@@ -122,7 +97,6 @@
일반유용한 여러가지 플러그인어떤 제약을 적용합니까?
- 일제한LoopLoop
@@ -131,25 +105,19 @@
제약 적용 후펌프에 의한 임시Basal 설정최근 실행
- 네
- 취소APS가 선택되지 않았거나 계산된 결과가 없습니다.안전성플러그인이 사용불가능 합니다제한 위반Bolus 주입 에러
- 임시Basal 주입 에러Basal 값 [%]새 임시Basal 적용:관리계산기제한 적용!
- 확인
- BolusBolus:BasalBasal:
- 탄수화물입력값을 변경하세요!혈당 출처AndroidAPS가 어디에서 데이터를 가져옵니까?
@@ -166,25 +134,6 @@
Basal IOBBolus 제한이 적용되었습니다탄수화물 제한이 적용되었습니다
- 혈당 체크
- 알림
- 노트
- 의문
- 운동
- 펌프 위치 변경
- CGM 센서 삽입
- CGM 센서 시작
- 인슐린 카트리지 교체
- 프로파일 변경
- 간식Bolus
- Meal Bolus
- 교정Bolus
- 콤보Bolus
- 임시Basal 시작
- 임시Basal 종료
- 탄수화물 교정
- OpenAPS 오프라인
- 이벤트 종류기타측정기센서
@@ -212,39 +161,15 @@
파일을 찾을 수 없습니다설정 저장하기설정 불러오기
- 임시Basal 최대량 [U/hr]이 값은 OpenAPS에서 Max Basal(최대 Basal)로 설정되는 값입니다OpenAPS가 주입할수 있는 최대 Basal IOB [U]이 값은 OpenAPS에서 Max IOB라고 부르는 값입니다\n기본값은 0으로 설정되어 있습니다. 몇일 혹은 몇주 정도 사용 후 적절한 값으로 변경할 수 있습니다.
- 무시
- 다나R
- 연결중
- 연결됨
- 연결 끊김
- 다나 펌프 설정최종 사용자 라이선스 동의서이 프로그램을 의학적 결정을 내리는 데 사용해서는 안되며, 여기에 대한 어떠한 보증도 없습니다. 이 프로그램의 품질과 성능에 관한 모든 위험은 사용자에게 있습니다.\nMUST NOT BE USED TO MAKE MEDICAL DECISIONS. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.모두 이해하였고 동의합니다.저장
- 블루투스 어댑터를 찾지 못했습니다
- 선택된 기기를 찾지 못했습니다
- 펌프 연결 에러
- 펌프 IOB
- 일 인슐린 총량
- 최근 Bolus:
- %1$.1f시간 전
- 사용할수 없는 입력 데이터
- 값이 제대로 설정되지 않았습니다프로파일 새로고침
- 프로파일 보기
- 실행
- 의견
- 성공
- 퍼센트
- 절대값
- 임시Basal 취소하기SMS 통신기
- 결과 기다리는 중허가된 전화번호+XXXXXXXXXX;+YYYYYYYYYYBolus %1$.2fU 을 주입하려면 %2$s 를 입력하고 답장하세요
@@ -265,54 +190,13 @@
%2$d 분 동안 목표 %1$s%2$d 분 동안 목표 %1$s 설정이 완료되었습니다임시 목표 취소가 완료되었습니다
- %1$.2fU 주입중SMS 원격 명령 사용하기
- 채혈
- 센서
- 수동
- 임시 목표
- 임시 목표 취소DanaR 프로파일 설정인슐린활동시간(DIA) [h]인슐린 활동 기간
- Basal 프로파일 갱신 실패
- 새로고침업로드중
- E bolus
- DS bolus
- DE bolus
- 에러
- 교체
- Basal 시간
- 혈당
- 탄수화물
- 알람
- 총 %1$d 기록들이 업로드되었습니다.
- S bolus
- 알람
- Basal 시간
- Boluses
- 탄수화물
- 일일 인슐린
- 에러
- 혈당
- 교체
- 중지
- %1$d 초 동안 연결중
- 펌프 비밀번호
- 펌프 비밀번호가 잘못되었습니다!
- 펌프가 바쁩니다
- 주입됨
- 정지됨Bolus 중지됨Bolus 중지중
- 막힘
- 정지
- 정지 누름
- 펌프를 기다리는 중
- %1$.2fU을 주입합니다
- 허용된 제한값에 도달하였습니다
- 프로파일이 선택되지 않았습니다Loop가 중지되었습니다.Loop가 실행되었습니다.Loop가 중지중입니다.
@@ -352,22 +236,17 @@
Meal교정주입실행
- AndroidAPS 시작NS에 업로드만 하기(동기화 안됨)NS에 업로드만 하기. xDrip같은 로컬 혈당 출처가 선택되지 않다면 SGV에는 효력이 없습니다. NS프로파일이 사용중이라면 프로파일에는 효력이 없습니다.펌프가 초기화 되지 않았습니다!
- 펌프가 초기화와 프로파일 설정이 되지 않았습니다!교체/채움양이 인퓨전세트의 사양과 일치하는지 확인하세요!기타
- 교체/채움 기본 인슐린양버튼1버튼2버튼3단위:단위
- mg/dl
- mmol/lDIA목표 범위:차트 표시 범위
@@ -377,17 +256,7 @@
워치모든 데이터 다시 보내기워치에서 설정 열기
- 펌프 에러
- 배터리 부족
- 펌프 종료
- 펌프배터리 방전
- 다나R 한글Basal양:
- Basal 프로파일 설정이 실패하였습니다
- Basal 프로파일이 펌프에 업데이트 되었습니다
- 펌프에서 이지모드(EasyUI)를 해제하세요
- 펌프에서 확장Bolus를 활성화 하세요
- 펌프에서 U/d에서 U/h로 모드를 변경하세요Basal값이 최소값 이하입니다. 프로파일이 설정되지 않습니다!BG:Last BG:
@@ -395,7 +264,6 @@
미니메드640g연속 알림오래된 데이터
- %d분전%dmin ago로컬 프로파일OpenAPS AMA
@@ -411,47 +279,27 @@
저혈당활동기록 삭제
- DanaR 통계
- 누적 일총량
- 지수가중 일총량
- Basal
- Bolus
- 일총량
- 날짜
- 비율
- #일
- 가중
- 교체/채움을 위해 Bolus를 사용한 경우 부정확할 수 있습니다!!
- 오래된 데이터입니다. \"새로고침\"을 누르세요.
- 총 기본 Basal
- 총기초량 * 2
- 초기화중 ...ACTCONFLOOPSPOAPSLP
- DANA홈VPUMPNSPROFILETREAT
- CPOBJWEARSMS탭 이름 단축단순증분값 대신 단기평균증분값을 항상 사용합니다.xDrip의 혈당데이터에 노이즈가 심할경우 유용합니다.
- 고급 설정
- 모델: %1$02X 프로토콜: %2$02X 코드: %3$02X프로파일기본값: 3\n이 값은 중요한 OpenAPS 안전장치입니다. 이 값의 역할은 펌프에 설정되어 있는 최대Basal보다 3배를 초과할 수 없게 제한하는 것입니다. 이 값을 변경할 필요는 없을 것이지만, 안전을 위해 \"3x max daily; 4x current\"이 의미하는 바를 알고 있어야 합니다.기본값: 4\n이 값은 \"3x max daily; 4x current\"의 나머지 절반에 해당하는 또 다른 중요한 OpenAPS 안전장치입니다. 이것은, 펌프에 설정된 최대 Basal과는 관계없이, Basal이 설정된 현재시간의 Basal에 이 값을 곱한 양을 초과할 수 없다는 것을 의미합니다. 이는 알고리즘의 작동 방식을 이해하기 전에 과도하게 높은 최대 기본을 설정하여 위험한 상황에 빠지지 않도록 보호하기 위한 것입니다. 다시한번, 기본 값은 4배인 것을 알아두세요; 일반적으로 이것을 조정할 필요는 전혀 없으며, 대신 이 안전장치를 변경해야할것처럼 생각이 된다면, 다른 설정을 변경해야 할 가능성이 더 큽니다.기본값: 1.2\n이 옵션은 autosens의 최대 한계 값을 20%%로 제한하기 위해 autosens(곧 autotune)이 이용하는 승수값입니다. 이 값이 autosens에 대한 Basal의 최대 값, 인슐린 민감도(ISF)의 최소값 및 혈당 목표의 최소값을 결정케 합니다.기본값: 0.7\nautosens 안전 제한의 나머지 부분입니다. 이는 Basal을 얼마나 낮게 조절할 수 있는지, ISF와 혈당 목표범위를 얼마나 높게 설정할 수 있는지를 결정합니다.
- Autosens가 목표도 조절합니다.기본값: 활성\n이것은 autosens가 ISF와 Basal뿐만 아니라, 혈당 목표범위를 조절할 수 있게 합니다.기본값: 2\n식사주입 후 Bolus snooze가 수행되게 되고, 따라서 식사주입 직후엔 loop가 low temp에 대응하지 않게 됩니다. 기본값이 2일때 예제는 다음과 같습니다; DIA가 3시간일 경우 bolus snooz는 점차적으로 1.5시간에 걸쳐 단계적으로 사라지게 됩니다.(3DIA/2).기본값: 3.0 (AMA) 또는 8.0 (SMB). 5분당 탄수화물이 얼만큼 흡수되었는지에 대한 기본값 설정입니다. 기본값은 3mg/dl / 5분 입니다. 이는 혈당이 예상보다 빨리 떨어지거나 혹은 예상보다 오르지 않을때, COB가 얼마나 빨리 사라지게 되는지에 영향을 주게 되고, 추정된 탄수화물 흡수량이 미래 혈당 예측 계산시에도 영향을 주게 됩니다.
@@ -464,18 +312,9 @@
보정 전송됨. xDrip에서 수신이 되도록 설정되어 있어야 합니다.xDrip에서 보정을 받지 못합니다.펌프 일시중지됨
- 펌프 상태 가져오는중
- 임시Basal 설정중
- 임시Basal 취소중
- 확장Bolus 설정중
- 확장Bolus 취소중
- Basal양 업데이트중
- 연결끊기중실행중가상펌프 설정NS에 상태 업로드하기
- 잘못된 비밀번호
- 인슐린 일 허용량에 근접중내장 NSClientNSCIURL:
@@ -499,7 +338,6 @@
IOB 자세하게 보여주기워치페이스에 IOB를 Bolus IOB와 Basal IOB로 나누어서 보여줍니다.성공하지 못했습니다. 폰을 확인하세요
- 알수없음나이어린이청소년
@@ -532,8 +370,6 @@
Superbolus앱시작을 NS에 기록하기설정을 적용하기위해 앱을 종료합니다.
- 다나R v2
- 인슐린어떤 종류의 인슐린을 사용합니까?초속형 인슐린노보래피드, 휴마로그, 에피드라
@@ -548,9 +384,6 @@
배터리 잔량 위험값 [%]IOBCOB
- 펌웨어
- 마지막 접속
- 블루투스 상태버전정보SMS 권한 누락전화 상태 권한이 허가되지 않았습니다
@@ -561,24 +394,13 @@
BGI를 상태라인에 추가하기NS에 업로드하지 않기NS로 보낼 모든 데이터가 버려집니다. AAPS는 NS에 연결되어 있지만 NS에는 변화가 없을것입니다.
- Basal 단위
- Bolus 단위확장Bolus 취소센서 사용기간캐뉼라 사용기간인슐린 사용기간
- 시간
- 프로파일이 유효하지 않습니다!!!프로파일 변경 실행펌프배터리사용기간
- 펌프 배터리 교체알람 옵션
- 위험 고혈당
- 고혈당
- 저혈당
- 위험 저혈당
- 누락 데이터
- 위험 누락 데이터누락 데이터 기준값 [min]위험 누락 데이터 기준값 [min]autosens 시간 [h]
@@ -595,7 +417,6 @@
흡수 설정식사 최대 흡수 시간 [h]식사로 섭취한 탄수화물이 모두 흡수될기까지 예상되는 시간
- 확장Bolus를 %%로 표시하기SAGEIAGECAGE
@@ -620,7 +441,6 @@
펌프기간 [min]OpenAPS SMB
- SMBUAM 활성화하기SMB 활성화하기더 빠른 작용을 위해 임시Basal 대신 Super Micro Bolus 사용
@@ -632,23 +452,7 @@
초-초속효성 OrefDIA %1$f는 너무 짧습니다. 대신 %2$f을 사용하세요!프로파일 활성화하기
- 날짜유효하지 않음
- 펌프연동 대기중
- 연동완료
- 연동시간초과
- 동기화
- 현재까지 발견된 기기가 없습니다.
- 빈 주사기
- 혈당측정알람
- 남은 인슐린 양
- 다나RS
- Dana
- 선택된 펌프
- 새 펌프와 연동
- Bolus 속도
- Basal 단위를 0.01 U/h로 설정하세요
- 시리얼번호퍼센트시간 이동임시목표 기본값
@@ -658,32 +462,18 @@
활동 목표저혈당 기간저혈당 목표
- 교체
- 확장Bolus 상태 가져오는중
- Bolus 상태 가져오는중
- 임시Basal 상태 가져오는중
- 펌프설정 가져오는중
- 펌프시간 가져오는중재사용워치로 제어하기임시목표와 관리입력을 워치로 설정합니다.
- 연결시간초과음식g
- 분
- 시간
- 일]]>kJEn단백질지방]]>
- Bolus 종료를 기다리고 있습니다. %d초 남았습니다.
- 이벤트 처리중
- Bolus 주입을 시작합니다.명령을 지금 실행합니다.
- 펌프 드라이버가 수정되었습니다.펌프에 연결할 수 없습니다.혈당 읽기가 누락되었습니다.경고와 알림시 시스템 알림 사용하기
@@ -693,9 +483,6 @@
펌프 연결불가 기준시간 [min]긴급 알람정보
- 블루투스
- 블루투스 감시기능
- 펌프에 연결이 되지 않을때 폰의 블루투스를 1초간 껐다 켭니다. 블루투스 스택이 정지되는 일부폰에 이 기능이 도움이 됩니다.Eversense 앱(패치버전)NS에 혈당데이터 업로드하기혈당 업로드 설정
@@ -703,12 +490,9 @@
소수점 자리 추가된 증분값 보여주기SMB 최대 분SMB가 Basal을 제한할 수 있는 최대 시간(분)
- 지원되지 않는 펌프 펌웨어혈당 데이터를 xDrip+에 전송하기xDrip+ 데이터 소스에서 640g/Eversense을 선택하세요NSClient 혈당
- 지원되는 최소값으로 Basal값이 대체되었습니다:%1$s
- 지원되는 최대값으로 Basal값이 대체되었습니다:%1$s혈당 계산Bolus IOB 계산Basal IOB 계산
@@ -726,8 +510,6 @@
Closed 모드가 활성화됨최대 IOB가 바르게 설정됨선택한 소스에서 혈당이 들어옵니다.
- Basal값이 시간단위로 설정되지 않았습니다: %1$s
- 유효하지 않은 프로파일: %1$sBolus 주입을 위한 펌프 프로그래밍새로고침상태
@@ -748,7 +530,6 @@
2개의 동일한 양의 Bolus 주입이 요청되었습니다. 이중으로 Bolus가 주입 되는 사고를 막고 버그로부터 보호하기 위하여 이는 금지됩니다.현재펌프 이력 읽기
- 펌프 이력Basal 프로파일 설정펌프 카트리지 레벨이 낮습니다.펌프배터리가 부족합니다.
@@ -767,8 +548,6 @@
확장Bolus 주입 에러Sight전
- %1$.2f 시간
- %1$d 분항상 SMB 사용하기Bolus와 독립적으로 항상 SMB를 사용합니다. G5처럼 잘 필터된 혈당출처와만 사용이 가능합니다.탄수화물 이후 SMB를 사용합니다.
@@ -778,9 +557,6 @@
임시 목표에서 SMB 사용하기활성화된 임시 목표(식사직전, 운동)가 있으면 SMB를 사용합니다.높은 임시 목표에서 SMB 사용하기
- 활성화된 높은 임시 목표(운동)가 있으면 SMB를 사용합니다.
- 임시Basal 허용
- 음소거인슐린탄수화물버튼
@@ -808,7 +584,6 @@
실제 Bolus 주입않고, 기록만 하기분류하위 분류
- Bolus가 기록만 됩니다.NS에서 누락된 혈당이 자동으로 채워집니다.펌프에 의한 SMB 설정활동
@@ -822,7 +597,6 @@
개발자버전을 실행중입니다. Closed Loop는 비활성화 됩니다.전문가 모드 사용전문가 모드가 활성화되어 있지 않고 Release 버전이 실행되고 있지 않습니다.
- %1$.2f U/hBasal 프로파일 읽는중Bolus 계산이 수행된 후 펌프 이력이 변경되었습니다. Bolus가 주입되지 않았습니다. Bolus가 여전히 필요하다면 다시 계산하세요.Bolus가 성공적으로 주입되었지만, 관리 항목에 추가하지 못했습니다. 이것은 동일한 양의 소량의 2개의 Bolus가 최근 2 분 이내에 주입되는 경우에 발생할 수 있습니다. 펌프 이력과 관리 항목을 확인하고 손실된 항목을 추가하기위해 케어포털을 이용하세요. 동일한 시간과 인슐린양의 항목을 추가하지 마세요.
@@ -845,15 +619,10 @@
설정에서 SMB가 비활성화 되었습니다.설정에서 UAM이 비활성화 되었습니다.Oref1 민감도 플러그인이 필요하므로 UAM이 비활성화 되었습니다.
- %2$s로 인해 최대 Basal양이 %1$.2f U/h으로 제한됩니다.
- 펌프 제한
- 양의 값이어야 합니다.최대 Basal 승수최대 일 Basal 승수최근 3분 이내에 Bolus가 주입되었습니다. SMB를 건너뜁니다.Basal이 정상적으로 설정되었습니다.
- %2$s로 인해 최대 비율이 %1$d%%로 제한됩니다.
- %2$s로 인해 Bolus가 %1$.1f U로 제한됩니다.%2$s로 인해 확장Bolus가 %1$.1f U로 제한됩니다.%2$s로 인해 최대 IOB가 %1$.1f U로 제한됩니다.%2$s로 인해 탄수화물이 %1$d g로 제한됩니다.
@@ -868,7 +637,6 @@
Open Loop모드에선 SMB가 허용되지 않습니다.Food재설정
- 시간 동기화 대기중 (%1$d 초)연결 끊어짐 (%1$d분)OpenAPS가 초과 할 수 없는 총 IOB의 최대량 [U]이 값은 OpenAPS에서 Max IOB라고 합니다\n현재 IOB가 이 값보다 크면 OpenAPS는 인슐린을 추가로 주입하지 않습니다.
@@ -884,7 +652,6 @@
설정 마법사완료언어를 선택하세요
- 요청: %1$.2fU 전송: %2$.2fU 에러코드: %3$s1차 인슐린 증분2차 인슐린 증분3차 인슐린 증분
@@ -907,7 +674,6 @@
가성펌프 종류펌프 정의Bolus: 스텝=%1$s\n확장Bolus: [Step=%2$s, 기간=%3$s분-%4$s시]\nBasal: 스텝=%5$s\n임시Basal: %6$s (by %7$s), 기간=%8$s분-%9$s시\n%10$s
- * 가상 펌프에서는 Basal/Bolus에 대해 범위로 지정이 될 수 없고, 이산값(discrete values)만 지원 됩니다.혈당 자동채움마법사 설정마법사 결과에 사용 된 계산:
@@ -933,27 +699,9 @@
권한권한 요청하기알림에 대한 시스템 창 권한이 필요합니다
- 블루투스 스캔을 위해 위치 권한이 필요로 합니다.
- 로그 파일을 저장하기 위해 저장공간 권한이 필요로 합니다.요청인슐린 플러그인 설정하기종료
- 사용자 옵션
- 시간형식
- 버튼 스크롤
- 버튼 누르면 소리가 납니다.
- 알람
- 소리
- 진동
- 모두
- LCD 시간 [seconds]
- 화면조명 시간 [seconds]
- 혈당 단위
- 종료 [hours]
- 낮은 주사기량 [Units]
- 펌프로 옵션 저장
- 켜짐
- 꺼짐메뉴 열기메뉴 닫기플러그인 설정
@@ -969,8 +717,6 @@
유효하지 않은 펌프 설정, 문서를 확인하고 360 구성 소프트웨어를 사용하여 Quick Info menu의 이름이 QUICK INFO인지 확인하십시오.사용자 정의
- 큰 시간 차이
- 큰 시간 차이:\n펌프의 시간과 1.5시간 이상 차이가 납니다.\n펌프의 이력에서 잘못된 시간을 읽어들임으로써 예상치 못한 행동이 발생하지 않도록 펌프의 시간을 수동으로 변경하세요.\n가능하면 시간을 변경하기 전에 펌프의 이력을 삭제하거나, 설정된 DIA 시간동안 Closed Loop를 비활성화 하세요.\"AndroidAPS 시작\" 기록 삭제하기저장된 설정이 있습니다.주의: 활성화하고 펌프에 연결하게되면, AndroidAPS는 프로파일의 Basal설정을 복사해서 기존에 펌프에 저장되어 있던 Basal설정을 덮어쓰게 될것입니다. AndroidAPS의 Basal설정이 올바른지 반드시 확인하세요. 만약 확실치 않거나 Basal설정을 덮어씌우길 원치않는다면, 취소버튼을 누르고 나중에 다시 연결하세요.
@@ -994,17 +740,10 @@
선호하는 APS 모드합계Calc
- 통신 확인예상치 못한 상황 보고를 위해 오늘의 로그 파일을 개발자에게 전송합니다.
- 최대 Bolus 위반
- 명령 오류
- 속도 오류
- 인슐린 제한 위반최소 요청 변화 [%]Open Loop가 %단위로 이 값보다 변화가 더 클 경우에만 새 변경 요청을 팝업합니다. 기본값은 20 %입니다
- 펌프를 폰과 동기화 하십시오장치 검색중...
- 잠시 기다려 주세요...동기화 완료이 장치에서 보여지는 코드와 펌프에서 보여지는 코드가 동일한가요?Insight와 동기화
@@ -1093,7 +832,6 @@
같거나 큰보다 큰이용할 수 없음
- 알수없음혈당을 사용할 수 없습니다.혈당 %1$s %2$.0f %3$s혈당 %1$s %2$.1f %3$s
@@ -1110,23 +848,10 @@
자동자동화== ∑ %1$s U
- U/h
- g/U
- /U센서 교체 NS에 기록하기센서교체시 NS에 자동으로 \"센서 교체\" 이벤트를 생성합니다.Tomato (MiaoMiao)Tomato
- 초
- 분
- 시
- 일
- 주
- 초
- 분
- 시
- 일
- 주Tidepool 사용자명, 보통 이메일 주소입니다.로그인 사용자명Tidepool 로그인 비밀번호
@@ -1153,7 +878,6 @@
반복 시간매일절대
- %1$d분상태:실행:IOB [U]:
@@ -1169,7 +893,6 @@
아주 오래된 버전최소 %1$d일 새버전이 가능합니다! %2$d일 후엔 LGS(저혈당주입중지)으로 복귀되며, %3$d일이후엔 Loop가 비활성화 될 것입니다2h
- %1$.2fUDexcom 앱(패치버전)DXCM패치된 Dexcom 앱에서 혈당값 받기
@@ -1212,140 +935,6 @@
트리거:삭제전제 조건:
-
- 펌프 및/또는 드라이버가 작동을 지원하지 않습니다.
- 펌프에서 지원되지 않는 작동.
-
- 메드트로닉 펌프 연동에는 RileyLink와 특정 펌프 모델이 필요합니다.
-
- 펌프 일련번호
- 펌프 타입
- 펌프 주파수
- Bolus 시작전 지연시간(초)
- 펌프의 최대 Bolus(U)
- 펌프의 최대 Basal(U/h)
- 메드트로닉 인코딩
- 미국 & 캐나다(916 MHz)
- 타국가(868 Mhz)
- 소프트웨어 4b6b 인코딩
- 하드웨어 4b6b 인코딩
- 켜기 및 튜닝
- Bolus 블록 삭제
- RileyLink 구성 재설정
- 배터리 타입(파워뷰)
- 선택되지 않음(심플뷰)
- 알카라인(확장뷰)
- 리튬(확장뷰)
- NiZn (확장 뷰)
- Bolus/관리 디버깅
-
- 스캔
- 중지
- 선택됨
- RileyLink 스캔
- BLE(블루투스 저전력) 지원되지 않음
- 블루투스가 활성화되지 않았습니다.
- 위치가 활성화되지 않았습니다.
- 최신 스마트폰에서 블루투스 검색이 작동하려면 위치가 활성화되어 있어야합니다. AAPS는 당신의 위치를 추적하지 않으며 페어링에 성공한 후 비활성화 할 수 있습니다.
- 활성화
- 아니오
- 스캔중
- 스캔 완료
- 스캔 에러: %1$d
-
- 설정
- 이력
- RileyLink 상태
- 펌프 상태
- RileyLink 설정
- RileyLink
- 구성된 주소
- 연결된 장치
- 연결상태
- 연결에러
- 장치
- 장치타입
- 장치모델
- 최근사용 주파수
- 최근장치연결
- RL 펌웨어
-
- 블루투스 초기화중...
- 블루투스 에러
- 블루투스 준비
- 시작되지 않았습니다.
- RileyLink 초기화…
- RileyLink 에러
- RileyLink 와 펌프 튜닝
- 펌프 연결 문제
- 연결됨
-
- 장치가 RileyLink가 아닙니다.
- RileyLink에 연결할 수 없음
- 블루투스 비활성
- 블루투스 어댑터 없음
- 튜닝 실패
- 펌프에 연결할 수 없습니다.
- 포드에 연결할 수 없습니다.
- 설정되지 않음
-
- 메드트로닉 펌프
- 옴니포드
-
- 에러
- 일련번호 # 설정되지 않음
- 일련번호 # 유효하지않음.
- 펌프 타입이 설정되지 않았습니다.
- 지원되지 않는 펌프 타입입니다.
- 펌프 주파수가 설정되지 않았습니다.
- 지원되지 않는 펌프 주파수입니다.
- RileyLink 주소가 유효하지 않습니다.
- 감지된 펌프타입이 설정된 타입과 다릅니다.
- Basal 프로파일/패턴 설정이 펌프에서 활성화되지 않았습니다. 펌프에서 활성화해주세요.
- 펌프에 설정된 Basal 프로파일이 올바르지 않습니다 (STD 이어야 합니다).
- 펌프에 잘못된 TBR 유형이 설정되었습니다 (절대값이어야합니다).
- 펌프에 잘못된 최대 Bolus가 설정되었습니다 (%1$.2f 이어야 합니다.).
- 펌프에 잘못된 최대 Basal이 설정되었습니다 (%1$.2f 이어야 합니다).
- 작업이 불가능합니다.\n\n이 작업을 사용하려면 우선 메드트로닉 펌프를 구성해야합니다.
- 24시간 이상의 시간 변경이 요청되었습니다.
-
- Basal
- 환경설정
- 알림
- 통계
- 알수없음
- 모든
- 메드트로닉 펌프 이력
-
- 연결되지 않은
- 시작중
- 연결오류
- 연결시간초과
- 펌프에 연결할 수 없습니다
- 유효하지 않은 설정
- 활성
- 대기
-
- 펌프에서 이미 설정된 Bolus를 취소했습니다. 메드트로닉 펌프는 취소를 지원하지 않으므로 수동으로 취소해야합니다. (여전히 취소하길 원한다면) 펌프를 일시 중단 모드로 전환 한 다음 다시 시작하십시오. 다음 업데이트시 (5 분 이내에) 변경 사항을 적용합니다.
- 현재 TBR을 읽을 수 없습니다.
- 현재 TBR을 취소할 수 없습니다. 작동을 중지합니다.
- Basal이 너무 높아서 프로파일 설정이 실패했습니다 : %1$s
- Bolus가 주입되지 않았습니다.
- 사용 가능한 인슐린양(%1$.2f)이 요청된 Bolus(%2$.2f)보다 작기 때문에 Bolus를 주입할 수 없습니다.
- TBR 이 설정될 수 없습니다.
- 현재 TBR을 취소할 수 없습니다.
- Basal 프로파일을 설정할 수 없습니다.
- 동일한 Basal 프로파일이라 다시 설정하지 않습니다.
- 이력 받기 - 페이지 %1$d (%2$d/16)
- 이력 받기 - 페이지 %1$d
- 펌프 시간 받기
- 설정 받기
- 펌프 모델 받기
- Basal 프로파일 받기
- Basal 프로파일 설정
- 임시 Basal 받기
- 임시 Basal 설정
- Bolus 설정프로파일을 변경프로파일을 %1$s으로 변경펌프와의 마지막 연결
@@ -1357,7 +946,6 @@
%2$+.2fU]]>Bolus 제약 적용: %2$.2fU 에서 %3$.2fU]]>!!!!! 느린 탄수화물 흡수 감지: %2$d%% of time. 계산을 다시 확인하십시오. COB를 과대하게 측정하여 더 많은 인슐린이 주입될 수 있습니다 !!!!!]]>
- %1$.0f / %2$d UBolus 마법사 결과의 이 부분 주입[%]Bolus 마법사는 계산을 수행하지만 계산된 인슐린의 이 부분만 주입됩니다. SMB 알고리즘에 유용합니다.불러오는 중…
@@ -1365,7 +953,6 @@
시간 범위시간은 %1$s 와 %2$s사이입니다사이
- 닫기설정이 프로파일에서의 최대 Basal보다 낮은 이유로 최대 Basal을 올립니다잘못된 메시지 내용%1$s ISF: %2$.1f
@@ -1383,7 +970,6 @@
끄기완료 초기화시작 초기화
- 시간 감지목표를 초기화하시겠습니까? 진행상황이 삭제됩니다.펌프가 선택되지 않음사용하시는 혈당 단위를 선택하세요
@@ -1395,13 +981,11 @@
복사우선 현재 변경사항을을 저장하거나 재설정하세요현재 프로파일을 삭제 하시겠습니까?
- 이 프로파일 변경을 기반으로 새 로컬 프로파일을 만드시겠습니까?프로파일명에 점을 포함하고 있습니다.\n이는 NS에서 지원하지 않습니다.\n프로파일이 NS에 업로드되지 않습니다.혈당 정상범위의 하한값(표시 전용)혈당 정상범위의 상한값(표시 전용)정렬나이:
- 몸무게:ID:확인가장 많이 사용된 프로파일:
@@ -1409,10 +993,8 @@
조사유효하지 않은 나이입니다유효하지 않은 몸무게입니다
- %1$s: ∑: %2$.2f Bol: %3$.2f Bas: %4$.2f]]>%1$s: Low: %2$02d%% In: %3$02d%% High: %4$02d%%]]>평균
- TDDTIR활동 모니터활동 통계를 초기화하시겠습니까?
@@ -1422,12 +1004,8 @@
BG도구계산 표시
- 에러
- 12h
- 24h자동화 이벤트이미 설정됨
- 메시지대기열을 삭제하시겠습니까? 대기열에 있는 모든 데이터가 삭제됩니다!확장 Bolus 기능을 사용하는 동안에는 Closed Loop 모드가 중지됩니다. 정말 원하십니까?확장 Bolus 사용으로 인해 Closed Loop가 비활성화됨
@@ -1440,4 +1018,22 @@
임시 Basal 요청시간임시 Basal 실행시간
+
+ 연결되지 않은
+ 시작중
+ 연결오류
+ 연결시간초과
+ 펌프에 연결할 수 없습니다
+ 유효하지 않은 설정
+ 활성
+ 대기
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values-lt-rLT/exam.xml b/app/src/main/res/values-lt-rLT/exam.xml
index 2eb97c9785..dd8f3aba08 100644
--- a/app/src/main/res/values-lt-rLT/exam.xml
+++ b/app/src/main/res/values-lt-rLT/exam.xml
@@ -1,7 +1,7 @@
Koks atsakymas apie IVT yra teisingas?
- Tema: Insulino veikimo trukmė
+ Tema: Insulino veikimo trukmėMažiausia reikšmė - 3 valandos.Mažiausia reikšmė - 5 valandos.https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html?#insulin
@@ -122,7 +122,7 @@
Loop app iPhone telefone.Spike iPhone telefone.https://androidaps.readthedocs.io/en/latest/EN/Children/Children.html
- Tema: Jautrumo Insulinui Faktorius
+ Tema: Insulino jautrumo faktoriusDidesnė JIF reikšmė lemia mažesnį insulino tiekimą, kai AAPS koreguoja aukštą glikemiją.Mažesnė JIF reikšmė lemia mažesnį insulino tiekimą, kai AAPS koreguoja aukštą glikemiją.JIF reikšmės pakeitimas neturi įtakos AAPS leidžiamo insulino kiekiui koreguojant aukštą glikemiją.
@@ -130,7 +130,7 @@
Jei profilyje pakeisite JIF vertę, Ciklas į pokytį iškart atsižvelgs.https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#insulin-sensitivity-factor-isf-mmol-l-u-or-mg-dl-uhttps://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html
- Tema: IA santykis
+ Tema: Insulino ir angliavandenių santykisDidesnis insulino ir angliavandenių IA santykis reiškia, kad mažiau insulino reikia padengti tam tikram angliavandenių kiekiui.Mažesnis insulino ir angliavandenių IA santykis reiškia, kad mažiau insulino reikia padengti tam tikram angliavandenių kiekiui.Jei turite 0 AAO (aktyvių angliavandenių organizme), pakeitus IA, glikemija bus koreguojama kitokiu insulino kiekiu.
diff --git a/app/src/main/res/values-lt-rLT/objectives.xml b/app/src/main/res/values-lt-rLT/objectives.xml
index 2ef9dbd944..b833792c44 100644
--- a/app/src/main/res/values-lt-rLT/objectives.xml
+++ b/app/src/main/res/values-lt-rLT/objectives.xml
@@ -20,7 +20,10 @@
1 savaitę praleiskite sėkmingai naudodami uždarąjį ciklą dienos metu ir įvesdami visus valgomus angliavandeniusDienos metu aktyvuokite papildomas funkcijas, tokias kaip pažangioji maisto skaičiuoklė (AMA Advanced Meal Assist)Dienos metu aktyvuokite papildomas funkcijas, tokias kaip SMB (Super Mikro Bolusas)
+ Automatizavimo įjungimasNorėdami, kad SMB veiktų gerai, turite perskaityti dokumentaciją ir padidinti max AIO! Pradžiai patartina skaičiuoti taip: maxAIO=(didžiausia valandinė bazė x 3) + vidutinis bolusas
+ Perskaitykite automatizavimo dokumentaciją. Nustatykite pirmąsias paprastas taisykles. Užuot įjungę veiksmus, leiskite AAPS tik rodyti pranešimus. Kai būsite tikri, kad automatizavimas prasidės tinkamu laiku, pakeiskite pranešimą realiu veiksmu.
+(https://androidaps.readthedocs.io/en/latest/EN/Usage/Automation.html)KG matoma NSNS matomas pompos statusasĮvesti rankiniu būdu
diff --git a/app/src/main/res/values-lt-rLT/protection.xml b/app/src/main/res/values-lt-rLT/protection.xml
index 3ea04e700d..4057e2737a 100644
--- a/app/src/main/res/values-lt-rLT/protection.xml
+++ b/app/src/main/res/values-lt-rLT/protection.xml
@@ -1,2 +1,25 @@
-
+
+ Reikalingas tapatybės nustatymas
+ Uždėkite pirštą ant pirštų atspaudų skaitytuvo jūsų tapatybės patvirtinimui
+ Nustatymų apsauga
+ Programos apsauga
+ Bolusų apsauga
+ Pagrindinis slaptažodis
+ Nustatymų slaptažodis
+ Programos slaptažodis
+ Bolusų slaptažodis
+ Atrakinti nustatymus
+ Biometriniai
+ Pasirinktinis slaptažodis
+ Apsaugos nėra
+ Apsauga
+ Pagrindinis slaptažodis nėra nustatytas!\n\nPrašome nustatyti savo pagrindinį slaptažodį Nustatymuose(%1$s → %2$s)
+ Nesaugus atsarginis įrašas
+ Saugumui užtikrinti, biometrinei apsaugai reikia pagrindinio slaptažodžio atsarginiam įrašui.\n\nĮveskite pagrindinį slaptažodį!
+ Slaptažodis nustatytas!
+ Slaptažodis nenustatytas
+ Slaptažodis nepakeistas
+ Slaptažodis išvalytas!
+ Įveskite slaptažodį čia
+
diff --git a/app/src/main/res/values-lt-rLT/strings.xml b/app/src/main/res/values-lt-rLT/strings.xml
index 31c388d786..c9d1071b97 100644
--- a/app/src/main/res/values-lt-rLT/strings.xml
+++ b/app/src/main/res/values-lt-rLT/strings.xml
@@ -12,13 +12,10 @@
Iš naujo nustatyti duomenų bazęAr tikrai norite iš naujo nustatyti duomenų bazę?Išeiti
- Naudoti ištęstinį bolusą >200%%
- DanaR Bluetooth įrenginysVisada naudoti bazės absoliučias vertesPrašome iš naujo paleisti telefoną arba sistemos nustatymuose iš naujo paleisti AndroidAPS \nkitaip AndroidAPS negalės registruoti prisijungimų (svarbu stebėti ir tikrinti ar algoritmai veikia tinkamai)!Šis įrenginys nepalaiko baterijos optimizavimo išimčių - galite patirti veikimo nesklandumų.Mygtukai greitesniam pagrindinių funkcijų paleidimui
- Papildomų įrašų žurnalas.Naudojama aktyvių įskiepių konfigūravimuiMokymosi programaRodyti maisto ruošinius iš Nightscout
@@ -36,10 +33,6 @@
Nustato profilį, kuris įvestas Nightscout puslapyjeNustato profilį su vieninteliu laiko bloku.Accu-Chek Combo pompos integracija, reikalinga Ruffy programėlė
- DANA Diabecare R pompos integracija
- DANA Diabecare R pompos, skirtos vietinei P. Korėjos rinkai, integracija
- DANA Diabecare R pompos su atnaujinta programine-aparatine įranga integracija
- DANA Diabecare RS pompos integracijaIntegracija žmonėms, naudojantiems insulino injektoriusIntegracija pompoms, kurios dar neturi reikalingo valdiklio (Atviras Ciklas)Jautrumas insulinui apskaičiuojamas taip pat kaip ir Oref0, tačiau jūs galite nustatyti, koks praeities laikotarpis bus naudojamas. Minimalus angliavandenių įsisavinimo greitis apskaičiuojamas remiantis maksimaliu angliavandenių įsisavinimo greičiu, kuris įvestas Nustatymuose.
@@ -54,13 +47,6 @@
Stebėti ir kontroliuoti AndroidAPS naudojant WearOS laikrodį.Rodyti Ciklo informaciją laikrodyje, xDrip+ pradžios ekrane.Nuotolinis AndroidAPS valdymas naudojant SMS komandas.
- Vienetai
- IVT
- IA
- JIF
- Valandinė bazė
- Tikslas
- Nenustatytas profilisInsulinas:AV:AIO:
@@ -76,15 +62,9 @@
LTAVKorekcija
- VBolusų AIOPaleisti dabarVirtuali pompa
- Pagrindinis bazės dydis
- Laikina bazė
- Ištęstas bolusas
- Baterija
- RezervuarasGeraiPaskutinis veiksmasĮvesties parametrai
@@ -96,16 +76,11 @@
RezultatasRezultatas: %1$s %2$sNėra gliukozės duomenų
- Pakeitimai nereikalingiUžklausa
- Vertė
- Trukmė
- PriežastisGliukozėPokytisPokytis:Konfigūracija
- TikslaiApžvalgaNS profilisPaprastas profilis
@@ -123,7 +98,6 @@
BendriejiBendrieji įskiepiai, kurie gali praversti.Kokie apribojimai taikomi?
- d.ApribojimaiCiklasCiklas
@@ -132,25 +106,19 @@
Pritaikius apribojimusLaikina bazė nustatyta pompojePaskutinis veiksmas
- Gerai
- AtšauktiNEPASIRINKTA DKS ARBA NĖRA REZULTATOSaugumasĮskiepis išjungtasApribojimų pažeidimasBoluso suleidimo klaida
- Laikinos bazės suleidimo klaidaValandinė bazė [%]Patvirtinti naują laikiną bazę:TerapijaSkaičiuotuvasTaikomas ribojimas!
- Patvirtinimas
- BolusasBolusas:Valandinė bazėValandinė bazė:
- AVPakeiskite įvestus duomenis!Glikemijos šaltinisIš kur AndroidAPS gaus duomenis?
@@ -158,34 +126,17 @@
DKS režimasUždaras CiklasAtviras Ciklas
+ Sustabdymas esant žemai gliukozeiCiklas išjungtasIšjungti CikląĮjungti CikląGautas naujas pasiūlymas
+ Angliavandenių pasiūlymasNepalaikoma Nightscout versijaCIKLAS NEAKTYVUS DĖL APRIBOJIMŲBazės AIOPritaikytas boluso apribojimasPritaikytas AV apribojimas
- KG testas
- Pranešimas
- Pastaba
- Klausimas
- Fizinis aktyvumas
- Kateterio keitimas
- NGJ įvedimas
- NGJ paleidimas
- Rezervuaro keitimas
- Profilio keitimas
- Bolusas užkandžiui
- Bolusas valgiui
- Bolusas korekcijai
- Kombinuotas bolusas
- Pradėta laikina bazė
- Užbaigta laikina bazė
- AV korekcijai
- OpenAPS neprisijungus
- Įvykio tipasKitiMatuoklisSensorius
@@ -217,11 +168,11 @@
Šis skaičius OpenAPS kontekste vadinamas maks. valandine bazeDidžiausias valandinės bazės insulino kiekis, kurį gali suleisti OpenAPS [U]Ši vertė OpenAPS kontekste vadinama Maks AIO\nTai maksimalus insulino vienetų [U] skaičius, kurį DKS gali suleisti vienu metu.
- ATMESTIJūsų paprašys nustatyti slaptažodį, kuris bus naudojamas užšifruojant eksportuojamus nustatymus.Jūsų paprašys nustatyti slaptažodį, kuris bus naudojamas atšifruojant importuotus nustatymus.Eksportas nutrauktas! Nustatymai NE eksportuoti!Importas nutrauktas! Nustatymai NE importuoti!
+ Pasirinkite failą importavimuiPrašom patikrinti nustatymus prieš importuojant:Nustatymai negali būti importuoti!Nustatymai neturėtų būti importuoti!
@@ -234,6 +185,8 @@
Jūs naudojate pasenusį formatą iš senos AAPS versijos, kuris nėra saugus! Naudokite tik kraštutiniu atveju, jei neturite nustatymų failo dabartiniu, JSON formatu.Importuoti nustatymai yra %1$s d. senumo! Patikrinkite, gal pasirinkote neteisingą failą ir turite naujesnius? Nepamirškite reguliariai eksportuoti nustatymų!Neteisingas datos ir laiko formatas!
+ Parametrai iš kitos palaikomosios programos versijos. Jei importuojate po atnaujinimo, tai yra normalu, bet po importavimo patikrinkite, ar visos nuostatos vis dar teisingos!
+ Parametrai iš kitos pagrindinės programos versijos. Pagrindinės versijos labai skiriasi ir gali turėti nesuderinamų parametrų! Po importavimo įsitikinkite, kad parametrai vis dar teisingi!Failo formatasSukurtaAAPS versija
@@ -256,34 +209,17 @@
Iššifravimas klaida, slaptažodis yra neteisingas arba nustatymų failas buvo pakeistas! Taip nutinka, jei importuotas failas buvo eksportuotas su kitu slaptažodžiu.Trūksta šifravimo sąrankos parametrų, nustatymų formatas yra neteisingas!Nepalaikomas arba nepatikslintas šifravimo algoritmas!
- DanaR
- Jungiamasi
- Prisijungta
- Atsijungta
- Dana pompos nustatymai
+ eksportuota šiandien
+ eksportuota prieš %1$s
+ eksportuota %1$s
+ eksportuota mažiau nei prieš valandą
+ kataloge: %1$sLicencinė sutartis su vartotojuPROGRAMA NEGALI BŪTI NAUDOJAMA GYDYMO SPRENDIMAMS PRIIMTI. PAGAL GALIOJANČIUS ĮSTATYMUS PROGRAMA NESUTEIKIA JOKIŲ GARANTIJŲ VARTOTOJUI. JEI RAŠTU NENURODYTA KITAIP, PROGRAMOS AUTORINIŲ TEISIŲ TURĖTOJAS IR/AR KITOS ŠALYS PATEIKIA PROGRAMĄ \"KAIP YRA\" BE JOKIŲ GARANTIJŲ, TIEK AKIVAIZDŽIŲ, TIEK NUMANOMŲ, ĮSKAITANT, BET NEAPSIRIBOJANT GALIMYBĘ NAUDOTI PROGRAMĄ KOMERCINIAMS AR KITOKIEMS DALINIAMS TIKSLAMS. RIZIKĄ, KYLANČIĄ NAUDOJANT PROGRAMĄ PRISIIMA PATS VARTOTOJAS. JEI PROGRAMA VEIKIA NETINKAMAI, IŠLAIDOS, SUSIJUSIOS SU PROGRAMOS SERVISU, TAISYMU AR KOREGAVIMU, TENKA VARTOTOJUI.SUPRATAU IR SUTINKUIšsaugoti
- Bluetooth adapteris nerastas
- Pasirinktas įrenginys nerastas
- Pompos prisijungimo klaida
- Pompos AIO
- Paros insulinas
- Paskutinis bolusas
- Prieš %1$.1f val.
- Neteisingai įvesti duomenys
- Vertė nėra tinkamai nustatytaAtnaujinti profilį
- Peržiūrėti profilį
- Vykdoma
- Komentaras
- Atlikta
- Procentai
- Absoliutus
- Atšaukti laikiną bazęSMS komunikatorius
- Laukiama rezultatoLeidžiami telefono numeriai+370XXXXXXXX; +370YYYYYYYYNorėdami suleisti %1$.2fvv bolusą, atsakykite kodu %2$s
@@ -304,60 +240,24 @@
Tikslas %1$s %2$d min.Tikslas %1$s %2$d min. nustatytas sėkmingaiLaikinas tikslas atšauktas sėkmingai
- Leidžiama %1$.2fvvLeisti nuotolines komandas SMS žinutėmis
- Iš piršto
- Iš sensoriaus
- Rankiniu būdu
- Laikinas tikslas
- Laikino tikslo atšaukimasDanaR profilio nustatymaiIVT [h]Insulino veikimo trukmė
- Nepavyko atnaujinti bazės profilio
- AtnaujintiSiunčiama
- Ištęstas bolusas
- Paprastas bolusas dvibangiame
- Ištęstas bolusas dvibangiame
- klaida
- užpildymas
- valandinė bazė
- gliukozė
- AV
- aliarmas
- Įkelta %1$d įrašų
- Paprastas bolusas
- Aliarmai
- Valandinė bazė
- Bolusai
- AV
- Paros insulinas
- Klaidos
- Gliukozė
- Užpildymas
- Sustabdyta
- Jungiamasi %1$d s
- Pompos slaptažodis
- Neteisingas pompos slaptažodis!
- Pompa šiuo metu veikia
- Suleista
- SustabdytaBolusas sustabdytasBolusas stabdomas
- Užsikimšimas
- Stop
- Paspausta STOP
- Laukiama ryšio su pompa
- Bus suleista %1$.2fvv
- Pasiekėte leistiną ribą
- Nepasirinktas profilisCiklas buvo išjungtasCiklas buvo įjungtasCiklas išjungtasCiklas įjungtas%1$.2f apribotas iki %2$.2fVertė %1$s viršija griežtą limitą
+ Pompos prijungimui atsakykite su kodu %1$s
+ Nepavyko prisijungti prie pompos
+ Norėdami atjungti pompą %1d min., atsakykite kodu %2$s
+ Pompa atjungta
+ Pompa prijungtaNuotolinis valdymas negalimasNuotolinis bolusas negalimas. Bandykite vėliau.Norėdami aktyvuoti %1$.2fvv/val bazę, kurios trukmė %2$d min, atsakykite kodu %3$s
@@ -366,6 +266,9 @@
Įvedimui %1$dg %2$s atsakykite kodu %3$sNorėdami aktyvuoti %1$d%% bazę %2$d min., atsakykite kodu %3$sNorėdami sustabdyti Ciklą %1$d min., atsakykite kodu %2$s
+ Ciklo atnaujinimui atsakykite su kodu %1$s
+ Ciklo įjungimui atsakykite su kodu %1$s
+ Ciklo išjungimui atsakykite su kodu %1$s%1$.2f vv/val laikina bazė, kurios trukmė %2$d min., aktyvuota sėkmingai%1$.2f vv ištęstas bolusas, kurio trukmė %2$d min., aktyvuotas sėkmingai%1$dg angliavandeniai įrašyti sėkmingai
@@ -391,22 +294,18 @@
MaistasKorekcijaVeiksmai
- AndroidAPS paleistaTik įkelti duomenis į NS (ne sinchronizuoti)Duomenys tik perkeliami į Nightscout. Gliukozės duomenys perkeliami tik tada, kai naudojama lokali programa, pvz.: xDrip. Naudojant NS-profilį, kiti profiliai neaktyvūs.Pompa neprijungta!
- Pompa neprijungta, profilis nepasirinktas!UžpildymasĮsitikinkite, kad nurodytas kiekis atitinka Jūsų infuzijos rinkinio specifikaciją!Kita
- Standartiniai insulino kiekiai kateterio/kaniulės užpildymui.
+ Standartiniai insulino kiekiai kateterio/kaniulės užpildymuiMygtukas 1Mygtukas 2Mygtukas 3Vienetai:Vienetai
- mg/dl
- mmol/lIVTTikslinis diapazonas:Vizualizacijos diapazonas
@@ -416,17 +315,7 @@
Išmanieji laikrodžiaiPakartotinai siųsti visus duomenisAtidaryti išmaniojo laikrodžio nustatymus
- Pompos klaida
- Senka akumuliatorius
- Pompa išsijungė
- Pompos baterija išsikrovusi
- DanaR KoreanValandinė bazė:
- Nepavyko nustatyti bazės profilio
- Bazės profilis pompoje atnaujintas
- Išjungti pompos EasyUI režimą
- Aktyvuoti ištęstinius bolusus pompoje
- Pakeisti pompoje vv/d režimą į vv/valValandinės bazės vertė mažesnė už minimalią. Profilis nenustatytas!KG:Paskutinė KG:
@@ -434,7 +323,6 @@
MM640gNuolatinis pranešimasSENI DUOMENYS
- Prieš %1$d minprieš %1$dminVietinis profilisOpenAPS AMA
@@ -450,47 +338,28 @@
HipoAktyvumasIštrinti įrašą
- DanaR statistika
- BPD viso
- Eksponentiškai svertinė BPD
- Valandinė bazė
- Bolusas
- BPD
- Data
- Koeficientas
- # d.
- Svoris
- Duomenys netikslūs, jei bolusai naudojami kateterių užpildymui!
- Duomenys seni, spauskite \"ATNAUJINTI\"
- Pagrindinė bazė (PB)
- PB * 2
- Inicijuojama ...VEIKSKONFCIKLASPPAtvCiklasVP
- DANAPRADŽIAVPompaNSprofilisĮRAŠ
- PRIEŽTIKSLWEARSMSNaudoti sutrumpintus skirtukų pavadinimusVisada naudoti trumpo laikotarpio vidutinį pokyti vietoj paprasto pokyčioNaudinga, kai duomenys, gaunami iš nefiltruoto šaltinio, tokio kaip xDrip, tampa nestabilūs.
- Papildomi nustatymai
- Modelis: %1$02X Protokolas: %2$02X Kodas: %3$02XProfilisNumatytoji reikšmė: 3 tai pagrindinis OpenAPS saugiklis. Jis apriboja Jūsų valandinę bazę iki trigubos maksimalios valandinės bazės (standartiniu atveju). Jums greičiausiai neprireiks šios reikšmės keisti, tačiau turėtumėte žinoti, kad ji naudojama kaip saugiklis apskaičiuojant \"3x maksimali dienos bazė; 4x dabartinė valandinė bazė\".Numatytoji reikšmė: 4 tai antras pagrindinis OpenAPS saugiklis, apskaičiuojant \"3x maksimali dienos bazė; 4x dabartinė valandinė bazė\". Jis reiškia, kad jūsų valandinė bazė, nepriklausomai nuo to, kokia maksimali valandinė bazė suprogramuota pompoje, negali būti didesnė, nei keturguba dabartinė valandinė bazė. Tai apsaugo Jus nuo pavojingų situacijų, kai nustatoma pernelyg didelė valandinė bazė, pilnai nesuprantant, kaip veikia algoritmas. Numatytoji reikšmė yra 4x; daugumai vartotojų niekada neprireikia šio skaičiaus keisti, o pajutus, kad \"atsitrenkiama\" į saugiklį, rekomenduojama peržiūrėti kitus nustatymus.Numatytoji reikšmė: 1.2\nTai daugiklis Autosens (ir netrukus Autotune) funkcijoje, kuris nustato 20%% maksimalią ribą iki kurios Autosens gali padidinti valandinę bazę, sumažinti JIF ir tikslinę gliukozės vertę.Numatytoji reikšmė: 0.7\nTai antras daugiklis Autosens funkcijoje, kuris nustato, kad Autosens gali iki minimalios 70 % ribos sumažinti valandinę bazę bei padidinti JIF ir tikslinę gliukozės vertę.
- Autosens nustatomi tikslai
+ Autosens nustatomi tikslai, taip patNumatytoji reikšmė: true\nTai suteikia Autosens funkcijai leidimą keisti tikslinės gliukozės vertes, JIF ir valandinę bazę.Numatytoji reikšmė: 2\nBoluso snaudimas aktyvuojamas iškart po to, kai susileidžiate bolusą maistui. Ši funkcija neleidžia sistemai nustatyti mažų LBD iškart po valgio. Pvz.: jei IVT yra 3 val, tai boluso snaudimas pamažu deaktyvuojamas per 1,5 val (3 val. / 2).Numatytoji reikšmė: 3.0 (AMA) arba 8.0 (SMB). Tai parametras, nurodantis angliavandenių poveikį kraujo gliukozei kas 5 minutes nuo jų suvartojimo. Numatytoji reikšmė yra 3 mg/dl per 5min. Šis skaičius turi įtakos apskaičiavimams, kaip greitai mažės AAO, kokia bus kraujo gliukozės kitimo prognozė, ypač kai ji krenta daugiau nei tikėtasi, arba nedidėja tiek, kiek tikėtasi.
@@ -503,18 +372,9 @@
Kalibracija išsiųsta. xDrip programoje turi būti įgalintas gavimas.xDrip negauna kalibracijųPompa sustabdyta
- Gaunamas pompos statusas
- Laikinos bazės nustatymas
- Laikinos bazės sustabdymas
- Ištęsto boluso nustatymas
- Ištęsto boluso sustabdymas
- Bazė naujinama
- AtsijungiamaVykdomaVirtualios pompos nustatymaiPerduoti būsenos duomenis į NS
- Neteisingas slaptažodis
- Artėja paros insulino limitasNSClientNSCIURL:
@@ -538,7 +398,7 @@
Rodyti AIO detaliaiRodyti laikrodyje bazės ir bolusų AIOBandymas nesėkmingas - pasitikrinkite telefoną
- Negalimas
+ n/aPaciento amžiusVaikasPaauglys
@@ -574,8 +434,6 @@
SuperbolusSiųsti programos paleidimo žymę į NSUždarant aplikaciją, taikyti nustatymus.
- DanaRv2
- InsulinasKokio tipo insuliną naudojate?Greito veikimo insulinasNovorapid, Novolog, Humalog
@@ -584,15 +442,26 @@
Įgalinti superbolusus skaičiuoklėjeĮgalina superbolusų naudojimą insulino skaičiuoklėje. Nenaudokite, kol nesuprantate, ką superbolus funkcija atlieka. NAUDODAMI AKLAI GALITE PERDOZUOTI INSULINO!Pradžios ekrane rodyti spalvotus indikatorius
+ Kaniulės ribinio laiko įspėjimas [h]
+ Kaniulės kritinio laiko įspėjimas [h]
+ Insulino ribinio laiko įspėjimas [h]
+ Insulino kritinio laiko įspėjimas [h]
+ Jutiklio ribinio laiko įspėjimas [h]
+ Jutiklio kritinio laiko įspėjimas [h]
+ Baterijos ribinio laiko įspėjimas [h]
+ Baterijos kritinio laiko įspėjimas [h]Įspėjimo apie žemą rezervuaro lygį riba [U]Įspėjimo apie kritiškai žemą rezervuaro lygį riba [U]Įspėjimo apie žemą baterijos įkrovimo lygį riba [%]Įspėjimo apie kritiškai žemą baterijos įkrovimo lygį riba [%]
+ PROGNAIOAAO
- Programinė įranga
- Paskutinis prisijungimas
- Bluetooth statusas
+ VB
+ DEV
+ VEIKS
+ ABS
+ DEVSLOPEApieTrūksta leidimo SMSTrūksta telefono būsenos leidimo
@@ -603,24 +472,15 @@
Pridėti KG prie statuso linijosNėra įkėlimų į NSVisi duomenys, kurie gali būti siunčiami į NS, paliekami. AAPS yra susieta su NS, bet jokie pokyčiai NS nedaromi
- Bazės žingsnis
- Boluso žingsnisAtšaukti ištęstą bolusąSensoriusKateterisInsulinas
- val.
- Netinkamas profilis!!!Profilio keitimasBaterija
- Baterijos keitimasAliarmų nustatymai
- Kritiškai aukštas
- Aukštas
- Žemas
- Kritiškai žemas
- Seni duomenys
- Kritiškai seni duomenys
+ Sukurti pranešimus iš NS aliarmų
+ Sukurkite pranešimus iš NS perspėjimųSeni duomenys, riba [min]Kritiškai seni duomenys, riba [min]Autosens intervalas [h]
@@ -637,7 +497,6 @@
Angliavandenių įsisavinimo parametraiMaksimalus angliavandenių įsisavinimo laikas [h]Laikas, per kurį visi maisto angliavandeniai, tikėtina, bus įsisavinti
- Rodyti ištęstinį boliusą kaip %%SAMŽIAMŽKAMŽ
@@ -662,7 +521,6 @@
POMPATrukmė [min]OpenAPS SMB
- SMBĮjungti NDMĮjungti SMBNaudoti Super Mikro Bolusus vietoj laikinos bazės greitesniam veikimui
@@ -674,23 +532,7 @@
Staigaus veikimo OrefIVT %1$f per trumpa - bus naudojama %2$f!Aktyvuoti profilį
- DataKLAIDA
- Laukiama ryšio su pompa
- Sujungta
- Sujungimui skirtas laikas baigėsi
- Sujungiama
- Nerasta jokio prietaiso
- Rezervuaras tuščias
- Gliukozės kiekio kraujyje matavimo perspėjimas
- Likusio insulino kiekis
- DanaRS
- Dana
- Pasirinkta pompa
- Susieti naują pompą
- Boluso greitis
- Nustatyti bazės žingsnį 0.01 vv/val
- Serijos numerisProcentaisLaiko perstūmimasNumatyti Laikini Tikslai
@@ -700,32 +542,18 @@
\"Aktyvumas\" tikslas\"Hipo\" trukmė\"Hipo\" tikslas
- Užpildyti sistemą
- Gaunamas ištęstinio boluso statusas
- Gaunamas boluso statusas
- Gaunamas laikinos bazės statusas
- Gaunami pompos nustatymai
- Gaunamas pompos laikasnaudoti pakartotinaiLaikrodžio valdikliaiNustatyti Laikinus Tikslus ir įvesti terapinius įrašus iš laikrodžio.
- Prijungimo laikas baigėsiMaistasg
- min.
- val
- d]]>kJEnerg. vertėBalt.Rieb]]>
- Laukiama boluso pabaigos. Liko %1$d s.
- Apdorojama
- Pradedamas bolusasKomanda vykdoma
- Pompos valdiklis pakoreguotasPompa nepasiekiamaNegauti KG duomenysNaudoti sistemos perspėjimus aliarmams ir įspėjimams
@@ -733,11 +561,9 @@
Perspėjimas apie negautus KG duomenisPerspėjimas apie nepasiekiamą pompąPerspėjimo apie nepasiekiamą pompą riba [min]
+ Perspėti, jei būtini angliavandeniaiKritiniai perspėjimaiINFO
- Bluetooth
- BT Watchdog
- Vienai sekundei išjungia telefono bluetooth, jei ryšys su pompa nutrūksta. Gali būti veiksminga kai kuriems telefonų modeliams, turintiems BT problemų.Eversense programėlė (modifikuota)Perduoti KG duomenis į NSKG duomenų perdavimo nustatymai
@@ -748,14 +574,11 @@
SMB atitinka valandinės bazės insulino kiekį, kuris gaunamas ne daugiau, kaip perNDM SMB maks. min.NDM SMB atitinka valandinės bazės insulino kiekį, kuris gaunamas ne daugiau, kaip per
- Angliavandenių pasiūlymo riba
- Kai angliavandeniai yra siūlomi, kaip gramų angliavandenių aktyvuos pranešimą
- Pompos programinės įrangos versija nepalaikoma
+ Minimali būtinų angliavandenių priminimo riba
+ Minimalus angliavandenių kiekis gramais, apie kurį reikia įspėti. Angliavandenių pasiūlymai, mažesni už šį kiekį, nėra pranešami.Siųsti KG duomenis į xDrip+Xdrip+ pasirinkite 640g/Eversense duomenų šaltinįNSClient KG
- Valandinė bazė pakeista mažiausia palaikoma verte: %1$s
- Valandinė bazė pakeista didžiausia palaikoma verte: %1$sKG apskaičiavimasBolusų AIO apskaičiavimasBazės AIO apskaičiavimas
@@ -773,8 +596,6 @@
Uždaras ciklas aktyvusMaksimalus AIO nustatytas tinkamaiKG šaltinis pasirinktas teisingai
- Bazės reikšmės nesuderintos su valandomis: %1$s
- Netinkamas profilis: %1$sProgramuojamas bolusasAtnaujintiBūsena
@@ -795,7 +616,6 @@
Tokio paties dydžio bolusas buvo nustatytas per paskutines dvi minutes. Siekiant išvengti atsitiktinio perdozavimo ir programos klaidų, veiksmas neleidžiamas.DabarSkaitoma pompos istorija
- Pompos istorijaNustatyti bazės profilįPompos rezervuaras beveik tuščiasPompos baterija baigia išsikrauti
@@ -814,9 +634,8 @@
Ištęstinio boluso suleidimo klaidaSightprieš
- %1$.2f h
- %1$d min.
- %1$dm
+ Nustatyti neutralią laikiną bazę
+ Jei įjungta, laikina valandinė bazė bus anuliuota iki kiekvienos valandos pabaigos. Šis metodas gali padėti išvengti kai kurių pompų pypsėjimo ar vibravimo.Leisti SMB visadaLeisti SMB visada, nepriklausomai nuo bolusų. Įmanoma tik naudojant patikimų, filtruotų KG duomenų šaltinį, pvz.: Dexcom G5Leisti SMB po angliavandenių įvedimo
@@ -826,9 +645,6 @@
Įjungti SMB su laikinais tikslaisĮjungti SMB, kai laikinas tikslas aktyvuotas (Netrukus valgysiu, Aktyvumas)Įjungti SMB su intensyviais laikinais tikslais
- Įjungti SMB, kai intensyvūs laikini tikslai yra aktyvūs (sportuosite)
- Paleisti laikinąją bazę
- NutildytiInsulinasAVMygtukai
@@ -838,11 +654,17 @@
Paspaudus mygtuką įvedamas nustatytas insulino kiekisNepavyko paleisti NGJ programos. Įsitikinkite, kad ji įdiegta.NGJ
+ Ignoruoti 5 min
+ Ignoruoti 15 min
+ Ignoruoti 30 min
+ reikal.IstorijaPranešti apie SMBRodyti SMB laikrodyje kaip standartinį bolusą.Kurti klaidų pranešimus
+ Sukurkite pranešimus apie būtinų angliavandenių įspėjimusSukurti Nightscout pranešimus apie klaidas ir vietinius įspėjimus (taip pat matomi Priežiūroje prie Terapijos)
+ Sukurkite NS pranešimus apie būtinų angliavandenių įspėjimusRodyti prognozes laikrodyje.PrognozėDuomenų pasirinkimas
@@ -856,7 +678,6 @@
Boluso nesuleisti, tik įrašytiKategorijaSubkategorija
- Bolusas bus tik įrašytasAutomatiškai atstatyti trūkstamus KG duomenis iš NSSMB nustatyta iš pomposAktyvumas
@@ -870,7 +691,6 @@
Naudojama neužbaigta versija. Uždaras ciklas neaktyvus.Inžinerinis režimas įjungtasInžinerinis režimas negalimas vartotojo atšakoje
- %1$.2f vv/valNuskaitomas bazės profilisSkaičiuojant bolusą pasikeitė pompos istorija. Bolusas nesuleistas. Prašome perskaičiuoti, jei boluso vis dar reikia.Bolusas sėkmingai suleistas, tačiau įrašas žurnale neįvestas. Taip gali nutikti, jei du vienodi nedideli bolusai suleisti per pastarąsias 2 min. Patikrinkite pompos istoriją ir įrašų žurnalą bei naudodamiesi Careportal įveskite trūkstamus įrašus. Patikrinkite, ar įvedamas įrašas neturi tokios pat laiko žymos ir insulino kiekio, kaip jau egzistuojantis.
@@ -893,15 +713,10 @@
SMB išjungti nustatymuoseNDM nustatymas išjungtas nustatymuoseNDM neveikia, nes priklauso nuo Oref1 jautrumo įskiepio
- Ribojamas maksimalus bazės greitis %1$.2f vv/val dėl %2$s
- pompos limitas
- reikšmė turi būti teigiamamaksimalus bazės daugiklismaksimalus paros bazės daugiklisBolusas buvo suleistas per paskutines 3 minutes, SMB praleidžiamasBazė nustatyta teisingai
- Ribojamas maks procentų kiekis %1$d%%, nes %2$s
- Bolusas ribojamas iki %1$.1f vv dėl %2$sIštęstinis bolusas ribojamas iki %1$.1f vv dėl %2$sRibojamas maks AIO iki %1$.1f vv dėl %2$sRibojami angliavandeniai iki %1$d g dėl %2$s
@@ -916,7 +731,6 @@
SMB neleidžiami atviro ciklo režimeMaistasatstatyti
- Laukiama laiko sinchronizavimo (%1$d sek.)Nesujungta (%1$d min.)Maksimalus bendras AIO, kurio negali viršyti OpenAPS [U]Ši vertė yra vadinama Maks AIO OpenAPS kontekste\nOpenAPS nepridės daugiau insulino, jei dabartinis AIO yra didesnis už šią vertę
@@ -932,7 +746,6 @@
Sąrankos vedlysUŽBAIGTIPasirinkite kalbą
- Įvesta: %1$.2fvv Suleista: %2$.2fvv Klaidos kodas: %3$sPirmas insulino dozės žingsnisAntras insulino dozės žingsnisTrečias insulino dozės žingsnis
@@ -955,7 +768,6 @@
Virtualios pompos tipasPompos nustatymasBolusas: Žingsnis=%1$s\nIštęstinis bolusas: [Žingsnis=%2$s, Trukmė=%3$smin-%4$sh]\nBazė: Žingsnis=%5$s\nLDB: %6$s (iš %7$s), Trukmė=%8$smin -%9$sh\n%10$s
- * Virtualioje pompoje palaikomos tik atskiros vertės, o ne diapazonas detalumui užtikrinti.Automatiškai užpildyti trūkstamus KG duomenisIšmaniojo laikrodžio nustatymaiSkaičiavimai, įtraukti į Patarėjo rezultatą:
@@ -981,27 +793,10 @@
LeidimasPrašyti leidimoNorint gauti pranešimus, programai reikalingas sisteminio lango leidimas
- Aplikacijai reikia vietos nustatymo leidimo BT skenavimui atlikti
- Aplikacijai reikia leidimo prieigai prie saugyklos, kad galėtų išsaugoti žurnalo įrašus
+ Programai reikia vietos nustatymo leidimo, kad būtų galima naudoti Bluetooth ir WiFiUžklausaKonfigūruoti insulino įskiepįIšeiti
- Vartotojo parinktys
- Rodyti laiko formatą
- Mygtukų slinkties funkcija
- Pypsėjimas spaudžiant mygtukus
- Aliarmas
- Garsas
- Vibravimas
- Abu
- Ekrano aktyvumo laikas [seconds]
- Ekrano apšvietimo laikas [seconds]
- KG vienetai
- Išjungimas [hours]
- Žemas rezervuaro lygis [Units]
- Išsaugoti nustatymus pompoje
- Įjungti
- IšjungtiAtidaryti meniuUždaryti meniuĮskiepių nustatymai
@@ -1018,16 +813,16 @@
Rezistencija mažina tiksląKai nustatoma rezistencija, tikslinė gliukozės vertė sumažinamaJautrumas didina tikslą
+ Kai aptinkamas padidėjęs jautrumas insulinui, tikslinis gliukozės lygis padidinamasNetinkami pompos nustatymai, patikrinkite dokumentaciją ir įsitikinkite, kad Quick info meniu yra pavadintas QUICK INFO, naudojant 360 configuration software.Pasirinktinis
- Didelis laiko neatitikimas
- Didelis laiko skirtumas:\nLaikas pompoje skiriasi daugiau nei 1,5 val.\nNustatykite laiką pompoje rankiniu būdu ir įsitikinkite, kad įrašai iš pompos istorijos nesukelia netikėtų sistemos veiksmų.\nJei įmanoma, ištrinkite istoriją pompoje prieš keisdami laiką arba atjunkite uždarąjį ciklą vienai IVT po paskutinio neteisingo istorijos įrašo ar mažiausiai vienai IVT nuo dabar.Ištrinti \"AndroidAPS paleista\" įrašusRasti išsaugoti nustatymaiDėmesio: jei aktyvuosite ir prijungsite prie aparatinės pompos, AndroidAPS nukopijuos bazės nustatymus iš profilio į pompą, pakeisdamas esančius nustatymus pompoje. Įsitikinkite, kad turimi bazės nustatymai AndroidAPS yra teisingi. Jei nesate tikri arba nenorite iš naujo keisti bazės nustatymų jūsų pompoje, paspauskite atšaukti ir pakartokite prijungimą prie pompos kitą kartą.Terapijos duomenys nepilniServiso nustatymaiGavėjo el. paštas
+ Užšifruoti eksportuotus parametrusSiunčiamų įrašų skaičiusServisasServ
@@ -1046,17 +841,10 @@
Pageidaujamas DKS režimasVisoSkaič.
- Ryšio užmezgimasSiųsti šios dienos žurnalo įrašus kūrėjams dabar. Netikėta situacija.
- Pažeistas maks boluso limitas
- Komandos klaida
- Greičio klaida
- Pažeistas insulino dozės limitasMinimalaus pokyčio užklausa [%]Atviras Ciklas parodys naujų pakeitimų užklausą tik tada, kai pokytis bus didesnis nei ši vertė %. Numatytoji vertė yra 20%
- Atnaujinkite pompos ir telefono ryšį!Ieškoma įrenginių…
- Palaukite…Sujungimas sėkmingasAr kodas, kurį matote įrenginyje, sutampa su pompos kodu?Insight sujungimas
@@ -1076,6 +864,10 @@
Įrašyti įspėjimusAktyvuoti LBD emuliacijąNaudoti ištęstinius bolusus vietoj laikinos bazės, kai viršijama 250%% riba
+ Išjungti vibracijas rankinio boluso suleidimo metu
+ Bolusui ir ištęstam bolusui (tik su Insight programinės įrangos 3.x versija)
+ Išjungti vibracijas automatinio boluso suleidimo metu
+ SMB ir laikinai valandinei bazei su TBR emuliacija (tik Insight su programinės įrangos versija 3.x)Atjungimo vėlavimas [s]Serijos numerisIšleistos programinės įrangos versija
@@ -1145,7 +937,6 @@
yra lygus arba didesnis neididesnis neinegalimas
- nežinomaGlikemija nepasiekiamaGlikemija %1$s %2$.0f %3$sGlikemija %1$s %2$.1f %3$s
@@ -1162,23 +953,10 @@
AutoAutomatiškai== ∑ %1$s vv
- Vv/val
- g/vv
- /vvRegistruoti sensoriaus keitimą NSSukurti įvykį \"Sensoriaus keitimas\" NS automatiškai, startavus sensoriųTomato (MiaoMiao)Tomato
- sekundė
- min.
- val.
- d.
- savaitė
- sekundės
- min.
- val.
- d.
- savaičiųJūsų Tidepool vartotojo vardas, įprastai jūsų el. pašto adresasVartotojo vardasJūsų Tidepool prisijungimo slaptažodis
@@ -1205,7 +983,6 @@
Pasikartojantis laikasKiekvienasNiekada
- %1$dminsSąlyga:Veiksmas:AIO [U]:
@@ -1221,7 +998,6 @@
labai sena versijaNauja versija pasiekiama mažiausiai %1$d d.! Po %2$d grįšite prie stabdymo prie žemo, po %3$d ciklas bus išjungtas2 val
- %1$.2fVDexcom programėlė (modifikuota)DXCMGauti kraujo gliukozės reikšmes iš modifikuotos Dexcom programėlės.
@@ -1235,6 +1011,8 @@
egzistuojaneegzistuojaLaikinas tikslas %1$s
+ Bluetooth ryšys su įrenginiu %1$s %2$s
+ Ryšys su Bluetooth įrenginiu WiFi SSID %1$s %2$sAutosens %1$s %2$s %%Autosens %
@@ -1264,140 +1042,6 @@
Sąlygos:PAŠALINTIIšankstinės sąlygos:
-
- Pompa ir/ar jos valdiklis nepalaiko operacijos.
- Pompa dar nepalaiko operacijos.
-
- Integracija su Medronic pompa reikalauja RileyLink įrenginio ir specialaus pompos modelio
-
- Pompos serijos Nr.
- Pompos tipas
- Pompos dažnis
- Užlaikymas prieš Boluso suleidimą (s)
- Max Bolusas pompoje (vv)
- Maks val. bazė pompoje (vv/val)
- Medronic kodavimas
- US & Kanada (916 MHz)
- Pasaulinis (868 Mhz)
- Programinis kodavimas 4b6b
- Įrangos kodavimas 4b6b
- Pažadinti ir nustatyti
- Išvalyti Boluso bloką
- Išvalyti RileyLink nustatymus
- Baterijos tipas (pagal galią)
- Nepasirinkta (paprastas vaizdas)
- Šarminė (išplėstinis vaizdas)
- Ličio (išplėstinis vaizdas)
- Šarminė (išplėstinis vaizdas)
- Boluso/Terapijos Derinimas
-
- SKENAVIMAS
- STOP
- Parinkta
- RileyLink skanavimas
- Bluetooth Low Energy nepalaikoma.
- Bluetooth neįjungta.
- Vietovės nustatymas neįjungtas
- Vietos nustatymo paslauga turi būti įjungta, kad Bluetooth aptikimas veiktų naujesniuose įrenginiuose. AAPS neseka Jūsų lokacijos, o vietos nustatymo paslauga gali būti išjungta po sėkmingo įrenginių suporavimo.
- Įjungti
- Ne
- Skanuojama
- Skanavimas baigtas
- Skanavimo klaida: %1$d
-
- Parametrai
- Istorija
- RileyLink statusas
- Pompos statusas
- RileyLink parametrai
- RileyLink
- Nustatytas adresas
- Prijungtas įrenginys
- Ryšio būsena
- Prisijungimo klaida
- Įrenginys
- Įrenginio tipas
- Įrenginio modelis
- Paskutinis naudotas dažnis
- Paskutinis įrenginio kontaktas
- RL Programinė įranga
-
- Inicijuojamas Bluetooth…
- Bluetooth klaida
- Bluetooth paruošta
- Nepradėta
- RileyLink inicijavimas…
- RileyLink klaida
- RileyLink ir Pompos suderinimas
- Sujungimo su pompa problema
- Prisijungta
-
- Įrenginys nėra RileyLink
- RileyLink nepasiekiama
- Bluetooth išjungtas
- Nėra Bluetooth adapterio
- TuneUp klaida
- Pompa nepasiekiama
- Pod nepasiekiamas
- Nenustatyta
-
- Pompa Medtronic
- Omnipod
-
- Klaidos
- Serijos Nr. nenustatytas.
- Serijos Nr. neteisingas.
- Nenustatytas pompos tipas.
- Nepalaikomas pompos tipas.
- Nenustatytas pompos dažnis.
- Nepalaikomas pompos dažnis.
- RileyLink adresas neteisingas.
- Aptiktas pompos tipas neatitinka nustatymų.
- Bazės profilis / nustatymas pompoje nėra įgalintas. Įgalinkite jį pompoje.
- Pompoje nustatytas neteisingas bazės profilis (turi būti STD).
- Pompoje nustatytas neteisingas laikinos bazės tipas (turi būti absoliutus).
- Pompoje nustatytas neteisingas Max Bolusas (turi būti %1$.2f).
- Pompoje nustatyta neteisinga Maks val. bazė (turi būti %1$.2f).
- Operacija negalima. \n\n Pirmiausia turite sukonfigūruoti Medronic pompą prieš atliekant šią operaciją.
- Laiko pokytis didesnis nei 24 val.
-
- Bazė
- Nustatymai
- Pranešimai
- Statistika
- Nežinoma
- Visi
- Medronic pompos istorija
-
- Niekada nebuvo sujungta
- Pažadinimas
- Ryšio klaida
- Ryšiui skirtas laikas baigėsi
- Pompa nepasiekiama
- Neteisinga konfigūracija
- Aktyvi
- Užmigusi
-
- Atšaukėte bolusą, kuris jau buvo nustatytas pompoje. Medronic pompa nepalaiko šio atšaukimo, todėl turite jį atšaukti rankiniu būdu. Sustabdykite pompą ir vėl ją paleiskite (jei vis dar norite atšaukti bolusą). Aplikacija perims pokyčius su kitu atnaujinimu (per mažiau nei 5 minutes).
- Negalima sužinoti dabartinės laikinos bazės.
- Negalima atšaukti dabartinės laikinos bazės. Operacija stabdoma.
- Profilio nustatymas nepavyko dėl per didelės nustatytos bazės: %1$s
- Bolusas nesuleistas.
- Bolusas nesuleistas, nes turimas insulino kiekis (%1$.2f) yra mažesnis, nei nustatytas Bolusas (%2$.2f).
- Laikina bazė nenustatyta.
- Negalima atšaukti dabartinės laikinos bazės.
- Bazės profilis nenustatytas.
- Bazės profilis toks pat, todėl nenustatomas pakartotinai.
- Gauti istoriją - Lapas %1$d (%2$d/16)
- Gauti istoriją - Lapas %1$d
- Gauti pompos laiką
- Gauti parametrus
- Gauti pompos modelį
- Gauti bazės profilį
- Nustatyti bazės profilį
- Gauti laikiną bazę
- Nustatyti laikiną bazę
- Nustatyti bolusąPakeisti profilįPakeisti profilį %1$sPaskutinis prisijungimas prie pompos
@@ -1409,7 +1053,6 @@
%2$+.2fU]]>Pritaikyti boluso apribojimai: %2$.2fU to %3$.2fU]]>!!!!! Nustatytas lėtas angliavandenių įsisavinimas: %2$d%% laiko. Dar karą patikrinkite savo skaičiavimus. AAO gali būti pervertinti, todėl gali būti suleista per daug insulino!!!!!]]>
- %1$.0f / %2$d vvSuleisti šią boluso skaičiuoklės rezultato dalį [%]Boluso skaičiuoklė atlieka skaičiavimus, tačiau tik dalis apskaičiuoto insulino yra suleidžiama. Naudinga kartu su SMB algoritmu.Kraunama...
@@ -1417,7 +1060,6 @@
Laiko intervalasLaikas yra tarp %1$s ir %2$sTarp
- UždarytiDidinama maksimali valandinės bazės reikšmė, nes nustatytoji reikšmė yra mažesnė nei profilio maksimali val. bazės reikšmėNeteisingas pranešimas%1$s JIF: %2$.1f
@@ -1435,8 +1077,8 @@
IšjungtaIšvalyti užbaigtusIšvalyti pradėtus
- Laiko apibrėžimasAr norite iš naujo nustatyti tikslų pradžią? Jūs galite prarasti jau pasiektus.
+ Laiko ir/ar laiko zonos pakeitimas pompojePompa nepasirinktaPasirinkite vienetus, kurių vertes norite parodytiĮkelti vietinio profilio pakeitimus į NS
@@ -1453,7 +1095,7 @@
Didžiausia tikslinės srities vertė (tik rodymui)PertvarkytiAmžius:
- Svoris:
+ Svoris:ID:PateiktiDažniausiai naudojamas profilis:
@@ -1461,10 +1103,9 @@
ApklausaNeteisingas amžiaus įrašasNeteisingas svorio įrašas
- %1$s: ∑: %2$.2f Bolusas: %3$.2f Bazinis: %4$.2f]]>
+ Netinkamas % įrašas%1$s: Žemas: %2$02d%% Norma: %3$02d%% Aukštas: %4$02d%%]]>Vidutinis
- BPDTIR (Laikas normos ribose)Aktyvumo stebėjimasAr norite iš naujo nustatyti aktyvumo statistiką?
@@ -1474,12 +1115,8 @@
KGĮrankiaiRodyti skaičiavimą
- Klaida
- 12h
- 24hAutomatizuotas įvykisJau nustatyta
- PranešimasIšvalyti eilę? Visi eilės duomenys bus prarasti!Ištęsto boluso funkcija sustabdys uždaro ciklo režimą ištęsto boluso veikimo metu. Ar tikrai norite patvirtinti savo pasirinkimą?Uždara ciklas išjungtas dėl ištęsto boluso veikimo
@@ -1493,4 +1130,166 @@
Laikinos bazės įvykdymo laikasInsight pompos aliarmai
+ iš tapatybės nustatymo programos: %1$s
+ Įgalinti tapatybės nustatymo funkciją
+ Autentifikuokite komandas naudodami vienkartinius slaptažodžius, sugeneruotus Google Authenticator ar panašiose 2FA programose.
+ Papildomas PIN kodas žymeklio gale
+ Papildomi skaitmenys, kuriuos reikia atsiminti ir pridėti kiekvieno sugeneruoto slaptažodžio pabaigoje
+ Autentifikavimo sąrankos nustatymas
+ OTP tikrinimas:
+ Atstatyti tapatybės nustatymą
+ Atstatyti autentifikatoriaus kodą
+ Ar tikrai norite iš naujo nustatyti autentifikatoriaus raktą? Dėl to visi šiuo metu konfigūruojami autentifikatoriai negalios, ir jums reikės juos nustatyti dar kartą.
+ Sukurtas naujas autentifikavimo raktas! Autentifikatoriams pateikti naudokite atnaujintą QR kodą.
+ 1. Įdiegti Authenticator
+ 2. Nuskanuoti kodą AndroidAPS OTP kodų nustatymyu
+ 3. Patikrinti vienkartinį slaptažodį
+ Atstatyti tapatybės nustatymą
+ Kiekviename telefone, palaikančiame RFC 6238 TOTP prieigos raktus, įdiekite autentifikavimo programą. Populiariausios nemokamos programos yra:\n • Authy\n • Google Authenticator\n • LastPass Authenticator\n • FreeOTP Authenticator
+ NESIDALINKITE šiuo kodu internete!\nNaudokite tik nustatydami Authenticator programą sekėjų telefonuose.
+ Jei iš naujo nustatysite autentifikavimo priemonę, visi esami autentifikatoriai taps negaliojantys. Tada turėsite juos vėl nustatyti!
+ Sujungimo metu
+ Išjungimo metu
+ Prognozė
+ Nukrypimo koeficientas
+ Autorizacija nepavyko
+ Insulinas absoliučiais vienetais
+ Pagrindinis slaptažodis naudojamas atsarginiam šifravimui ir programos saugumo ignoravimui. Atsiminkite jį arba laikykite užsirašę saugioje vietoje.
+ Slaptažodžiai nesutampa
+ Dabartinis pagrindinis slaptažodis
+ Būklės indikatoriai
+ Kopijuoti nustatymus iš NS
+ Kopijuoti NS nustatymus (jei yra)?
+ Originali išvaizda
+ Mygtukai visada rodomi ekrano apačioje
+ Didelis ekranas
+ Išvaizda
+
+ Niekada nebuvo sujungta
+ Pažadinimas
+ Ryšio klaida
+ Ryšiui skirtas laikas baigėsi
+ Pompa nepasiekiama
+ Neteisinga konfigūracija
+ Aktyvi
+ Užmigusi
+
+
+ Omnipod pompos integracijai reikalingas RileyLink (programinės įrangos versija ne mažiau 2.0).
+
+ Boluso signalas įjungtas
+ Bazės signalas įjungtas
+ SMB signalas įjungtas
+ Laikinos bazės signalas įjungtas
+ Įgalintos POD derinimo galimybės
+ Vasaros laiko/laiko juostos aptikimas įgalintas
+
+ POD valdymas
+ POD būklė
+ liko %1$.2f U
+ Daugiau nei 50 U
+ POD adresas
+ POD laikas pasibaigs
+ Nėra informacijos
+ POD neprijungta
+ Nepavyko paleisti
+ Aktyvaus POD signalai
+ Priimti pranešimus
+
+ Omnipod (433.91 MHz)
+
+ Operacija negalima.\n\n Pirmiausia turite sukonfigūruoti Omnipod pompą prieš atliekant šią operaciją.
+ Operacija negalima.\n\n Jūs turite palaukti kelias minutes, kol AAPS bando nustatyti profilį pirmą kartą.
+ Neteisingas inicijavimo tipas:%1$s
+ Nėra aktyvaus POD.
+ Komandos patikra nepavyko.
+ Įvyko netikėta klaida. Prašome pranešti! (tipas: %1$s).
+ Ryšio klaida: gauti neteisingi įvesties parametrai.
+ Ryšio klaida: skirtas laikas baigėsi.
+ Ryšio klaida: įvyko netikėta klaida. Prašome pranešti!
+ Ryšio klaida: pranešimo vientisumo patikra nepavyko.
+ Ryšio klaida: netinkami įvesties iš POD parametrai.
+ Ryšio klaida: Pod būklė yra netinkama.
+ Ryšio klaida: gautas netinkamas atsakymas iš POD.
+ Ryšio klaida: iš POD gautas pranešimas su negaliojančiu serijos numeriu.
+ Ryšio klaida: iš POD gautas pranešimas su netinkamu adresu.
+ Ryšio klaida: nepavyko iššifruoti pranešimo iš POD.
+ Ryšio klaida: nepavyko iš naujo sinchronizuoti Nonce.
+ Ryšio klaida: Nonce nebuvo sinchronizuota.
+ Ryšio klaida: nepakankamai duomenų gauta iš POD.
+ Aptikta POD klaida (%1$03d %2$s). Išjunkite POD ir pradėkite naują.
+ Ryšio klaida: POD pateikė klaidos atsakymą.
+
+ POD valdymas
+ Inicijuoti POD
+ Išjungti POD
+ Atstatyti POD
+ POD istorija
+ Nustatyti bolusą
+ Atšaukti bolusą
+ Nustatyti laikiną bazę
+ Atšaukti laikiną bazę (vidinis valdiklis)
+ Atšaukti laikiną bazę (Inicijuota vartotojo)
+ Nustatyti bazės tvarkaraštį
+ Gauti POD būklę
+ Gauti POD informaciją
+ Nustatyti laiką
+ Konfigūruoti perspėjimus
+ Patvirtinti perspėjimus
+ Sustabdyti suleidimą
+ Atnaujinti suleidimą
+ Nežinomas Įrašas
+ %1$.1f vv
+ %1$.1f vv, AV=%2$.1f g
+ Kiekis: %1$.1f vv, Trukmė: %2$d min
+ Jei spustelėsite OK, ryšys su POD bus priverstinai nutrauktas ir nebegalėsite prie jo prisijungti. Atlikite tai tik tada, kai AAPS nebegali bendrauti su POD. Jei ryšys su POD vis tiek veikia, naudokite parinktį Išjungti POD.
+ POD istorija šiuo metu nėra prieinama.
+ Užpildyti POD
+ \nUžpildykite naują POD insulinu, kurio pakaktų 3 dienas.\n\nTaip pat atkreipkite dėmesį į du pyptelėjimus iš POD, kai pildote. Tai rodo, kad rezervuaras buvo užpildytas mažiausiai 85vv. Visiškai ištuštinkite švirkštą, net jei girdėjote du pyptelėjimus.\n\nUžpildę POD, spustelėkite Kitas.\n\n Pastaba: vykdant šiuos veiksmus, nenuimkite POD adatos apsauginio dangtelio.
+ Užpildymas
+ Pabandykite suporuoti naują POD ir užpildykite jį.\n\nKai pažymėti visi elemetai, galite spustelėti Kitas.\n\n Pastaba: POD ir RileyLink turi būti būti labai arti vienas kito.
+ Prijunkite POD
+ \nParuoškite infuzijos vietą. Nuimkite adatos apsauginį dangtelį, pleistro apsaugą ir užklijuokite POD ant infuzijos vietos.\n\nJei kaniulė atšoks, paspauskite Atšaukti ir pakeiskite POD.\n\nSpauskite Kitas, norėdami įvesti kaniulę ir pradėti leisti insuliną.
+ Įvedama kaniulė
+ Mėginkite nustatyti pradinį bazės profilį ir įvesti kaniulę.\n\nKai visi elementai yra patikrinti, galite paspausti Kitas.
+ POD informacija
+ \nPOD yra aktyvus.\n\nJūsų bazės profilis yra suprogramuotas ir kaniulė įvesta.\n\nPatikrinkite, ar kaniulė buvo tinkamai įvesta, ir, jei jaučiate, kad taip nėra, pakeiskite POD.
+ Išjungti POD
+ \nSpustelėkiteKitas, kad išjungtumėte POD.\n\nPastaba: Tai sustabdys insulino leidimą ir išjungs POD.
+ POD išjungimas
+ POD išjungimas.\n\nJei visi elementai pažymėti, galite paspausti Kitas.\n\n Pastaba: Jei išjungimas vis nepavyksta, paspauskite Atšaukti ir naudokite parinktį Atstatyti POD , kad priverstinai atkurtumėte POD būklę.
+ POD išjungtas.\n\nNuimkite POD nuo odos ir jį išmeskite.
+ POD suporavimas
+ POD užpildymas
+ Kaniulės užpildymas
+ Nustatyti bazės profilį
+ Atšauti insulino leidimą
+ Išjungti POD
+
+
+ Integracija su Omnipod Dash pompa.
+ Priminimas apie suporavimo pabaigą
+ Priminimas apie sąrankos pabaigą
+ POD galiojimas greitai baigsis
+ POD galiojimas greitai baigsis
+ Išjungimas yra neišvengiamas
+ Žemas rezervuaro lygis
+ Nežinomas perspėjimas
+ Gali nepavykti nustatyti bazės profilio. Insulino leidimas gali būti sustabdytas! Atkurkite POD būseną.
+ Laikinos valandinės bazės nustatymas gali būti nesėkmingas. Jei laikina valandinė bazė iki šiol buvo nustatyta ir galioja, ji gali būti atšaukta! Atnaujinkite POD būseną.
+ Laiko nustatymas gali būti nesėkmingas. Insulino leidimas gali būti sustabdytas! Atkurkite POD būseną.
+ Neįmanoma patikrinti, ar bolusas suleistas sėkmingai. Patikrinkite, ar jūsų POD leidžia bolusą, arba bolusą atšaukite.
+ RL statistika
+ Pulse žurnalas
+ Palyginti profilius
+ Profilio pagalbininkas
+ Numatytasis profilis
+ Dabartinis profilis
+ Galimas profilis
+ Profilio tipas
+ Amžius: %1$.0f BPD: %2$.0f U
+ Amžius: %1$.0f BPD: %2$.0f U %3$d%%
+ Amžius: %1$.0f Svoris: %2$.0f kg
+ % bazės
+ Numatytasis profilis
diff --git a/app/src/main/res/values-nl-rNL/exam.xml b/app/src/main/res/values-nl-rNL/exam.xml
index c530434d0b..a63d6cda98 100644
--- a/app/src/main/res/values-nl-rNL/exam.xml
+++ b/app/src/main/res/values-nl-rNL/exam.xml
@@ -1,7 +1,7 @@
Wat is waar over DIA?
- Thema: duur van de Insuline-actie
+ Thema: Duur van Insuline ActieDe minimumwaarde is 3 uur.De minimumwaarde is 5 uur.https://androidaps.readthedocs.io/en/latest/CROWDIN/nl/Configuration/Config-Builder.html#insuline
@@ -122,7 +122,7 @@
Loop app op de iPhone.Spike app op de iPhone.https://androidaps.readthedocs.io/en/latest/CROWDIN/nl/Children/Children.html
- Onderwerp: Insulinegevoeligheidsfactor
+ Thema: InsulinegevoeligheidsfactorHogere ISF-waarden leiden tot minder insulineafgifte wanneer AAPS voor hoge BG corrigeert.Lagere ISF-waarden leiden tot minder insulineafgifte wanneer AAPS voor hoge BG corrigeert.Het wijzigen van de ISF-waarden heeft geen effect op de hoeveelheid insuline die wordt geleverd wanneer AAPS voor hoge BG corrigeert.
@@ -130,7 +130,7 @@
Het wijzigen van de ISF-waarde in uw profiel is voldoende om de wijziging toe te passen.https://androidaps.readthedocs.io/en/latest/CROWDIN/nl/Getting-Started/FAQ.html#insuline-gevoeligheids-factor-insulin-sensitivity-factor-ISF-mmol-l-E-of-mg-dl-Ehttps://androidaps.readthedocs.io/en/latest/CROWDIN/nl/Usage/Profiles.html
- Onderwerp: De KH ratio
+ Thema: KH ratioHogere KH ratios leiden tot minder insuline afgifte voor een bepaalde hoeveelheid koolhydraten.Lagere KH ratios leiden tot minder insuline afgifte voor een bepaalde hoeveelheid koolhydraten.Als je 0 COB hebt zal het veranderen van KH ratio leiden tot een andere hoeveelheid insuline om jouw BG te corrigeren.
diff --git a/app/src/main/res/values-nl-rNL/objectives.xml b/app/src/main/res/values-nl-rNL/objectives.xml
index 613bcfa9e6..60da77c374 100644
--- a/app/src/main/res/values-nl-rNL/objectives.xml
+++ b/app/src/main/res/values-nl-rNL/objectives.xml
@@ -20,7 +20,9 @@
Gedurende 1 week succesvol overdag loopen met regelmatige invoer van koolhydratenActiveren van extra functies overdag zoals AMA (geavanceerde maaltijdhulp, Advanced Meal Assist)Activeren van extra functies overdag zoals SMB (super micro bolus)
+ Automatisering inschakelenLees de wiki en verhoog maxIOB om SMB goed werkend te krijgen. Een goed begin is maxIOB=gemiddelde maaltijdbolus + 3 x max dagelijkse basaal
+ Zorg ervoor dat je goed begrijpt hoe automatisering werkt voordat je jouw eerste eenvoudige regel aanmaakt. In plaats van de regel een actie te laten uitvoeren, laat hem alleen een notificatie tonen. Pas als je zeker weet dat de automatisering op het juiste moment wordt geactiveerd, vervang je de melding door een echte actie. (https://androidaps.readthedocs.io/en/latest/EN/Usage/Automation.html)BG beschikbaar in NSPomp status beschikbaar in NSHandmatige aanpassingen
diff --git a/app/src/main/res/values-nl-rNL/protection.xml b/app/src/main/res/values-nl-rNL/protection.xml
index 3ea04e700d..04865f9606 100644
--- a/app/src/main/res/values-nl-rNL/protection.xml
+++ b/app/src/main/res/values-nl-rNL/protection.xml
@@ -1,2 +1,25 @@
-
+
+ Authentificatie vereist
+ Plaats uw vinger op de vingerafdruklezer om uw identiteit te verifiëren
+ Instellingen beveiliging
+ App beveiliging
+ Bolus beveiliging
+ Masterwachtwoord
+ Instellingen wachtwoord
+ App wachtwoord
+ Bolus wachtwoord
+ Instellingen ontgrendelen
+ Biometrisch
+ Aangepast wachtwoord
+ Geen beveiliging
+ Beveiliging
+ Masterwachtwoord is niet ingesteld!\n\nStel een masterwachtwoord in in Instellingen (%1$s → %2$s)
+ Niet beveiligde fallback
+ Om biometrische beveiliging te kunnen gebruiken, heb je een masterwachtwoord nodig als backup optie.\n\nStel dus een masterwachtwoord in!
+ Wachtwoord ingesteld!
+ Wachtwoord niet ingesteld
+ Wachtwoord niet gewijzigd
+ Wachtwoord gewist!
+ Vul hier het wachtwoord in
+
diff --git a/app/src/main/res/values-nl-rNL/strings.xml b/app/src/main/res/values-nl-rNL/strings.xml
index 1d91d77a7f..38ad09a378 100644
--- a/app/src/main/res/values-nl-rNL/strings.xml
+++ b/app/src/main/res/values-nl-rNL/strings.xml
@@ -12,13 +12,10 @@
Reset databaseWil je echt de database wissen?Afsluiten
- Gebruik vertraagde bolussen voor >200%%
- DanaR Bluetooth apparaatGebruik altijd absolute basale waardenHerstart je telefoon of herstart AndroidAPS vanuit de systeem instellingen a. u. b. \nanders zal AndroidAPS geen logboek hebben (Belangrijk om te controleren of de algoritmes correct werken)!Dit apparaat lijkt geen ondersteuning te bieden voor whitelisten voor batterijoptimalisatie - u kunt prestatieproblemen ervaren.Een aantal knoppen voor snelle toegang tot algemene functies
- Voer geavanceerde logboekitems in.Gebruikt om actieve plugins te configurerenLeerprogrammaToon de instellingen voor Voeding in Nightscout
@@ -36,14 +33,11 @@
Gebruik profiel(en) die je hebt aangemaakt in NightscoutMaak een profiel met slechts één tijdsblok.Pomp integratie voor Accu-Chek Combo pompen, vereist dat ruffy geïnstalleerd is
- Pomp integratie voor DANA Diabecare R pompen
- Pomp integratie voor inheemse DANA Diabecare R pompen
- Pomp integratie voor DANA Diabecare R pompen met geupgrade firmware
- Pomp integratie voor DANA Diabecare RS pompenPomp integratie voor mensen met pen-therapie (meerdere dagelijkse injecties)Pomp integratie voor pompen, waar nog geen driver voor is (Open Loop)
- Gevoeligheid wordt berekend op dezelfde manier als Oref0, maar u kunt een tijdframe naar het verleden specificeren. Minimale koolhydraat absorptie is berekend op basis van max koolhydraat absorptie tijd van de voorkeursinstellingen.
- Gevoeligheid wordt berekend als een gewogen gemiddelde van afwijkingen. Nieuwere afwijkingen wegen hierbij zwaarder. Minimale koolhydraat absorptie is berekend op basis van de max koolhydraat absorptie tijd uit de voorkeursinstellingen. Dit algoritme is de snelste in het volgen van wijzigingen van de gevoeligheid.
+ Gevoeligheid wordt berekend op dezelfde manier als Oref0, maar je kunt een tijdframe naar het verleden specificeren. Minimale koolhydraat absorptie is berekend op basis van max koolhydraat absorptie tijd zoals in jouw instellingen.
+ Gevoeligheid wordt berekend met gegevens van de afgelopen 8 of 24 uur (de meest gevoelige van die twee) en koolhydraten (indien niet geabsorbeerd) worden hiervan afgehaald, na de duur die is opgegeven in de instellingen. Berekend ook UAM.
+ Gevoeligheid wordt berekend als een gewogen gemiddelde van afwijkingen. Nieuwere afwijkingen wegen hierbij zwaarder. Minimale koolhydraat absorptie is berekend op basis van de max koolhydraat absorptie tijd uit jouw instellingen. Dit algoritme is de snelste in het volgen van wijzigingen van de gevoeligheid.Ontvang BG waardes van de aangepaste Eversense app.Ontvang BG waardes van Glimp.Ontvang BG waardes van 600SeriesAndroidUploader.
@@ -53,13 +47,6 @@
AndroidAPS controleren en bedienen met behulp van uw WearOS-horloge.Toon informatie over de Loop op jouw xDrip+ wijzerplaat.Bedien AndroidAPS op afstand met SMS commando\'s.
- Eénheden
- DIA
- KH ratio
- ISF
- Basaal
- Streefdoel
- Geen profiel ingesteldInsuline:Koolhydraten:IOB:
@@ -75,15 +62,9 @@
TTKoolhydratenCorrectie
- EBolus IOBNu uitvoerenVIRTUELE POMP
- Basis basale dosis
- Tijdelijk basaal
- Vertraagde bolus
- Batterij
- ReservoirOKLaatste berekeningInvoerparameters
@@ -95,16 +76,11 @@
ResultaatResultaat: %1$s %2$sGeen BG gegevens beschikbaar
- Geen aanpassing noodzakelijkVoorstel
- Dosis
- Periode
- RedenGlucoseVerschilVerschil:Configurator
- DoelenOverzichtNS ProfielEenvoudig profiel
@@ -122,7 +98,6 @@
AlgemeenDit zijn enkele algemene plugins die handig kunnen zijn.Welke beperkingen worden toegepast?
- dagenBeperkingenLoopLoop
@@ -131,25 +106,19 @@
Berekening met toepassing van limietenTijdelijk basaal gezet door pompLaatste uitvoering
- OK
- AnnuleerGEEN APS GESELECTEERD OF TOEGEKEND RESULTAATVeiligheidPlugin is gedeactiveerdIn strijd met beperkingenBolus toedien storing
- Tijdelijk basaal toedien storingBasaal waarde [%]Accepteer nieuw tijdelijk basaal:BolusBolus wizardBeperking toegepast!
- Bevestiging
- BolusBolus:BasaalBasaal:
- KoolhydratenWijzig het ingegevene!BG bronWaar moet de AndroidAPS zijn gegevens vandaan halen?
@@ -157,34 +126,17 @@
APS ModeClosed loopOpen loop
+ Stop bij laagLoop gedeactiveerdLoop deactiverenActiveer LoopNieuw voorstel beschikbaar
+ Koolhydraten VoorstelNiet ondersteunde versie van NightscoutLoop gedeactiveerd door doelen tabBasaal IOBBolus limiet ingesteldKH limiet ingesteld
- BG Controle
- Mededeling
- Notitie
- Vraag
- Sport
- Infuus wissel
- CGM Sens. ingebracht
- CGM Sens. Start
- Insuline ampul wissel
- Profiel wissel
- Snack bolus
- Maaltijd bolus
- Correctie bolus
- Combinatie-Bolus
- Start tijd. basaal
- Einde tijd. basaal
- Koolhydraten correctie
- OpenAPS Offline
- Gebeurtenis typeAndereMeterSensor
@@ -205,46 +157,69 @@
Vertraagde bolusNightscout versie:Ontbrekend %1$dg
- Voorkeuren geëxporteerd
+ Instellingen geëxporteerdExporteer instellingen naarImporteer instellingen vanInstellingen geïmporteerdBestand niet gevondenExporteer instellingenImporteer instellingen
- Maximale E/uur dat OpenAPS kan toedienen
+ Maximaal instelbaar basaal Eh/uDit is de maximale waarde waarop het basaal door OpenAPS ingesteld kan wordenMaximale basaal IOB, dat OpenAPS kan toedienen [E]Deze waarde wordt de Max IOB genoemd in OpenAPS context\nDit is de maximale insuline hoeveelheid in [E] dat APS in één keer kan toedienen.
- NEGEER
- DanaR
- Verbinden
- Verbonden
- Niet verbonden
- Dana pomp instellingen
+ Je wordt gevraagd om een masterwachtwoord. Daarmee worden geëxporteerde instellingen versleuteld.
+ Je wordt gevraagd om een masterwachtwoord. Daarmee worden geïmporteerde instellingen ontsleuteld.
+ Exporteren geannuleerd! Instellingen zijn NIET geëxporteerd!
+ Importeren geannuleerd! Instellingen zijn NIET geïmporteerd!
+ Kies bestand om te importeren
+ Controleer instellingen voor het importeren:
+ Instellingen kunnen niet worden geïmporteerd!
+ Instellingen zouden niet moeten worden geïmporteerd!
+ Beschrijf import problemen…
+ Importeer problemen - details
+ Importeren
+ Toch importeren (GEVAARLIJK!)
+ Instellingen zijn gemaakt met een andere variant van AAPS (%1$s) terwijl je nu: %2$s gebruikt.\n\nEr kunnen instellingen ontbreken of ongeldig zijn - controleer aub jouw instellingen na het importeren en corrigeer ze zonodig.
+ Instellingen zijn gemaakt op een ander apparaat. Het is OK als ze zijn geïmporteerd van een oude/andere telefoon, maar zorg ervoor dat de geïmporteerde instellingen correct zijn!
+ Je gebruikt de verouderde indeling van een vorige AAPS versie, dit is niet veilig! Gebruik dit alleen als je niet anders kunt, wanneer je geen export hebt met de huidige JSON-indeling.
+ Geïmporteerde instellingen zijn al %1$s dagen oud! Misschien heb je een meer recente versie of heb je het verkeerde bestand gekozen? Vergeet niet om regelmatig jouw instellingen te exporteren!
+ Ongeldige notatie voor datum/tijd!
+ Instellingen zijn afkomstig van een vorige minor versie van de AAPS app. Het is OK als je deze importeert na een app upgrade, maar controleer na importeren dan wel of de instellingen nog steeds correct zijn!
+ Instellingen van een andere major versie van de AAPS app. Deze versies kunnen aanzienlijk verschillen en kunnen instellingen hebben die incompatibel zijn! Zorg ervoor dat na het importeren alle instellingen nog steeds correct zijn!
+ Bestandsformaat
+ Gemaakt op
+ AAPS versie
+ Build variant
+ Patiëntnaam van exporterend apparaat
+ Modelnaam/nr van exporterend apparaat
+ Bestandsversleuteling
+ Oude export indeling
+ Nieuwe versleutelde indeling
+ Nieuwe debug indeling (onversleuteld)
+ Onbekende export indeling
+ Geknoeid met instellingenbestand
+ Instellingenbestand is veilig
+ Gebruikt niet veilige, niet-versleutelde indeling voor instellingen
+ JSON-indelingsfout, vereist veld ontbreekt (indeling, inhoud, metagegevens of beveiliging)
+ Decryptie fout, het opgegeven wachtwoord kan het bestand niet ontsleutelen
+ Bestand checksum (hash) ontbreekt, kan de authenticiteit van instellingen niet controleren!
+ Bestand is gewijzigd na export!
+ Decoderingsfout, uitlezen van instellingen is mislukt!
+ Decoderingsfout, het opgegeven wachtwoord is ongeldig of het instellingenbestand is gewijzigd / mee geknoeid. Wellicht was het geïmporteerde bestand geëxporteerd met een ander masterwachtwoord.
+ Ontbrekende versleutelingsconfiguratie, instellingen indeling is ongeldig!
+ Niet-ondersteund of niet opgegeven versleutelingsalgoritme!
+ vandaag geëxporteerd
+ %1$s geleden geëxporteerd
+ geëxporteerd op %1$s
+ minder dan een uur geleden geëxporteerd
+ in map: %1$sEind gebruiker overeenkomstMUST NOT BE USED TO MAKE MEDICAL DECISIONS. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.Begrepen en goedgekeurdOpslaan
- Geen bluetooth adapter gevonden
- Geselecteerd toestel niet gevonden
- Pomp verbindingsstoring
- Pomp IOB
- Dag totaal
- Laatste bolus
- %1$.1fu geleden
- Verkeerde ingave
- Waarde niet correct ingesteldHerlaad profiel
- Profiel bekijken
- Uitgevoerd
- Commentaar
- Succes
- Procent
- Absoluut
- Annuleer tijdelijk basaalSMS Commando\'s
- Wacht op het resultaatGeautoriseerde telefoon nummers+XXXXXXXXXX;+YYYYYYYYYYOm de bolus %1$.2fU toe te dienen antwoord met de code %2$s
@@ -265,60 +240,24 @@
Streefdoel %1$s gedurende %2$d minutenStreefdoel %1$s gedurende %2$d minuten succesvol ingesteldTijdelijk streefdoel is geannuleerd
- Toedienen van %1$.2fESta SMS commando\'s toe
- Vingerprik
- Sensor
- Manueel
- Tijdelijk streefdoel
- Tijdelijk streefdoel annulerenDanaR profiel instellingenDIA [uur]Duur van insuline activiteit
- Update basaal profiel mislukt
- VernieuwUploaden
- E bolus
- DS bolus
- DE bolus
- storing
- hervullen
- basaal uur
- glucose
- koolhydraten
- alarm
- Totaal %1$d gegevens geupload
- S Bolus
- Alarm
- Basale uren
- Bolussen
- Koolhydraten
- Dagtotaal insuline
- Storing
- Glucose
- Hervullen
- Onderbreken
- Verbonden gedurende %1$d s
- Pomp wachtwoord
- Verkeerd pomp wachtwoord!
- Pomp is in gebruik
- Toegediend
- GestoptBolus gestoptStoppen van bolus
- Afsluiting
- Stop
- STOP INGEDRUKT
- Wacht op pomp
- Er worden %1$.2fE toegediend
- Limiet bereikt
- Geen profiel geselecteerdLoop was uitgeschakeldLoop was ingeschakeldLoop is uitgeschakeldLoop is ingeschakeld%1$.2f gelimiteerd tot %2$.2fWaarde %1$s valt buiten de toegestane harde limieten
+ Om verbinding te maken met pomp antwoord met code %1$s
+ Verbinding maken met pomp is mislukt
+ Om verbinding te verbreken met pomp gedurende %1d minuten antwoord met code %2$s
+ Pomp verbinding verbroken
+ Pomp opnieuw verbondenCommando\'s op afstand zijn niet toegestaanBolus op afstand niet beschikbaar. Probeer het later opnieuw.Om een basaal van %1$.2fE/u voor %2$d min te starten antwoord met code %3$s
@@ -327,6 +266,9 @@
Antwoord met code %3$s om %1$dg in te voeren op %2$sOm een basaal van %1$d%% voor %2$d min te starten antwoord met code %3$sOm de loop te onderbreken voor %1$d minuten antwoord met de code %2$s
+ Om loop te hervatten antwoord met code %1$s
+ Om loop in te schakelen antwoord met code %1$s
+ Om loop uit te schakelen antwoord met code %1$sTijdelijk basaal %1$.2fE/u voor %2$d minuten succesvol gestartVertraagde bolus %1$.2fE voor %2$d minuten succesvol gestartKoolhydraten %1$dg succesvol ingevoerd
@@ -352,22 +294,18 @@
Maaltijd bolusCorrectieActies
- AndroidAPS gestartAlleen NS upload (sync. gedeactiveerd)Alleen NS upload. Heeft geen effect op de SGV behalve als een lokale bron zoals xDipp geselecteerd is. Heeft geen effect op de profielen wanneer het NS profiel is gekozen.Pomp niet geïnitialiseerd!
- Pomp niet geïnitialiseerd, profiel niet gekozen!Ontlucht/vulVerzeker u dat de vulhoeveelheid overeenkomt met de infusieset!Andere
- Vull standaard hoeveelheid.
+ Vul/Prime standaard insuline hoeveelhedenKnop 1Knop 2Knop 3Eenheden:Eenheden
- mg/dl
- mmol/lDIAStreefdoel:Bereik voor visualisatie
@@ -377,17 +315,7 @@
WearUpdate Wear gegevensOpen instellingen op Wear
- Pomp storing
- Batterij bijna leeg
- Pomp uitschakelen
- Pomp Batterij Leeg
- DanaR KoreaansBasaal:
- Instellie van basaal profiel mislukt
- Basaal profiel in pomp bijgewerkt
- EasyUI modus in pomp deactiveren
- Activeer vertraagde bolussen op de pomp
- Wijzig de modus E/dag naar E/uur op de pompBasaalwaarde onder minimum. Profiel niet ingesteld!BG:Laatste BG:
@@ -395,7 +323,6 @@
MM640gPermanent berichtOude gegevens
- %1$d min geleden%1$dmin geledenLokaal profielOpenAPS AMA
@@ -411,47 +338,28 @@
HypoActiviteitVerwijder record
- DanaR Statistiek
- Cumulatieve TDD
- Exponentieel verhoogd TDD
- Basaal
- Bolus
- TDD
- Datum
- Ratio
- # Dagen
- Gewicht
- Mogelijks inaccuraat bij gebruik van bolussen om infusieset te vullen!
- Oude gegevens druk \"VERNIEUW\" a.u.b.
- Totaal basaal
- TBB * 2
- Initialiseren...ACTCONFLOOPEPOAPSLP
- DANAHOMEVPUMPNSPROFIELBEHAND
- CPDOELWEARSMSAfgekorte tab titelsGebruik altijd korte gemiddeld verschil ipv gewone verschilNuttig wanneer gegevens van niet gedempte bronnen zoals Xdrip noisy zijn.
- Geavanceerde instellingen
- Model: %1$02X Protokoll: %2$02X Code: %3$02XProfielStandaard waarde: 3.0 Dit is een belangrijke veiligheid parameter van OpenAPS. Dit limiteert je basaal met een max van 3 maal je hoogste basale dosis. Normaal hoef je deze niet te veranderen. Het is echter belangrijk dat je de ingebouwde limieten kent.Standaard waarde: 4 Dit is een combinatie van enerzijds het OpenAPS veiligheid limieten en anderzijds van “3 x max dagelijks basaal; 4x actueel”. Dit betekent dat het basaal niet hoger kan ingesteld worden dan het ingestelde nummer keer het actueel basaal waarbij de limiet in de pomp geen invloed heeft. Dit is een veiligheidsmaatregel om te voorkomen dat patiënten in gevaarlijke laag bereik komen zonder te snappen hoe het algoritme werkt. Nogmaals de standaard waarde is 4x; de meeste zullen deze waarde nooit moeten aanpassen maar zullen eerder andere waardes moeten aanpassen als ze tegen een limiet aanstoten.Standaard waarde: 1.2\nDit is een vermenigvuldigingsfactor voor autosense (en binnenkort autotune) die zorgt dat de autosens ratio maximaal 20%% kan zijn. Dit maximum bepaalt in hoeverre je basaal kan worden verhoogd, en hoeveel je ISF en BG doel verlaagd kunnen worden.Standaard waarde: 0.7\nDit is de andere kan van de autosens veiligheid limiet. Dit zet een limiet op hoe laag het basaal kan aangepast worden, en hoe hoog het ISF en het streef BG.
- Autosens past de streefwaardes ook aan
+ Autosens past ook de streefwaardes aanStandaardwaarde: waar Dit wordt gebruikt om autosens de bevoegdheid te geven BG doelen aan te passen alsook ISF en basalenStandaard waarde: 2\nBolus snooze is actief nadat je een maaltijd bolus toegediend hebt, zodat de loop geen tegenvoorstel met een verlaagd tijdelijk basaal doet nadat je gegeten hebt. Het voorbeeld hier van van standaard 2; dus een 3 u DIA betekent dat de bolus snooze gemiddeld 1.5u actief is (3DIA/2).Standaardwaarde: 3,0 (AMA) of 8,0 (SMB). Dit is een instelling voor de standaard koolhydraten absorptie-impact per 5 minuten. De standaard is een verwachte 3mg / dl / 5min. Dit is van invloed op hoe snel COB zijn opgenomen en hoeveel koolhydraten absorptie wordt verwacht, bij het voorspellen van toekomstige BG, wanneer BG meer dan verwacht daalt of niet zoveel stijgt als verwacht.
@@ -464,18 +372,9 @@
Kalibratie verzonden. Het ontvangen van kalibraties moet actief zijn in xDrip.XDrip ontvangt geen kalibratiesPomp onderbreken
- Opvragen pomp status
- Instellingen tijdelijk basaal
- Stoppen van tijdelijk basaal
- Instellingen vertraagde bolus
- Stoppen van vertraagde bolus
- Bijwerken basaal patroon
- VerbrekenUitvoerenVirtuele pomp instellingenUpload status naar NS
- Verkeerd wachtwoord
- Insuline daglimiet bereiktNSClientNSCIURL:
@@ -499,13 +398,16 @@
Toon gedetailleerde IOBSplits IOB in bolus en basaal op de watchfaceNiet geslaagd - controleer de telefoon
- Niet beschikbaar
+ n.v.t.Leeftijd PatientKindTienerVolwasseneinsuline resistente volwasseneKies leeftijd van de patient voor veiligheids limieten
+ Naam patiënt
+ Geef de naam of roepnaam van de patiënt op om onderscheid te maken tussen meerdere setups
+ GebruikerGlimpVoor een goede werking van %1$s moeten de accubesparing-opties zijn uitgeschakeld in de telefooninstellingenLoop pauzeren
@@ -532,8 +434,6 @@
SuperbolusLog app start naar NSSluiten van applicatie om instellingen bij te werken.
- DanaRv2
- InsulineWelk soort insuline gebruik je?Snel werkende insulineNovorapid, Novolog, Humalog
@@ -542,15 +442,26 @@
Activeer superbolus in de wizardActiveer de superbolus functie in de wizard. Activeer deze niet tot je begrijpt wat dit doet. OVERDOSIS IS MOGELIJK BIJ BLINDELINGS GEBRUIK!Toon statusindicatoren op startscherm
+ Drempel waarschuwing infuus leeftijd [h]
+ Drempel alarm infuus leeftijd [h]
+ Drempel waarschuwing insuline leeftijd [h]
+ Drempel alarm insuline leeftijd [h]
+ Drempel waarschuwing sensor leeftijd [h]
+ Drempel alarm sensor leeftijd [h]
+ Drempel waarschuwing batterij leeftijd [h]
+ Drempel alarm batterij niveau [h]Drempel waarschuwing reservoir niveau [E]Drempel alarm reservoir niveau [E]Drempel waarschuwing batterij niveau [%]Drempel alarm batterij niveau [%]
+ PREDIOBCOB
- Firmware
- Laatste verbinding
- Bluetooh status
+ BAS
+ DEV
+ ACT
+ ABS
+ DEVSLOPEOverGeen SMS bevoegdheidMachtiging ontbreekt voor telefoon gebruik
@@ -561,24 +472,15 @@
Voeg BGI toe aan status lijnGeen upload naar NSAAPS is verbonden met NS maar er worden geen wijzigingen uitgevoerd op NS
- Basaal stap
- Bolus StapAnnuleer vertraagde bolusOuderdom sensorOuderdom infusie setOuderdom insuline
- uren
- Ongeldig profiel !!!Profiel wissel uitvoerenOuderdom batterij
- Pomp bat. wisselAlarm opties
- Zeer hoog
- Hoog
- Laag
- Zeer laag
- Oude gegevens
- Dringend oude gegevens vernieuwen
+ Maak meldingen van NS alarmen
+ Maak meldingen van NS aankondigingenOude gegevens sinds [min]Alarm oude gegevens sinds [min]Interval voor autosens [uur]
@@ -595,7 +497,6 @@
Opname instellingenMax absorptietijd maaltijd [uur]Verwachte tijd in uren totdat alle koolhydraten opgenomen zijn
- Geef vertraagde bolus weer in %%SAGEIAGECAGE
@@ -620,7 +521,6 @@
POMPTijdsduur [min]OpenAPS SMB
- SMBActiveer UAMActiveer SMBSMB in plaats van tijdelijke basalen voor snellere reactie
@@ -632,58 +532,28 @@
Ultra-Rapid OrefDIA van %1$f te kort - %2$f wordt inplaats gebruikt!Activeer profiel
- DatumOngeldig
- Wachten op koppelen van de pomp
- Koppeling geslaagd
- Koppeling verlopen
- Koppelen
- Geen toestel gevonden
- Ampul leeg
- Bloed glucose meetpunt alarm
- Resterende insuline hoeveelheid
- DanaRS
- Dana
- Geselecteerde pomp
- Koppel nieuwe pomp
- Bolus snelheid
- Zet de basale stapgrootte op 0,01 E/uur
- Serie nummerPercentageTijd verschuiving
- Standaard tijdelijk basaal
+ Standaard tijdelijke streefdoelenEet binnenkort periodeEet binnenkort doelPeriode van inspanningActiviteits doelHypo tijdsduurHypo streefwaarde
- Vullen
- Vertraagde bolus status ophalen
- Bolus status ophalen
- Ophalen van tijdelijke basaal status
- Pomp instellingen ophalen
- Pomp tijd ophalenHerbruikBedieningen via horlogeStel tijdelijke doelen en bolussen in vanop je horloge.
- Connectie verlopenVoedingg
- m
- u
- d]]>kJEnProtVet]]>
- Wachten op complete bolus toediening. Resterend %1$d sec.
- Uitvoeren van gebeurtenis
- Bolus toediening gestartOpdracht is nu uitgevoerd
- Pomp service gecorrigeerdPomp niet beschikbaarGeen BG metingenGebruik systeem notificaties voor waarschuwingen en notificaties
@@ -691,24 +561,24 @@
Alarm als er geen BG gegevens ontvangen zijnWaarschuwing bij niet bereikbare pompPomp niet beschikbaar sinds [min]
+ Waarschuwen als koolhydraten nodig zijnDringend alarmINFO
- Bluetooth
- BT Watchdog
- Deactiveert de bluetooth functie van de telefoon gedurende een ogenblik. Dit kan op sommige gsm\'s een vastgelopen bluetooth service verhelpen.Eversense App (aangepast)Upload BG gegevens naar NSBG upload instellingenToon gedetailleerde deltaToon delta met een extra decimaal punt
+ Tijdsinterval in minuten tussen afgeven van SMBsSMB max minutenMax minuten basaal om SMB tot te limiteren
- Niet ondersteunde pomp firmware
+ UAM SMB max minuten
+ Max minuten basaal om SMB tot te limiteren voor UAM
+ Minimaal benodigde koolhydraten voor waarschuwing
+ Minimum gram benodigde koolhydraten waarbij een waarschuwing wordt gegeven. Wanneer er minder koolhydraten nodig zijn dan dit getal, wordt er geen waarschuwing gegeven.Stuur BG data naar xDrip+In xDrip+ kies 640g/Eversense data bronNSClient BG
- Basale waarde vervangen door minimaal ondersteunde waarde; %1$s
- Basale waarde vervangen door maximale ondersteunde waarde: %1$sBG berekeningBolus IOB berekeningBasaal IOB berekening
@@ -726,8 +596,6 @@
Closed modus actiefMaximum IOB juist ingesteldBG beschikbaar op gekozen bron
- Basaalstanden niet ingesteld in hele uren: %1$s
- Ongeldig profiel: %1$sBolus in pomp programmeren VernieuwStatus
@@ -748,7 +616,6 @@
Een bolus met dezelfde hoeveelheid was gevraagd binnen de afgelopen twee minuten. Om incidentele of door bugs veroorzaakte dubbele bolussen te voorkomen is deze bolus geannuleerd.ZojuistLezen van pomp historiek
- HistoriekInstellen van basaal profielInsuline ampul is bijna leegBatterij pomp is bijna leeg
@@ -767,8 +634,8 @@
Vertraagde bolus toedieningsfoutInsightvoorbij
- %1$.2f u
- %1$d minuten
+ Stel neutraal tijdelijk basaal in
+ Als deze optie is ingeschakeld, wordt een tijdelijk basaal geannuleerd vlak voor het einde van elk uur. Handige optie voor sommige pompen die elk uur piepen/vibreren zolang een tijdelijk basaal actief is.Activeer SMB altijdSMB altijd aan onafhankelijk van bolussen. Enkel mogelijk met een BG bron met goed gefilterde data zoals de G5Activeer SMB na koolhydraten
@@ -778,9 +645,6 @@
Gebruik SMB met tijdelijke streefdoelenGebruik SMB bij een actief tijdelijk streefdoel (eet binnenkort, activiteit)Gebruik SMB met een hoog tijdelijk streefdoel
- Gebruik SMB tijdens een verhoogd tijdelijk doel (Inspanningen)
- Laat tijdelijk basaal lopen
- Geluid dempenInsulineKoolhydratenKnoppen
@@ -790,11 +654,17 @@
Hoeveelheid insuline dat wordt toegevoegd wanneer er op de knop gedrukt wordtKon de CGM applicatie niet starten. Zorg dat deze geïnstalleerd is.CGM
+ Negeer 5m
+ Negeer 15m
+ Negeer 30m
+ nodigHistoriek vensterWaarschuw bij SMBToon SMB op horloge zoals gewone bolussen.Creëer een melding bij storingen
+ Maak melding bij waarschuwingen voor benodigde koolhydratenCreëer een Nightscout melding voor storingen en lokale waarschuwingen (ook zichtbaar in het Careportal en Behandelingen)
+ Maak Nightscout melding bij waarschuwingen voor benodigde koolhydratenToon de voorspellingen op het horloge.VoorspellingenData Keuzes
@@ -808,7 +678,6 @@
Geen bolus toedienen enkel in behandelingen zettenCategorieSubcategorie
- Bolus zal enkel opgeslagen wordenAutomatische onbekende BGs aanvullen van NSSMB op de pomp ingesteldActiviteit
@@ -822,7 +691,6 @@
Dev versie actief. Closed loop gedeactiveerdEngineering modus is geactiveerdEngineering modus is niet geactiveerd en dit is niet de release branche
- %1$.2f E/uurBasaal profiel wordt gelezenDe pomp historiek is gewijzigd nadat de bolus berekend was. De bolus is Niet toegediend. Programmeer een nieuwe bolus indien nodig.Bolus succesvol toegediend, maar toevoegen van de behandeling is gefaald. Dit kan voorvallen wanneer twee kleine bolussen van dezelfde grote gekozen waren gedurende de laatste 2 minuten. Controleer aub de pomphistoriek en de behandelingen, voeg de ontbrekende toe via het Careportal. Let op dat je geen 2 dezelfde hoeveelheden hebt op hetzelfde ogenblik.
@@ -840,25 +708,20 @@
Aantal TBRPomp kan geen tijdelijk basaal aanvaardenGeen correcte basale snelheid van pomp kunnen lezen
- Closed Loop modus gedeactiveerd in de voorkeuren
- Autosens gedeactiveerd in de voorkeuren
- SMB gedeactiveerd in de voorkeuren
- UAM gedeactiveerd in configuratie
+ Closed Loop modus gedeactiveerd in de instellingen
+ Autosens gedeactiveerd in de instellingen
+ SMB gedeactiveerd in de instellingen
+ UAM gedeactiveerd in de instellingenUAM gedeactiveerd omdat het Oref1 gevoeligheid plugin nodig heeft
- Beperken van basaal tot max %1$.2f E/uur wegens de %2$s
- Pomp limiet
- dit moet een positieve waarde zijnMax basaal vermenigvuldigerMax dagelijks basaal vermenigvuldigerEr is een bolus toegediend gedurende de afgelopen 3 minuten, SMB wordt overgeslagenBasaal correct ingesteld
- Begrezen van max procentuele wijzigen tot %1$d%% want de %2$s
- Bolus beperkt tot %1$.1f E doordat %2$sBeperken van extended bolus op %1$.1f E vanwege %2$sMax IOB wordt beperkt tot %1$.1f E doordat %2$sKoolhydraten worden beperkt tot %1$d gr doordat %2$sIOB gelimiteerd tot %1$.1f E doordat %2$s
- Maximum waarde in voorkeuren
+ Maximum waarde in instellingenmax limiet (SC)Onveilig gebruikLezen van status mislukt
@@ -868,7 +731,6 @@
SMB niet toegestaan in Open Loop modusVoedingReset
- Wachten voor tijdsynchronisatie (%1$d sec)Verbinding verbroken (%1$d m)Max totaal IOB dat OpenAPS niet kan overschrijden [E]Deze waarde heet MAX IOB in OpenAPS context\nOpenAPS zal geen extra insuline toedienen als de actuele IOB onderstaande waarde overschreden heeft
@@ -884,7 +746,6 @@
Setup WizardFINISHSelecteer uw taal
- Gevraagd: %1$.2fU Toegediend: %2$.2fE Error code: %3$sEerste insuline incrementTweede insuline incrementDerde insuline increment
@@ -907,7 +768,6 @@
Virtuele pomp TypePomp definitieBolus: Stap=%1$s\nExtended Bolus: [Stap=%2$s, Duur=%3$smin-%4$sh]\nBasaal: Stap=%5$s\nTBR: %6$s (by %7$s), Duur=%8$smin-%9$sh\n%10$s
- * Alleen absolute waardes (geen van-tot bereik) worden ondersteund voor basaal / bolus in virtuele pomp.Automatische BG aanvullenWizard instellingenBerekeningen inclusief in het resultaat van de wizard
@@ -933,30 +793,13 @@
ToestemmingVragen om toestemmingToepassing vereist systeemvenstermachtiging voor meldingen
- Toepassing heeft toestemming nodig voor bepalen van Locatie (voor BT scan)
- Applicatie heeft toestemming nodig om log bestanden op te kunnen slaan
+ App heeft locatie toestemming nodig voor Bluetooth scan en WiFi identificatieVerzoekGevoeligheid plugin configurerenAfsluiten
- Gebruikersopties
- Tijdnotatie
- Scroll-knop
- Geef een \'piep\' als op een knop gedrukt wordt
- Alarm
- Geluid
- Trillen
- Beide
- LCD-aan tijd [sec.]
- Achtergrondverlichting-aan tijd [sec.]
- Glucose units
- Afsluiten [uren]
- Laag reservoir (eenheden)
- Opslaan van de opties om de pomp
- Aan
- UitOpen navigatieSluit navigatie
- Plugin voorkeuren
+ Plugin instellingenVoltooid, goed gedaan!Nog niet voltooidVerstreken tijd
@@ -967,15 +810,19 @@
= 100]]>Laag tijdelijk streefdoel verlaagt gevoeligheid
+ Resistentie verlaagt het doel
+ Wanneer insulineresistentie wordt gedetecteerd, wordt het BG streefdoel verlaagd
+ Gevoeligheid verhoogt het doel
+ Wanneer insulinegevoeligheid wordt gedetecteerd, wordt het BG streefdoel verhoogdOngeldige pompinstellingen, controleer de documenten en controleer of het Quick Info-menu QUICK INFO wordt genoemd met behulp van de 360-configuratiesoftware.Aangepast
- Groot tijdsverschil
- Groot tijdsverschil: \nDe tijd in de pomp wijkt meer dan 1,5 uur af. \nStel de tijd handmatig in op de pomp en zorg ervoor dat het uitlezen van de geschiedenis van de pomp geen onverwacht gedrag veroorzaakt. \nIndien mogelijk verwijder de geschiedenis uit de pomp pomp voor het wijzigen van de tijd of schakel de Closed Loop uit voor één DIA na de laatste verkeerde invoer van de geschiedenis, maar vanaf nu minstens één DIA.Verwijder AndroidAPS start-meldingenOpgeslagen instellingen gevondenLet op: als u activeert en verbinding maakt met een hardwarepomp, kopieert AndroidAPS de basale instellingen van het profiel naar de pomp en overschrijft de bestaande basaal snelheid die op de pomp is opgeslagen. Zorg ervoor dat u de juiste basaal instelling hebt in AndroidAPS. Als u niet zeker weet of niet wilt dat de basaal instellingen op uw pomp worden overschreven, drukt u op Annuleren en herhaalt u het overschakelen naar de pomp op een later tijdstip.Behandelingen data incompleetOnderhoudsinstellingen
+ E-mail
+ Geëxporteerde instellingen versleutelenAantal Logs om te verzendenOnderhoudONDH
@@ -994,17 +841,10 @@
Voorkeur APS-modusTotaalCalc
- HandshakingLogboekbestanden van vandaag verzenden aan ontwikkelaars samen met de onverwachte situatie.
- Max bolus overschreiding
- Opdracht fout
- Snelheid fout
- Insuline limiet overschreidingMinimale verzoek voor aanpassing [%]Open Loop zal alleen een wijzigingsverzoek tonen als de verandering groter is dan deze waarde in %. De standaard waarde is 20%
- Aub de pomp koppelen met je telefoon!Bezig met zoeken naar apparaten…
- Even geduld a.u.b.…Koppeling voltooidWorden dezelfde codes weergegeven op dit apparaat als op je pomp?Insight koppelen
@@ -1024,6 +864,10 @@
Alarmen noterenTBR-emulatie inschakelenGebruik vertraagde bolus ipv TBRs om de limiet van 250%% te omzeilen
+ Trillen uitschakelen bij handmatige bolus toediening
+ Voor bolus en verlengde bolus (alleen mogelijk voor Insight firmware 3.x)
+ Trillen uitschakelen bij automatische bolus toediening
+ Voor SMB en tijdelijke basalen met TBR emulatie (alleen mogelijk voor Insight firmware 3.x)Verbindingsvertraging [s]SerienummerRelease softwareversie
@@ -1093,7 +937,6 @@
is gelijk aan of groter danis groter danis niet beschikbaar
- onbekendGlucose is niet beschikbaarGlucose %1$s %2$.0f %3$sGlucose %1$s %2$.1f %3$s
@@ -1110,23 +953,10 @@
AutoAutomatisering== ∑ %1$s E
- E/u
- g/E
- /ENoteer sensor wissel in NSNoteer automatisch \"Sensor Wissel\" in NS bij starten van sensorTomato (MiaoMiao)Tomato
- seconde
- minuut
- uur
- dag
- week
- seconden
- minuten
- uren
- dagen
- wekenUw Tidepool login gebruikersnaam, normaliter uw e-mailadresInlog gebruikersnaamUw Tidepool login wachtwoord
@@ -1153,7 +983,6 @@
Herhaal tijdElkeNooit
- %1$dminVoorwaarde:Actie:IOB [E]:
@@ -1169,7 +998,6 @@
zeer oude versieNieuwe versie al zeker %1$d dagen beschikbaar! Terugval LGS na %2$d dagen, loop zal worden uitgeschakeld na %3$d dagen2u
- %1$.2fEDexcom App (patched)DXCMOntvang BG waardes van de aangepaste Dexcom G app.
@@ -1183,6 +1011,8 @@
bestaandniet bestaandTijdelijk streefdoel %1$s
+ Bluetooth verbinding met apparaat %1$s %2$s
+ Verbinding met Bluetooth apparaat WiFi SSID %1$s %2$sGevoeligheid %1$s %2$s %%Gevoeligheid %
@@ -1212,140 +1042,6 @@
Triggers:VERWIJDERVoorwaarden:
-
- Bewerking niet ondersteund door pomp en/of driver.
- Operatie NU nog niet ondersteund door pomp.
-
- Pomp integratie voor Medtronic, vereist RileyLink-apparaatje en geschikte versie en model pomp
-
- Serienummer van de pomp
- Pomp Type
- Pomp Frequentie
- Vertraging voordat Bolus wordt gestart (s)
- Max Bolus op Pomp (E)
- Max Basaal op Pomp (E/u)
- Medtronic Codering
- VS & Canada (916 MHz)
- Wereldwijd (868 Mhz)
- Software 4b6b Codering
- Hardware 4b6b Codering
- Ontwaak en maak verbinding
- Bolus Blok wissen
- Reset RileyLink Configuratie
- Batterij type (batterij weergave)
- Niet geselecteerd (Eenvoudige weergave)
- Alkaline (uitgebreide weergave)
- Lithium (uitgebreide weergave)
- NiZn (uitgebreide weergave)
- Bolus/Behandelingen Debuggen
-
- SCAN
- STOP
- Geselecteerd
- RileyLink Scan
- Bluetooth Lage Energie modus niet ondersteund.
- Bluetooth niet ingeschakeld.
- Locatie is niet ingeschakeld
- Om Bluetooth discovery met nieuwere apparaten te laten werken moet locatie worden ingeschakeld. AAPS volgt je locatie niet en locatie kan ook weer worden uitgeschakeld nadat het koppelen is gelukt.
- Inschakelen
- Nee
- Scannen
- Scannen voltooid
- Scanfout: %1$d
-
- Instellingen
- Geschiedenis
- RileyLink Status
- Pompstatus
- RileyLink Instellingen
- RileyLink
- Geconfigureerd Adres
- Aangesloten Apparaat
- Verbinding Status
- Verbindingsfout
- Apparaat
- Apparaat type
- Apparaat model
- Laatst gebruikte frequentie
- Laatste contact met apparaat
- RL Firmware
-
- Bluetooth initialiseren…
- Bluetooth fout
- Bluetooth gekoppeld
- Niet gestart
- RileyLink initialiseren…
- RileyLink fout
- Tuning van RileyLink en Pomp
- Probleem tijdens verbinden met de pomp
- Verbonden
-
- Apparaat is geen RileyLink
- RileyLink onbereikbaar
- Bluetooth is uitgeschakeld
- Geen Bluetooth Adapter
- Verbinding maken mislukt
- Pomp niet bereikbaar
- Pod niet bereikbaar
- Niet ingesteld
-
- Medtronic Pomp
- Omnipod
-
- Foutmeldingen
- Serie# niet ingesteld.
- Serie# ongeldig.
- Pomp type niet ingesteld.
- Pomp type niet ondersteund.
- Pomp frequentie niet ingesteld.
- Pomp frequentie niet ondersteund.
- RileyLink adres ongeldig.
- Gedetecteerde pomp type komt niet overeen met ingestelde pomp type.
- De instelling voor basaalprofielen/patronen is niet ingeschakeld op de pomp. Schakel het in op de pomp.
- Basaalprofiel ingesteld op pomp is onjuist (moet STD zijn).
- Verkeerde Tijdelijk Basaal-type ingesteld op pomp (moet Insulinesnelh (E/H) zijn).
- Verkeerde Max Bolus ingesteld op pomp (moet %1$.2f zijn).
- Verkeerde Max Basaal ingesteld op pomp (moet %1$.2f zijn).
- Bewerking is niet mogelijk.\n\n Je moet eerst Medtronic Pomp ingesteld hebben, voordat je deze bewerking kunt gebruiken.
- Meer dan 24u tijd gevraagd.
-
- Basaalstanden
- Instellingen
- Meldingen
- Statistieken
- Onbekend
- Alle
- Medtronic Pomp Geschiedenis
-
- Nooit verbonden
- Ontwaken
- Communicatiefout
- Time-out op de communicatie
- Pomp niet bereikbaar
- Ongeldige configuratie
- Actief
- Slapend
-
- U heeft de Bolus geannuleerd nadat deze werd ingesteld op de Pomp. Aangezien de Medtronic Pump geen ondersteuning biedt voor automatische annulering moet u dit handmatig doen. Zet de Pump daartoe in de Suspend modus en kies vervolgens voor Hervatten (als u nog wilt annuleren). De applicatie zal de wijzigingen oppakken bij de volgende update (in minder dan 5 minuten).
- Kan huidige TBR niet lezen.
- Kan huidige TBR niet annuleren. Bewerking wordt gestopt.
- Profiel instellen mislukt omdat de volgende patronen een te groot basaal hebben: %1$s
- Bolus kon niet worden afgeleverd.
- Bolus kon niet worden uitgevoerd omdat de hoeveelheid beschikbare insuline (%1$.2f) niet voldoende is voor de bolus (%2$.2f).
- TBR kon niet worden ingesteld.
- Kan huidige TBR niet annuleren.
- Basaal profiel kon niet worden ingesteld.
- Basal profiel is hetzelfde, dus het zal niet opnieuw worden ingesteld.
- Ophalen Geschiedenis - Pagina %1$d (%2$d/16)
- Ophalen Geschiedenis - Pagina %1$d
- Haal Pomp Tijd op
- Ophalen Instellingen
- Ophalen Pomp Model
- Ophalen Basaal Profiel
- Instellen Basaal Profiel
- Ophalen Tijdelijke Basaal
- Instellen Tijdelijke Basaal
- Instellen BolusWijzig profiel naarWijzig profiel in %1$sLaatste verbinding met pomp
@@ -1357,7 +1053,6 @@
%2$+.2fU]]>Bolus limiet bereikt: %2$.2fU naar %3$.2fU]]>!!! Trage koolhydraat absorptie gedetecteerd: %2$d%% van de tijd. Controleer je berekening nogmaals. COB kan zijn overschat waardoor er misschien meer insuline wordt afgegeven!!! zijn]]>
- %1$.0f / %2$d EVoer dit deel van het bolus wizard resultaat uit [%]Bolus wizard voert de berekening uit maar alleen dit deel van berekende insuline wordt geleverd. Handig in combinatie met het SMB algoritme.Bezig met laden...
@@ -1365,7 +1060,6 @@
TijdsintervalTijd ligt tussen %1$s en %2$sTussen
- SluitenVerhogen van de maximale basaal waarde omdat de instelling lager is dan het maximum in het profielOngeldige inhoud van het bericht%1$s ISF: %2$.1f
@@ -1383,8 +1077,8 @@
UitVoltooiing wissenWissen gestart
- Tijd detectieWil je dit leerdoel opnieuw starten? Je kunt je voortgang verliezen.
+ Tijd en/of tijdzone wijzigen op de pompGeen pomp geselecteerdSelecteer eenheden waarin je waarden wilt weergevenUpload lokale profielwijzigingen naar NS
@@ -1395,13 +1089,12 @@
DuplicerenHuidige wijzigingen eerst opslaan of ongedaan makenHuidige profiel verwijderen?
- Nieuw lokaal profiel maken op basis van deze profiel wissel?Profielnaam bevat punten.\nDit wordt niet ondersteund door NS.\nProfiel is niet geüpload naar NS.Laagste waarde in bereik (alleen weergave)Hoogste waarde in bereik (alleen weergave)SorterenLeeftijd:
- Gewicht:
+ Gewicht:ID:VerzendenMeest voorkomende profiel:
@@ -1409,10 +1102,8 @@
EnquêteOngeldige leeftijd invoerOngeldige gewicht invoer
- %1$s: ∑: %2$.2f Bol: %3$.2f Bas: %4$.2f]]>%1$s: Laag: %2$02d%% In: %3$02d%% Hoog: %4$02d%%]]>Gemiddelde
- TDDTIRActiviteitsmonitorWil je de activiteitenstatistieken resetten?
@@ -1422,12 +1113,8 @@
BGHulpmiddelenToon berekening
- Fout
- 12u
- 24uAutomation gebeurtenisAl ingesteld
- BerichtWachtrij leegmaken? Alle gegevens in de wachtrij zullen verloren gaan!Gebruik van Vertraagde bolus functie zal de closed loop modus stoppen voor de duur van de vertraagde bolus. Wil je dit toch?Closed loop modus uitgeschakeld vanwege afgeven Vertraagde bolus
@@ -1441,4 +1128,156 @@
Tijdelijke basaal uitvoering tijdInsight pomp waarschuwingen
+ van authentificatie app voor: %1$s
+ Authentificatie inschakelen
+ Authentificeer SMS commando\'s met behulp van One Time Passwords (OTPs, eenmalige wachtwoorden) gegenereerd door Google Authenticator of soortgelijke 2FA apps.
+ Extra PIN aan einde van token
+ Extra cijfers die je moet onthouden, en aan het eind van elk gegenereerd eenmalig wachtwoord moet toevoegen.
+ Authentificatie instellingen
+ Te controleren OTP:
+ Reset Authentificatie
+ Reset Authentificatie-sleutel
+ Weet je zeker dat je de Autentificatie-sleutel wilt resetten? Met deze actie maak je alle Authentificatie instellingen van verbonden telefoons ongeldig, en je zult ze opnieuw moeten instellen.
+ Er is een nieuwe Authentificatie-sleutel gegenereerd! Gebruik de nieuwe QR-Code voor het instellen van geautoriseerde telefoons.
+ 1. Installeer Authenticator app
+ 2. Scan code om AndroidAPS OTP codes in te stellen
+ 3. Test eenmalig wachtwoord (One Time Password)
+ Reset Authentificatie
+ Installeer de Authenticator-app op elke volger telefoon die RFC 6238 TOTP tokens ondersteunt. Populaire gratis apps zijn:\n • Authy\n • Google Authenticator\n • LastPass Authenticator\n • FreeOTP Authenticator
+ DEEL deze code met NIEMAND ANDERS!\nGebruik hem alleen om de Authenticator-app in te stellen op telefoons van volgers.
+ Door de Athentificator te resetten, maak je alle Authentificatie-instellingen van reeds verbonden telefoons ongeldig! Je zult ze opnieuw moeten instellen!
+ Bij verbinden
+ Bij verbinding verbreken
+ Voorspellingen
+ Richtingscoëfficiënt afwijking
+ Authorisatie mislukt
+ Absolute insuline
+ Het masterwachtwoord wordt gebruikt voor het versleutelen van backups en om de app-beveiligingen te kunnen overschrijven. Onthoud het goed of bewaar het op een veilige plaats.
+ Wachtwoorden komen niet overeen
+ Huidig masterwachtwoord
+ Statusindicatoren
+ Kopieer instellingen van NS
+ NS instellingen kopiëren (indien aanwezig)?
+ Klassiek weergave thema
+ Knoppen worden altijd weergegeven aan de onderkant van het scherm
+ Groot scherm
+ Skin
+
+ Nooit verbonden
+ Ontwaken
+ Communicatiefout
+ Time-out op de communicatie
+ Pomp niet bereikbaar
+ Ongeldige configuratie
+ Actief
+ Slapend
+
+
+ Pomp integratie voor Omnipod, vereist RileyLink (met firmware 2.0 of hoger).
+
+ Bolus pieptoon ingeschakeld
+ Basaal pieptoon ingeschakeld
+ SMB pieptoon ingeschakeld
+ Tijdelijk basaal pieptoon ingeschakeld
+ Pod debugging opties ingeschakeld
+ DST/tijdzone detectie ingeschakeld
+
+ Pod Beheer
+ Pod Status
+ %1$.2f E over
+ Meer dan 50 E
+ Pod adres
+ Pod verloopt
+ Geen info
+ Geen pod verbonden
+ Niet geïnitialiseerd
+ Actieve pod alarmen
+ Alarmen bevestigen
+
+ Omnipod (433,91 MHz)
+
+ Bewerking is niet mogelijk.\n\nJe moet eerst Omnipod ingesteld hebben, voordat je deze bewerking kunt gebruiken.
+ Bewerking is niet mogelijk.\n\nJe moet enkele minuten wachten, totdat AAPS voor de eerste keer probeert om het profiel in te stellen.
+ Ongeldig PodInitActionType: %1$s
+ Geen actieve pod.
+ Opdracht verificatie is mislukt.
+ Er is een onverwachte fout opgetreden. Rapporteer dit alsjeblieft! (type: %1$s).
+ Communicatie mislukt: ongeldige invoerparameters ontvangen.
+ Communicatie mislukt: timeout.
+ Communicatie mislukt: er is een onvoorziene fout opgetreden. Rapporteer dit alsjeblieft!
+ Communicatie mislukt: berichtintegriteit kon niet worden geverifieerd.
+ Communicatie mislukt: ongeldige gegevens ontvangen van de Pod.
+ Communicatie mislukt: de Pod bevindt zich in een verkeerde staat.
+ Communicatie mislukt: ongeldig antwoord ontvangen van de Pod.
+ Communicatie mislukt: bericht met ongeldig volgnummer ontvangen van de Pod.
+ Communicatie mislukt: bericht met ongeldig adres ontvangen van de Pod.
+ Communicatie is mislukt: kon bericht van de Pod niet decoderen.
+ Communicatie mislukt: nonce resync is mislukt.
+ Communicatie mislukt: nonce out of sync.
+ Communicatie mislukt: onvoldoende gegevens ontvangen van de Pod.
+ Een pod-fout (%1$03d %2$s) is gedetecteerd. Deactiveer je Pod en start een nieuwe.
+ Communicatie mislukt: de Pod heeft een foutrespons gegeven.
+
+ Pod Beheer
+ Initialiseer Pod
+ Deactiveer Pod
+ Reset Pod
+ Pod Historie
+ Bolus instellen
+ Annuleer Bolus
+ Instellen Tijdelijke Basaal
+ Annuleer Tijdelijk Basaal (Intern door stuurprogramma)
+ Annuleer Tijdelijk Basaal (Geforceerd door gebruiker)
+ Basaalprofiel instellen
+ Pod status ophalen
+ Pod info ophalen
+ Tijd instellen
+ Configureer alarmen
+ Bevestig alarmen
+ Onderbreek toediening
+ Hervat toediening
+ Onbekende invoer
+ %1$.1f E
+ %1$.1f E, KH=%2$.1f g
+ Basaal: %1$.1f E, Duur: %2$d min
+ Als je op OK klikt, zal de Pod gedwongen worden gereset en kun je niet meer communiceren met de Pod. Doe dit alleen als je al niet meer met de Pod kunt communiceren. Als je nog wel kunt communiceren met de Pod, gebruik dan de optie Deactiveer Pod.
+ Pod Historie momenteel niet beschikbaar.
+ Vul de Pod
+ \nVul de nieuwe Pod met voldoende insuline voor 3 dagen.\n\nLuister of je twee piepjes hoort tijdens het vullen. Deze geven aan dat de minimum hoeveelheid van 85E is bereikt. Ook als je de twee piepjes hebt gehoord ga je verder met vullen totdat de vulspuit volledig leeg is.\n\nNa het vullen van de Pod druk je op Volgende.\n\nOpmerking: verwijder de beschermkap van de Pod naald nog niet!
+ Uitvullen
+ Probeer te koppelen met de nieuwe Pod en laat de Pod de naald uitvullen.\n\nWanneer alle onderdelen zijn afgerond, druk je op Volgende.\n\nOpmerking: Houd de Pod goed dicht bij de RileyLink terwijl je dit doet.
+ Plaats de Pod
+ \nBereid het plaatsen voor. Verwijder de beschermdop van de naald en haal de papiertjes van de sticker.\n\n(Mocht je zien dat de canule uitsteekt, druk dan op Annuleren en begin overnieuw met een andere Pod.)\n\nBevestig de Pod op de huid. Druk op Volgende om de canule te gaan inschieten en de insulinetoediening te laten starten.
+ Canule inschieten
+ De basaalstand wordt ingesteld en de canule wordt ingeschoten.\n\nWanneer alle onderdelen zijn afgerond, druk je op Volgende.
+ Pod Info
+ \nDe Pod is nu actief.\n\nJouw basaalprofiel is ingeladen in de Pod en de canule is ingebracht.\n\nControleer of de canule correct is geplaatst en vervang de Pod als je denkt dat er iets is misgegaan.
+ Deactiveer Pod
+ \nDruk op Volgende om de Pod te deactiveren.\n\nOpmerking: Hiermee wordt de insuline toediening gestopt en wordt de Pod gedeactiveerd.
+ Deactiveren van de Pod
+ Deactiveren van de Pod.\n\nWanneer alle onderdelen zijn afgerond, druk je op Volgende.\n\nOpmerking: Als deactiveren herhaaldelijk niet wil lukken, druk je op Annuleren en gebruik de optie Reset Pod om de Pod-status geforceerd te deactiveren.
+ Pod gedeactiveerd.\n\nVerwijder de Pod van je lichaam en gooi hem weg.
+ Pod Koppelen
+ Pod Uitvullen
+ Canule vullen
+ Instellen Basaal Profiel
+ Annuleer toediening
+ Deactiveer Pod
+
+
+ Pomp integratie voor Omnipod Dash.
+ Herinnering koppeling afronden
+ Herinnering setup afronden
+ Pod verloopt binnenkort
+ Pod verloopt binnenkort
+ Schakelt zeer binnenkort uit
+ Laag reservoir
+ Onbekend alarm
+ Het instellen van basaal profiel is mogelijk mislukt. De toediening is misschien gestopt! Vernieuw de status van Pod.
+ Het instellen van tijdelijk basaal is mogelijk mislukt. Als er al een tijdelijk basaal actief was, is dat misschien geannuleerd! Vernieuw de status van de Pod.
+ Het instellen van de tijd is mogelijk mislukt. De toediening is misschien gestopt! Vernieuw de status van Pod.
+ Kan niet controleren of de bolus is geslaagd. Controleer of de Pod de bolus aan het toedienen is of annuleer de bolus.
+ RL Statistieken
+ Pulsen Log
+ Profiel hulp
diff --git a/app/src/main/res/values-pl-rPL/exam.xml b/app/src/main/res/values-pl-rPL/exam.xml
index 1c8f99b7e9..b346bd076c 100644
--- a/app/src/main/res/values-pl-rPL/exam.xml
+++ b/app/src/main/res/values-pl-rPL/exam.xml
@@ -1,7 +1,7 @@
Co jest prawdą w przypadku DIA?
- Temat: Czas działania aktywnej insuliny
+ Temat: Czas działania insuliny (DIA)Wartość minimalna to 3 godziny.Wartość minimalna to 5 godzin.https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html?#insulin
@@ -122,7 +122,7 @@
Aplikacja Loop na iPhone\'a.Aplikacja Spike na iPhone\'a.https://androidaps.readthedocs.io/en/latest/EN/Children/Children.html
- Temat: Współczynnik wrażliwości na insulinę
+ Temat: Współczynnik wrażliwości na insulinę (ISF)Wyższe wartości ISF prowadzą do mniejszej ilości podanej insuliny gdy AAPS koryguje wysoki poziom cukru.Niższe wartości ISF prowadzą do mniejszej dawki insuliny gdy AAPS koryguje wysoki poziom cukru.Zmiana wartości ISF nie ma wpływu na ilość insuliny dostarczanej, gdy AAPS koryguje wysoki poziom cukru.
@@ -130,7 +130,7 @@
Zmiana wartości ISF w profilu wystarczy, aby zastosować zmianę.https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#insulin-sensitivity-factor-isf-mmol-l-u-or-mg-dl-uhttps://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html
- Temat: Wartość przelicznika IC
+ Temat: Węglowodany na jednostkę Insuliny (IC)Wyższe wartości ICprowadzą do mniejszej ilości insuliny dostarczonej do podanej ilości węglowodanów.Niższe wartości IC prowadzą do mniejszej ilości insuliny podanej do wprowadzonej ilości węglowodanów.Załóżmy, że masz 0 COB. Zmiana IC doprowadzi do podania innej ilości insuliny w celu skorygowania twojej wartości BG.
diff --git a/app/src/main/res/values-pl-rPL/protection.xml b/app/src/main/res/values-pl-rPL/protection.xml
index d2b1b43d2a..48652935ae 100644
--- a/app/src/main/res/values-pl-rPL/protection.xml
+++ b/app/src/main/res/values-pl-rPL/protection.xml
@@ -15,6 +15,8 @@
Bez ochronyZ ochronąHasło główne nie jest ustawione!\n\nProszę ustawić swoje hasło główne w preferencjach (%1$s → %2$s)
+ Niezabezpieczona funkcja fallback
+ Aby być skuteczna, biometryczna ochrona musi posiadać hasło typu master. \n\n Ustaw hasło typu master!Hasło ustawione!Hasło nie ustawioneHasło nie zostało zmienione
diff --git a/app/src/main/res/values-pl-rPL/strings.xml b/app/src/main/res/values-pl-rPL/strings.xml
index 769d87d688..1f83406ce9 100644
--- a/app/src/main/res/values-pl-rPL/strings.xml
+++ b/app/src/main/res/values-pl-rPL/strings.xml
@@ -12,13 +12,10 @@
Zresetuj bazy danychNa pewno chcesz zresetować bazy danych?Wyjście
- Używaj przedłużonych bolusów dla >200%%
- Urządzenie Bluetooth DanaRZawsze używaj wartości bezwzględnych bazyProszę uruchomić ponownie telefon lub zrestartować AndroidAPS w ustawieniach systemu telefonu \ninaczej AndroidAPS nie będzie otrzymywał logowań (ważne ze względu na śledzenie i sprawdzanie poprawności działania algorytmów)!To urządzenie nie obsługuje białej listy optymalizacji baterii - mogą wystąpić problemy z wydajnością.Niektóre przyciski umożliwiające szybki dostęp do typowych funkcji
- Wprowadź zaawansowane wpisy w dzienniku.Konfiguracja aktywnych modułów systemuProgram do naukiWyświetla dane posiłków zdefiniowanych w Nightscout
@@ -36,13 +33,10 @@
Użycie profilu, który zdefiniowałeś w NightscoutZdefiniuj profil z tylko jednym blokiem czasowym.Integracja z pompą Accu-Chek Combo, wymaga zainstalowania sterownika ruffy
- Integracja z pompą DANA R Diabecare
- Integracja z pompą DANA R Diabetes, wersja koreańska
- Integracja z pompą DANA R Diabecare z oprogramowaniem v2
- Integracja z pompą DANA RS DiabecareIntegracja pompy dla pacjentów podających insulinę w formie wielu zastrzyków dziennieIntegracja z pompami, które nie posiadają jeszcze żadnego sterownika (Open Loop)Wrażliwość jest obliczana w taki sam sposób, jak algorytm Oref0, ale możliwe jest podanie okresu z przeszłości. Minimalne wchłanianie węglowodanów jest obliczana na podstawie czasu wchłaniania max carb, określonego w ustawieniu.
+ Wrażliwość oblicza się na podstawie danych z ostatnich 8 lub 24 godzin (przy użyciu danych o wyższej wrażliwości). Węglowodany (jeśli nie są wchłonięte) są skracane po upływie czasu określonego w ustawieniach. Wtyczka również oblicza UAM.Wrażliwość jest obliczana jako średnia ważona z odchyleń. Nowsze wartości mają większą wagę. Minimalne wchłanianie węglowodanów jest obliczana na podstawie czasu wchłaniania max carb, określonego w ustawieniu. Algorytm ten najszybciej śledzi zmiany wrażliwości.Pobieraj wartości BG ze spatchowanej aplikacji Eversense.Pobieraj wartości BG z Glimp.
@@ -53,13 +47,6 @@
Monitoruj i kontroluj AndroidAPS, korzystając z SmartWatch WearOS.Pokaż informacje o swojej pętli na watchface xDrip+.Zdalne sterowanie AndroidAPS za pomocą poleceń SMS.
- Jednostki
- DIA
- IC
- ISF
- Baza
- Cel
- NIE USTAWIONO PROFILUInsulina:Węglow.:IOB:
@@ -75,15 +62,9 @@
TTWęglowKorekta
- UBolus IOBUruchom terazPOMPA WIRTUALNA
- Podstawowa dawka bazowa
- Baza tymczasowa
- Bolus Przedłużony
- Bateria
- ZbiornikOKOstatnie działanieParametry wejściowe
@@ -95,16 +76,11 @@
RezultatWynik: %1$s %2$sBrak danych o glukozie
- Zmiana nie wymaganaŻądanie
- Wartość
- Czas trwania
- PowódGlukozaDeltaDelta:Konfiguracja
- ZadaniaPrzeglądProfil NightscoutProsty profil
@@ -122,7 +98,6 @@
OgólneTo są główne wtyczki, które mogą okazać się użyteczne.Które ograniczenia są zastosowane?
- dniOgraniczeniaPętlaPętla
@@ -131,25 +106,19 @@
Po ograniczeniachBaza tymczasowa ustawiona przez pompęOstatnie działanie
- OK
- AnulujNIE WYBRANO APS LUB NIE UZYSKANO WYNIKUZabezpieczeniaWtyczka jest wyłączonaNaruszenie ograniczeńBłąd podania bolusa
- Błąd podania bazy tymczasowejWartość bazy [%]Akceptuj nową bazę tymczasową:LeczenieKalkulatorOgraniczenie nałożone!
- Potwierdzenie
- BolusBolus:BazaBaza:
- Węglow.Zmień wprowadzone dane!Źródło BGSkąd AndroidAPS powinien czerpać dane?
@@ -157,34 +126,17 @@
Tryb APSZamknięta pętlaOtwarta pętla
+ Zawieszenie przy niskiej glikemiiPętla wyłączonaWyłącz pętleWłącz pętleDostępna nowa sugestia
+ Sugestia węglowodanówNiewspierana wersja NightscoutPĘTLA WYLĄCZONA Z UWAGI NA OGRANICZENIABazowa IOBOgraniczenia bolusa wprowadzoneOgraniczenie stosowania węglowodanów
- Sprawdź BG
- Powiadomienie
- Notatka
- Pytanie
- Ćwiczenia
- Zmiana wkłucia
- Założenie sensora CGM
- Uruchomienie sensora CGM
- Zmiana zasobnika insuliny
- Zmiana profilu
- Bolus na przekąskę
- Bolus na posiłek
- Bolus korekcyjny
- Bolus złożony
- Dawka Tymczasowa Start
- Dawka Tymczasowa Koniec
- Węglow. korekcyjne
- OpenAPS Rozłączony (Offline)
- Typ zdarzeniaInneMiernikSensor
@@ -205,46 +157,69 @@
Bolus PrzedłużonyWersja Nightscout:Brakuje %1$dg
- Właściwości wyeksportowane
+ Ustawienia wyeksportowaneEksportuj ustawienia doImportuj ustawienia zUstawienia zaimportowaneNie znaleziono plikuEksportuj ustawieniaImportuj ustawienia
- Max U/h Tymczasowa Dawka Bazowa, jaka może być ustawiona
+ Maksymalna wartość U/h tymczasowej bazy może być ustawiona naWartość określona jako Maksymalna Baza (max basal) w OpenAPSMaksymalna bazowa IOB, którą OpenAPS może dostarczyć [U]Ta wartość jest nazywana Max IOB w OpenAPS\nTo jest maksymalna wartość insuliny w [U], którą APS może dostarczyć w danej chwili.
- ODRZUĆ
- DanaR
- Łączę
- Połączono
- Rozłączono
- Ustawienia pompy Dana
+ Zostaniesz poproszony o hasło główne, które będzie użyte do szyfrowania wyeksportowanych preferencji.
+ Zostaniesz poproszony o hasło główne, które jest potrzebne do odszyfrowania zaimportowanych preferencji.
+ Eksportowanie anulowane! Ustawienia NIE zostały wyeksportowane!
+ Import anulowany! Ustawienia NIE zostały zaimportowane!
+ Wybierz plik do zaimportowania
+ Proszę sprawdzić ustawienia przed importem:
+ Ustawienia nie mogą być zaimportowane!
+ Ustawienia nie powinny być importowane!
+ Wyjaśnij problemy z importem…
+ Szczegóły problemów z importem
+ Importuj
+ Importuj mimo to (NIEBEZPIECZNE!)
+ Ustawienia zostały utworzone z innym wariantem AAPS (%1$s) gdy masz %2$s.\n\nNiektóre ustawienia mogą być brakujące lub nieprawidłowe - po zaimportowaniu proszę sprawdzić i zaktualizować swoje ustawienia.
+ Preferencje zostały utworzone na innym urządzeniu. Import ze starszego/innego telefonu jest OK, ale upewnij się, że importowane preferencje są poprawne!
+ Używasz przestarzałego formatu ze starych wersji AAPS, który nie jest bezpieczny! Używaj go tylko w ostateczności, jeśli nie masz eksportu w aktualnym formacie JSON.
+ Zaimportowane ustawienia mają już %1$s dni! Może masz bardziej aktualne ustawienia lub wybierzesz niewłaściwy plik? Pamiętaj o regularnym eksporcie ustawień!
+ Niepoprawny format daty i czasu!
+ Importujesz ustawienia z innej, nieco starszej wersji aplikacji. Prawdopodobnie to jest OK bo np.: importujesz ustawienia po aktualizacji do nowej wersji, ale sprawdź po zaimportowaniu, czy ustawienia są nadal poprawne!
+ Importujesz ustawienia ze znacząco innej wersji aplikacji. Zmiana głównego numeru wersji aplikacji oznacza znaczące zmiany, i może oznaczać niekompatybilność niektórych ustawień. Upewnij się po imporcie, że ustawienia są nadal poprawne!
+ Format pliku
+ Data utworzenia
+ Wersja AAPS
+ Wariant kompilacji
+ Eksportowanie nazwy urządzenia pacjenta
+ Eksportowanie modelu urządzenia
+ Szyfrowanie pliku
+ Stary format eksportu
+ Nowy zaszyfrowany format
+ Nowy format testowy (niezaszyfrowany)
+ Nieznany format eksportu
+ Plik ustawień został zmieniony
+ Plik ustawień jest bezpieczny
+ Używanie niebezpieczne, niezaszyfrowany format ustawień
+ Błąd w formacie JSON, brak wymaganego pola (format, zawartość, metadane lub zabezpieczenia)
+ Błąd odszyfrowania, podane hasło nie może odszyfrować pliku
+ Brak sumy kontrolnej pliku (hash), nie można zweryfikować autentyczności ustawień!
+ Plik został zmodyfikowany po eksporcie!
+ Błąd odszyfrowania, nie udało się przetworzyć ustawień!
+ Błąd deszyfrowania, podane hasło jest niepoprawne lub plik ustawień został zmodyfikowany! Może się zdarzyć, że zaimportowany plik został wyeksportowany z innym hasłem głównym.
+ Brak konfiguracji szyfrowania, format ustawień jest nieprawidłowy!
+ Nieobsługiwany lub nieokreślony algorytm szyfrowania!
+ wyeksportowano dzisiaj
+ wyeksportowano %1$s temu
+ wyeksportowano w dniu %1$s
+ wyeksportowano mniej niż godzinę temu
+ w katalogu: %1$sUmowa licencyjna użytkownika końcowegoNIE MOŻE BY WYKORZYSTYWANY DO PODEJMOWANIA DECYZJI MEDYCZNYCH. NIE MA ŻADNEJ GWARANCJI NA PROGRAM, W ZAKRESIE DOZWOLONYM PRZEZ OBOWIĄZUJĄCE PRAWO. Z WYJĄTKIEM PRZYPADKÓW, GDY W INNY SPOSÓB PISMO OŚWIADCZENIA PRAW AUTORSKICH I / LUB INNYCH STRON, PRZEDSTAWIAĆ PROGRAM \"W STANIE TAKIM, W JAKIM SIĘ ZNAJDUJE\" BEZ JAKIEJKOLWIEK GWARANCJI, WYRAŹNEJ LUB DOMNIEMANEJ, W TYM MIĘDZY INNYMI DOMNIEMANYCH GWARANCJI PRZYDATNOŚCI HANDLOWEJ I PRZYDATNOŚCI DO OKREŚLONEGO CELU. CAŁKOWITE RYZYKO ZWIĄZANE Z JAKOŚCIĄ I WYNIKIEM PROGRAMU JEST PO PAŃSTWA STRONIE. W PRZYPADKU USZKODZENIA PROGRAMU UŻYTKOWNIK PONOSI KOSZT CAŁEGO NIEZBĘDNEGO SERWISU, NAPRAWY LUB POPRAWEK. W PRZYPADKU NIEPOROZUMIEŃ ZASTOSOWANIE PRAWNE MA UMOWA W ANGIELSKIEJ WERSJI JĘZYKOWEJ!!!ROZUMIEM I WYRAŻAM ZGODĘZACHOWAJ
- Nie odnaleziono urządzenia bluetooth
- Nie odnaleziono wybranego urządzenia
- Błąd połączenia z pompą
- IOB w pompie
- Jednostki dzienne
- Ostatni bolus
- %1$.1fh temu
- Błędne dane wejściowe
- Wartość ustawiona nieprawidłowoZaładuj profil ponownie
- Zobacz profil
- Wykonane
- Komentarz
- Sukces
- Procent
- Całkowity
- Wyłącz bazę tymczasowąKomunikator SMS
- Oczekiwanie na wynikDozwolone numery telefonów+XXXXXXXXXX;+YYYYYYYYYYAby dostarczyć bolus %1$.2fU wprowadź kod %2$s
@@ -265,60 +240,24 @@
Cel %1$s na %2$d minutPomyślnie ustawiono cel %1$s na %2$d minutyPomyślnie anulowano cel tymczasowy
- Dostarczam %1$.2fUZezwalaj na komendy zdalne via SMS
- Palec
- Sensor
- Ręczne
- Cel tymczasowy (TT)
- Odrzuć Cel tymczasowyUstawienia profilu DanaRDIA [h]Czas aktywności insuliny
- Nieudane uaktualnienie profilu bazy
- Załaduj ponownieWgrywanie
- E bolus
- Bolus DS
- Bolus DE
- błąd
- napełnij
- godzina bazy
- glukoza
- węglowodany
- alarm
- Wszystkie %1$d rekordy przesłane
- Bolus S
- Alarmy
- Godziny Bazy
- Bolusy
- Węglowodany
- Insulina dzienna
- Błędy
- Glukoza
- Napełnij
- Wstrzymaj
- Łączenie przez %1$d s
- Hasło pompy
- Błędne hasło pompy!
- Pompa jest zajęta
- Dostarczone
- ZatrzymaneBolus zatrzymanyZatrzymuję bolus
- Zatkanie
- Stop
- NACIŚNIĘTY STOP
- Czekam na pompę
- Zamierzam dostarczyć %1$.2fU
- Osiągnąłeś dozwolony limit
- Nie wybrano profiluPętla (Loop) została wyłączonaPętla (Loop) została włączonaPętla (Loop) jest wyłączonaPętla (Loop) jest włączona%1$.2f ograniczone do %2$.2fWartość %1$s jest poza dopuszczalną granicą
+ Aby podłączyć pompę odpowiedz kodem %1$s
+ Połączenie z pompą nie powiodło się
+ Aby odłączyć pompę na %1d minut odpowiedz kodem %2$s
+ Pompa odłączona
+ Pompa ponownie podłączonaZdalne komendy nie są dozwoloneBolus zdalny niedostępny. Spróbuj ponownie później.Aby rozpocząć bazę %1$.2fU/h przez %2$d min. odpowiedz kodem %3$s
@@ -327,6 +266,9 @@
Aby wprowadzić %1$dg o %2$s odeślij w SMS kod %3$sAby rozpocząć bolus przedłużony %1$d%% przez %2$d min. odpowiedz kodem %3$sAby wstrzymać pętle na %1$d minut odpowiedz kodem %2$s
+ Aby wznowić pętlę odpowiedz kodem %1$s
+ Aby włączyć pętlę odpowiedz kodem %1$s
+ Aby wyłączyć pętlę odpowiedz kodem %1$sTymczasowa baza %1$.2fU/h przez %2$d min rozpoczętaBolus przedłużony %1$.2fU na %2$d min. rozpoczęty pomyślniePomyślnie wprowadzono %1$dg węglowodanów
@@ -352,22 +294,18 @@
PosiłekKorektaAkcje
- AndroidAPS uruchomionyNS tylko przesył. (wyłączona synch.)NS tylko przesył. Nie skuteczne na SGV o ile ni jest wykorzystywane lokalne źródło danych jak xDrip. Nie skuteczne na Profilach gdy profil z NS jest wykorzystywany.Pompa nie zainicjowana!
- Pompa nie zainicjowana, profil nie ustawiony!Rozpocznij/WypełnijProszę upewnij się, że ilość wypełnienia odpowiada ilości właściwej dla twojego wkłucia!Inne
- Rozpocznij/Wypełnij standardowe ilości insuliny.
+ Rozpocznij/Wypełnij standardowe ilości insulinyPrzycisk 1Przycisk 2Przycisk 3Jednostki:Jednostki
- mg/dl
- mmol/lDIAZakres docelowy:Zakres do wizualizacji (na wykresie)
@@ -377,17 +315,7 @@
Oprogramowanie Wear (Smartwatch)Prześlij ponownie wszystkie daneOtwórz ustawienia dla Wear
- Błąd pompy
- Niski stan baterii
- Wyłączenie pompy
- Bateria pompy rozładowana
- DanaR wersja KoreańskaDawka bazowa:
- Ustawienie profilu bazy nie powiodło się
- Profil bazowy w pompie uaktualniony
- Wyłącz tryb EasyUI w pompie
- Uaktywnij bolusy przedłużone w pompie
- Zmień tryb z U/d na U/h w pompieWartość bazy poniżej minimum. Nie ustawiono profilu!BG:Ostatnia BG:
@@ -395,7 +323,6 @@
MM640gNadchodzące powiadomieniaNIEAKTUALNE DANE
- %1$d min temu%1$dmin temuLokalny ProfilOpenAPS AMA
@@ -411,47 +338,28 @@
HipoĆwiczeniaUsuń wpis
- DanaR Statystyki
- Kumulatywna TDD (dawka dzienna)
- Ważona wykładniczo TDD
- Baza
- Bolus
- TDD
- Data
- Stosunek
- # Dni
- Waga
- Możliwa niedokładność jeśli używasz bolusów do wypełnień!
- Stare dane, naciśnij \"RELOAD\"
- Suma dzienna bazy (TBB)
- TBB * 2
- Inicjuje ...ACTCONFLOOPSPOAPSLP
- DANAHOMEVPUMPNSPROFILTREAT
- CPOBJWEARSMSSkrócone tytuły kartZawsze używaj krótkiej średniej delty zamiast prostej deltaUżyteczne, jeżeli dane z niefiltrowanego źródła jak xDrip mają rozrzut.
- Ustawienia zaawansowane
- Model: %1$02X Protocol: %2$02X Code: %3$02XProfilWartość domyślna: 3 To jest kluczowy współczynnik bezpieczeństwa OpenAPS. Ogranicza dawki bazowe do 3x twojej największej dawki bazowej. Prawdopodobnie nie będziesz musiał tego zmieniać, ale powinieneś być świadomy tego, co się rozumie przez “3x max dzienna; 4x aktualna” dla współczynników bezpieczeństwa.Wartość domyślna: 4 To jest drugi kluczowy współczynnik bezpieczeństwa OpenAPS, i druga wartość z “3x max dzienna; 4x aktualna”. To oznacza, że Twoja dawka bazowa niezależnie od maksymalnej bazy ustawionej na pompie nie może być większa niż ta ustawiona wartość razy twoja aktualna dawka bazowa. To ma na celu przestrzec ludzi przed ustawieniem zbyt wysokiej dawki maksymalnej przed zrozumieniem jak działa algorytm. Ponownie, wartość domyślna to 4x; większość ludzi nie będzie potrzebowała tego zmienić i raczej będą potrzebować dostosować inne ustawienia, jeśli czują, że zbliżają się do współczynnika bezpieczeństwa.Wartość domyślna: 1.2\nTo jest mnożnik dla autosens (wkrótce autotune), ustawia 20%% maks. limit dla najwyższej wartości jaką autosens może przyjąć, co z kolei określa jak wysoko autosens może zwiększyć bazę, jak nisko może ustawić współczynnik wrażliwości insuliny ISF, i jak nisko może ustawić docelową wartość glikemii.Wartość domyślna: 0.7\nDruga strona limitu bezpieczeństwa dla autosens, ustawia mnożnik minimalny dla wartości, do jakiej autosens może obniżyć bazę, i jak wysoko może ustawić ISF i wartość docelową BG.
- Autosens wpływa na wartości docelowe
+ Autosens dostosowuje również wartości doceloweDomyślnie włączone\nTa funkcja pozwala wpływać na zmianę wartości docelowe BG, wartości bazy i oraz współczynnika wrażliwości na insulinę ISF.Wartość domyślna: 2\nBolus snooze jest uruchamiany po wykonaniu bolusa posiłkowego, tak by pętla nie przeciwdziałała niskim wartościom tymczasowym zaraz po posiłku. Jako przykład: wartość domyślna ustawiona jest 2; więc 3 godzinne DIA oznacza, że bolus snooze będzie stopniowo wycofany po 1.5 godziny (3DIA/2).Wartość domyślna: 3.0 (AMA) lub 8.0 (SMB). To jest ustawienie domyślnego wpływu wchłaniania węglowodanów w czasie 5 min. Wartością domyślną jest spodziewane 3mg/dl/5min. Ma to wpływ na szybkość zaniku COB, oraz jak duże wchłanianie węglowodanów będzie przyjęte do obliczeń przyszłych przewidywanych wartości BG, jeżeli BG obniża się bardziej niż w założono, lub nie wzrasta tak szybko jak się spodziewano.
@@ -464,18 +372,9 @@
Kalibracja wysłana. Odbiór musi być dozwolony w xDrip.xDrip nie odbiera kalibracjiPompa wstrzymana
- Uzyskiwanie statusu pompy
- Ustawianie bazy tymczasowej
- Zatrzymywanie bazy tymczasowej
- Ustawianie bolusa przedłużonego
- Zatrzymywanie bolusa przedłużonego
- Uaktualnianie dawek bazowych
- RozłączanieWykonywanieUstawienia pompy wirtualnejPrzesyłaj status do NS
- Złe hasło
- Zbliżam się do dziennego limitu insulinyNSClientNSCIURL:
@@ -499,13 +398,16 @@
Pokaż szczegóły IOBRozłóż IOB na bolus i IOB bazy na zegarkunie udało się - proszę sprawdzić telefon
- Niedostępne
+ n/aWiek pacjentaDzieckoNastolatekOsoba dorosłaOsoba dorosła insulino odpornaProszę wybierz wiek pacjenta w celu ustawienia wartości limitów bezpieczeństwa
+ Nazwa pacjenta
+ Proszę podać nazwę pacjenta lub pseudonim w celu rozróżnienia pomiędzy różnymi konfiguracjami
+ UżytkownikGlimp%1$s potrzebuję wyłączenia z optymalizacji baterii, w celu zapewnienia poprawnego działaniaPętla wstrzymana
@@ -532,8 +434,6 @@
SuperbolusWyślij start app do NSZamykanie aplikacji w celu wprowadzenia ustawień.
- DanaRv2
- InsulinaJakiego typu insuliny używasz?Szybko działająca InsulinaNovorapid, Novolog, Humalog
@@ -554,11 +454,14 @@
Próg ostrzeżenia o krytycznym poziomie zbiornika [U]Próg ostrzeżenia o poziomie baterii [%]Próg ostrzeżenia o krytycznym poziomie baterii [%]
+ PREDIOBCOB
- Firmware
- Ostatnie połączenie
- Status Bluetooth
+ BAZ
+ ODCH
+ AKT
+ ABS
+ KRZODO programieBrak uprawnień SMSBrak uprawnień do wykrywania stanu telefonu
@@ -570,24 +473,15 @@
Brak przesyłania do NSWszystkie dane wysyłane do NS są odrzucane. AAPS jest podłączony do NS, ale nie dokonuje
żadnych zmian w NS
- Krok bazy
- Krok bolusaAnuluj bolus przedłużony Czas sensoraCzas wkłuciaCzas insuliny
- godzin
- Nieprawidłowy profil !!!Zmień profilCzas baterii pompy
- Zmiana baterii pompyOpcje alarmu
- Uwaga wysoki
- Wysoki
- Niski
- Uwaga niski
- Nieaktualne dane
- Uwaga, nieaktualne dane
+ Utwórz powiadomienia z alarmów NS
+ Utwórz powiadomienia z komunikatów NSPróg nieaktualne dane [min]Próg uwaga nieaktualne dane [min]Przedział czasowy dla autosens [h]
@@ -604,7 +498,6 @@
Ustawienia wchłanianiaMaks. czas wchłaniania posiłku [h]Oczekiwany czas w godzinach, w którym wszystkie węglowodany zostają wchłonięte
- Wizualizacja bolusa przedłużonego jako %%SAGEIAGECAGE
@@ -629,7 +522,6 @@
POMPACzas trwania [min]OpenAPS SMB
- SMBWłącz UAMWłącz SMBUżywaj SMB (Super Mikro Bolusów) zamiast bazy tymczasowej dla szybszego działania
@@ -641,23 +533,7 @@
Ultra-Szybki OrefDIA %1$f zbyt krótki - przyjmuję %2$f w zamian!Aktywuj profil
- DataNIEPRAWIDŁOWY
- Oczekiwanie na pompe na sparowanie
- Parowanie OK
- Przekroczono limit czasu parowania
- Parowanie
- Urządzenie nie zostało znalezione do tej pory
- Pusty zasobnik
- Alarm pomiaru poziomu cukru
- Pozostała ilość insuliny
- DanaRS
- Dana
- Wybrana pompa
- Sparuj nową pompę
- Szybkość podawania bolusa
- Ustaw krok bazy na 0.01 U/h
- Numer seryjnyProcentZmiana czasuDomyślne tymczasowe wartości docelowe
@@ -667,32 +543,18 @@
Ćwiczenia celHipo czas trwaniaHipo cel
- Wypełnianie
- Status otrzymywania bolusa przedłużonego
- Status otrzymywania bolusa
- Status otrzymywania tymczasowej bazy
- Otrzymywanie ustawień pompy
- Otrzymywanie czasu pompyużyj ponownieSterowanie z zegarkaUstawiaj wartości docelowe i wprowadzaj leczenie z zegarka.
- Przekroczono limit czasu połączeniaPosiłekg
- m
- h
- d]]>kJEnBiTł]]>
- Oczekuję na zakończenie bolusa. Pozostało %1$d sec.
- Przetwarzanie zdarzenia
- Rozpoczynam podawanie bolusaPolecenie jest teraz wykonywane
- Poprawiono sterownik pompyPompa nieosiągalnaPominięte odczyty BGUżyj powiadomień systemowych dla alertów i powiadomień
@@ -700,24 +562,24 @@
Alarm, jeśli nie są odbierane odczyty BGAlarm, gdy pompa jest nieosiągalnaPompa nieosiągalna próg [min]
+ Alarm gdy wymagane jest podanie węglowodanówPilny alarmINFO
- Bluetooth
- BT Watchdog
- Wyłącza bluetooth telefonu na jedną sekundę, jeśli nie jest możliwe połączenie z pompą. Może to pomóc w niektórych telefonach, w których blokuje się bluetooth.Apka Eversense (spatchowana)Przekaż dane BG do NSUstawienia wysyłania wartości BG (poziomów cukru)Pokaż szczegółowe deltaPokaż deltę z jednym więcej miejscem dziesiętnym
+ Jak często SMB zostanie podane w min.SMB max. minutMaks. ilość minut dawki bazowej do ograniczenia SMB
- Nieobsługiwane oprogramowanie pompy
+ Maksymalna liczba minut UAM SMB
+ Maks. ilość minut dawki bazowej do ograniczenia SMB dla UAM
+ Minimalna sugestia węglowodanów (dosłodzenia)
+ Minimalna ilość węglowodanów, w gramach, niezbędna dla pokazania sugestii dosłodzenia. Sugestie dosłodzenia poniżej tej wartości będą ignorowane - powiadomienie nie będzie pokazywane.Prześlij dane BG do xDrip+W xDrip+ wybierz źródło danych 640g/EversenseNSClient BG
- Wartość bazy zastąpiona minimalną obsługiwaną wartością: %1$s
- Wartość bazy zastąpiona maksymalną obsługiwaną wartością: %1$sObliczenia BGObliczenia Bolus IOBObliczenia IOB
@@ -735,8 +597,6 @@
Tryb zamknięty włączonyMaks. IOB ustawione poprawnieBG dostępne z wybranego źródła
- Wartości bazy nie są ustawione w pełnych godzinach: %1$s
- Nieprawidłowy profil: %1$sProgramowanie pompy do podawania bolusaOdświeżStan
@@ -757,7 +617,6 @@
W ciągu ostatnich dwóch minut zażądano bolusa o tej samej wielkości. Z uwagi na zapobieganie przypadkowym podwójnym bolusom i ochronę przed błędami jest to zabronione.TerazSczytuję historię pompy
- Historia pompyWczytuje profil bazowyPoziom zasobnika pompy jest niskiPoziom baterii pompy jest niski
@@ -776,8 +635,8 @@
Błąd dostarczania bolusa przedłużonegoSighttemu
- %1$.2f h
- %1$d min.
+ Ustawiaj neutralne bazy tymczasowe
+ Jeśli ta opcja jest włączona, anuluje tymczasową wartość bazową przed końcem każdej godziny. Może to pomóc wyciszyć alarmy/wibracje związane z TBR występujące co godzinę w niektórych pompach.Włącz SMB (Super Mikro Bolusy) zawszeWłącz SMB (Super Mikro Bolusy) zawsze, niezależnie od bolusów. Możliwe jedynie ze źródłem BG (poziomu cukru) z dobrym filtrowaniem, jak aplikacja G5Włącz SMB po węglowodanach
@@ -787,9 +646,6 @@
Włącz SMB z tymczasowym poziomem docelowym (TT)Włącz SMB gdy tymczasowy poziom docelowy (TT) jest aktywny (TT WkrótcePosiłek, TT ćwiczenia)Włącz SMB z wysokim tymczasowym poziomem docelowym
- Włącz SMB gdy wysoki tymczasowy poziom docelowy jest aktywny (TT ćwiczenia)
- Pozwól na działanie bazy tymczasowej
- WyciszInsulinaWęglowod.Przyciski
@@ -799,11 +655,17 @@
Ilość insuliny do dodania po wciśnięciu przyciskuNie można uruchomić aplikacji CGM. Upewnij się, że została zainstalowana.CGM
+ Ignoruj 5 min
+ Ignoruj 15 min
+ Ignoruj 30 min
+ wymPrzegląd historiiPowiadom na SMBPokaż SMB na zegarku jak bolus standardowy.Twórz powiadomienia o błędach
+ Twórz powiadomienia z wymaganych dodatkowych węglowodanów (sugestii dosłodzenia)Twórz powiadomienia Nightscout o błędach i lokalnych alarmach (również widoczne w PortaluOpieki w ramach Leczenia)
+ Twórz powiadomienia w Nighstcout na podstawie sugestii dosłodzeniaPokaż prognozę poziomu na zegarku.PrognozyWybór Danych
@@ -817,7 +679,6 @@
Nie podawaj bolusa, tylko zapisz rekordKategoriaPodkategoria
- Bolus zostanie tylko zapisany w rekordachAutomatycznie wypełnij brakujące BG z NSSMB ustawiony przez pompęAktywność
@@ -831,7 +692,6 @@
Uruchomiona jest wersja dev. Zamknięta pętla jest wyłączona.Tryb Inżynierski włączonyTryb inżynierski nie włączony i nie pracuje wersja \"kandydat do wydania\" (RC)
- %1$.2f U/hWczytuje profil bazowyHistoria pompy zmieniła się po wykonaniu obliczenia bolusa. Bolus nie został dostarczony. Proszę, przelicz ponownie, jeśli wciąż potrzebujesz bolusa.Bolus został pomyślnie dostarczony, ale dodanie wpisu leczenia nie powiodło się. Może się to zdarzyć, jeśli w ciągu ostatnich dwóch minut podano dwa małe bolusy o tej samej wielkości. Sprawdź historię pompy i leczenie i użyj PortaluOpieki, aby dodać brakujące wpisy. Make sure not to add any entries for the exact same minute and same amount.
@@ -854,15 +714,10 @@
SMB wyłączone w ustawieniachUAM wyłączone w ustawieniachUAM jest wyłączone ponieważ zależy od wtyczki wrażliwości Oref1
- Ograniczam maks. dawkę bazową do %1$.2f U/h z uwagi na %2$s
- ograniczenie pompy
- wartość musi być dodatniamnożnik maksymalnej dawki bazowejmnożnik maksymalnej dziennej dawki bazowejBolus został podany w ciągu ostatnich 3 minut, opuszczam SMBBaza ustawiona prawidłowo
- Ograniczam maksymalną wartość w procentach do %1$d%% z uwagi na %2$s
- Ograniczam bolus do %1$.1f U z uwagi na %2$sOgraniczam bolus do %1$.1f U z uwagi na %2$sOgraniczam max IOB do %1$.1f U z uwagi na %2$sOgraniczam węglow. do %1$d g z uwagi na %2$s
@@ -877,7 +732,6 @@
SMB nie dozwolone w trybie otwartej pętliPosiłekponowne uruchomienie
- Oczekiwanie na synchronizację czasu (%1$d sec)Odłączony (%1$d m)Maksymalna, całkowita IOB, której OpenAPS nie może przekroczyć [U]Ta wartość jest nazywana Max IOB w OpenAPS\nOpenAPS nie poda więcej insuliny jeżeli obecna IOB jest większa niż ta wartość
@@ -893,7 +747,6 @@
Kreator konfiguracjiZAKOŃCZWybierz swój język
- Zadano: %1$.2fU Dostarczono: %2$.2fU Kod błędu: %3$sPierwszy stopień przyrostu insulinyDrugi stopień przyrostu insulinyTrzeci stopień przyrostu insuliny
@@ -916,7 +769,6 @@
Pompa wirtualnaDefinicja PompyBolus: Krok =%1$s\nBolus Przedłużony: [krok =%2$s, czas trwania =%3$smin -%4$sh] \nBasal: krok =%5$s\nTBR: %6$s (przez %7$s), czas trwania =%8$smin -%9$sh\n%10$s
- *Tylko wartości dyskretne, nie zakresy są wspierane jako dawki bazowe/bolusy w pompie wirtualnej.Automatycznie uzupełnij BGUstawienia kreatoraObliczenia uwzględnione w wynikach kreatora:
@@ -941,27 +793,11 @@
Rozpocznij swoje pierwsze ZadanieUprawnieniaZapytaj o uprawnienia
- Aplikacja wymaga dostępu do lokalizacji, aby przeprowadzić skan BT
- Aplikacja wymaga dostępu do magazynu plików, aby móc przechować pliki logów
+ Aplikacja wymaga uprawnienia systemowego okna dla powiadomień
+ Aplikacja wymaga dostępu do lokalizacji dla zarządzania bluetoothem i identyfikacją Wi-FiŻądanieSkonfiguruj wtyczkę insulinyWyjście
- Ustawienia użytkownika
- Format wyświetlanego czasu
- Przycisk przewijania
- Dźwięk po przyciśnięciu przycisku
- Alarm
- Dźwięk
- Wibracja
- Obie opcje
- LCD na czas [sekund]
- Podświetlenie na czas [sekund]
- Jednostki glukozy
- Wyłączenie [godzin]
- Niska zawartość zbiornika [Jednostki]
- Zapisz ustawienia w pompie
- Włącz
- WyłączOtwórz menuZamknij menuKonfiguracja wtyczki
@@ -975,15 +811,19 @@
= 100]]>Niski tymczasowy cel zmniejszy wrażliwość
+ Oporność na działanie insuliny obniża cel
+ Po wykryciu oporności obniża się docelowy poziom cukru
+ Wrażliwość podnosi docelowy poziom glukozy
+ Po zwiększeniu wrażliwości zwiększ docelowy poziom glukozyNieprawidłowa konfiguracja pompy, sprawdź dokumentację i zweryfikuj, czy menu Quick Info nazwano QUICK INFO za pomocą oprogramowania konfiguracyjnego 360.Niestandardowe
- Duża Różnica Czasu
- Duża różnica czasu:\nCzas w pompie jest wyłączony przez więcej niż 1,5 godziny.\n. Ustaw czas ręcznie na pompie i upewnij się, że odczyt historii pompy nie powoduje błędu.\nJeśli to możliwe, usuń historię z pompy przed zmianą czasu lub wyłącz pętlę zamkniętą do jednego DIA po ostatnim nieprawidłowym wpisie dziennika, ale co najmniej jeden DIA od teraz.Wyczyść zdarzenia \"Start AndroidAPS\"Znaleziono zapisane ustawieniaUwaga: Jeśli aktywujesz połączenie z pompą inną niż wirtualna, AndroidAPS skopiuje ustawienia bazy do profilu pompy, zastępując istniejące ustawienia w niej zapisane. Upewnij się, że ustawienia bazy w AndroidAPS są poprawne. Jeśli nie jesteś pewien lub nie chcesz nadpisywać podstawowych ustawień pompy, naciśnij przycisk anuluj i połącz ponownie w innym czasie.Niekompletne dane leczenieUstawienia Konserwacji
+ Odbiorca E-maila
+ Zaszyfruj wyeksportowane ustawieniaLiczba logów do wysłaniaKonserwacjaMAINT
@@ -1002,17 +842,10 @@
Preferowany tryb APSRazemKalk
- UściskdłoniWyślij dzisiejsze pliki logów razem z datą i czasem do programistów. Nieoczekiwana sytuacja.
- Przekroczenie ograniczenia maks. bolusa
- Błąd polecenia
- Błąd prędkości
- Przekroczono limit insulinyMinimalna żądana zmiana [%]Otwarta pętla wprowadzi żądanie zmiany tylko w przypadku, gdy będzie ona większa niż ta wartość w %. Wartość domyślna to 20%
- Proszę sparować swoją pompę z telefonem!Wyszukiwanie urządzeń…
- Proszę czekać…Parowanie zakończoneCzy kody wyświetlone na tym urządzeniu i na twojej pompie pasują?Parowanie Insight
@@ -1032,6 +865,10 @@
Melduj ostrzeżeniaWłącz emulację TBRUżyj rozszerzonych bolusów zamiast TBR by ominąć limit 250%% bazy
+ Wyłącz wibracje przy ręcznym podawaniu bolusa
+ Dotyczy bolusa i rozszerzonego bolusa (dostępne tylko z pompami Insight z firmware 3.x)
+ Wyłącz wibracje przy automatycznym podawaniu bolusa
+ Dla SMB i Bazy Tymczasowej z emulacją TBR (tylko z firmware w wersji 3.x pompy Insight)Opóźnienie rozłączenie [s]Numer seryjnyWersja oprogramowania
@@ -1101,7 +938,6 @@
jest większe lub równejest większe niżnie jest dostępne
- nieznanyPoziom jest nieznanyPoziom %1$s %2$.0f %3$sPoziom %1$s %2$.1f %3$s
@@ -1118,23 +954,10 @@
AutoAutomatyzacja== ∑ %1$s U
- U/h
- g/U
- /UPrześlij zmianę sensora do NSPodaj \"Zmiana Sensora\" do NS do NS automatycznie przy uruchomieniu sensoraTomato (MiaoMiao)Tomato
- sekunda
- minuta
- godzina
- dzień
- tydzień
- sekund
- minut
- godzin
- dni
- tygodnieTwoja nazwa użytkownika Tidepool, zwykle Twój adres e-mailLogin nazwa użytkownikaTwoje hasło logowania do Tidepool
@@ -1161,7 +984,6 @@
Powtarzający się czasKażdy/KażdegoNigdy
- %1$dminsWarunek:Działanie:IOB [U]:
@@ -1177,7 +999,6 @@
bardzo stara wersjaNowa wersja dostępna co najmniej %1$d dni! Powrót do LGS (zawieszania podawania bazy przy niskim poziomie) po %2$d dniach, pętla zostanie wyłączona po %3$d dniach2 h
- %1$.2fUApka Dexcom (spatchowana)DXCMPobieraj wartości BG ze spatchowanej aplikacji Dexcom.
@@ -1191,6 +1012,8 @@
istniejenie istniejeCel tymczasowy %1$s
+ Połączenie Bluetooth z urządzeniem %1$s %2$s
+ Połączenie z urządzeniem Bluetooth WiFi SSID %1$s %2$sAutosens %1$s %2$s %%Autosens %
@@ -1220,140 +1043,6 @@
Wyzwalacz:USUŃWarunki wstępne:
-
- Operacja nie jest wspierana przez pompę i/lub sterownik pompy.
- Operacja nie jest JESZCZE wspierana przez pompę.
-
- Integracja pompy Medtronic wymaga urządzenia RileyLink i odpowiedniego modelu pompy
-
- Numer seryjny pompy
- Typ pompy
- Częstotliwość pompy
- Opóźnienie przed rozpoczęciem bolusa(s)
- Max bolus w pompie (U)
- Max dawka bazowa w pompie (U/h)
- Kodowanie Medtronic
- US & Kanada (916 MHz)
- Reszta świata (868 Mhz)
- Kodowanie oprogramowania 4b6b
- Kodowanie urządzenia 4b6b
- Wzbudź i dostrój
- Wyczyść blok bolusa
- Przywróć konfigurację RileyLink
- Typ baterii (podgląd mocy)
- Nie wybrany (widok prosty)
- Alkaliczne (widok rozszerzony)
- Litowe (widok rozszerzony)
- NiZn (widok rozszerzony)
- Bolus/Leczenie - debugowanie
-
- SKANUJ
- ZATRZYMAJ
- Wybrany
- Skan RileyLink
- Bluetooth Low Energy nie obsługiwany.
- Bluetooth nie uruchomiony.
- Lokalizacja nie jest uruchomiona
- Aby uruchomić odnajdywanie Bluetooth na nowszych urządzeniach, lokalizacja musi być uruchomiona. AAPS nie śledzi twojej lokalizacji więc można ją wyłączyć po udanym powiązaniu.
- Uruchom
- Nie
- Skanowanie
- Skanowanie zakończono
- Błąd skanowania: %1$d
-
- Ustawienia
- Historia
- Stan RileyLink
- Stan pompy
- Ustawienia RileyLink
- RileyLink
- Ustawiony adres
- Połączone urządzenie
- Status połączenia
- Błąd połączenia
- Urządzenie
- Typ urządzenia
- Model urządzenia
- Ostatnio używana częstotliwość
- Ostatnie połączenie z urządzeniem
- Oprogramowanie RL
-
- Uruchamianie Bluetooth…
- Błąd Bluetooth
- Bluetooth gotowy
- Nie rozpoczęto
- Uruchamianie RileyLink…
- Błąd RileyLink
- Dostrojenie RileyLink i pompy
- Problem z połączeniem z pompą
- Połączono
-
- Urządzenie to nie RileyLink
- RileyLink nie osiągalny
- Bluetooth wyłączony
- Brak modułu Bluetooth
- Dostrojenie nie powiodło się
- Pompa nieosiągalna
- Pod nieosiągalny
- Nie ustawiono
-
- Pompa Medtronic
- Omnipod
-
- Błędy
- Numer seryjny # nie ustawiony.
- Numer seryjny # nieprawidłowy.
- Tyo pompy nie ustawiony.
- Typ pompy nie obsługiwany.
- Częstotliwość pompy nie ustawiona.
- Częstotliwość pompy nie wspierana.
- Adres RileyLink niewłaściwy.
- Wykryty typ pompy jest inny niż ustawiony.
- Ustawienia bazy/ wzorców nie są włączone w pompie. Włącz je na pompie.
- Profil bazowy ustawiony na pompie nie jest właściwy (musi być STD).
- Ustawiony na pompie typ dawki tymczasowej jest niewłaściwy (musi być całkowity - Absolute).
- Ustawiony na pompie typ Bolus Maksymalny jest niewłaściwy (musi być %1$.2f).
- Ustawiony na pompie typ Bolus Maksymalny jest niewłaściwy (musi być %1$.2f).
- To działanie nie jest możliwe.\n\n Musisz skonfigurować pompę Medtronic Pump, przed uruchomieniem tego działania.
- Wymagana jest zmiana ustawień czasu na 24h.
-
- Dawki bazowe
- Ustawienia
- Powiadomienia
- Statystyki
- Nieznane
- Wszystko
- Historia pompy Medtronic
-
- Nigdy nie połączona
- Wybudzanie
- Błąd komunikacji
- Przekroczony limit czasu połączenia
- Pompa nieosiągalna
- Nieprawidłowe ustawienia
- Aktywna
- Uśpiona
-
- Anulowałeś bolus po jego ustawieniu na pompie. Ponieważ pompa Medtronic nie wspiera polecenia anuluj, musisz wprowadzić zmianę ręcznie. Wprowadź pompę w stan zawieszenia, a następnie przywróć jej działanie (jeżeli wciąż chcesz anulować). Aplikacja pobierze zmiany przy następnym uaktualnieniu (poniżej 5 minut).
- Nie udało się odczytać aktualnej dawki tymczasowej (TBR).
- Nie udało się anulować aktualnej dawki tymczasowej (TBR). Operacja zatrzymania.
- Ustawienia Profilu nie powiodły się ponieważ następująca wartość jest za duża: %1$s
- Nie udało się dostarczyć bolusa.
- Bolus nie mógł być dostarczony ponieważ Ilość dostępnej insuliny (%1$.2f) jest mniejsza niż wymagany bolus (%2$.2f).
- Nie udało się ustawić dawki tymczasowej (TBR).
- Nie udało się anulować bazy tymczasowej (TBR).
- Profil bazy nie został ustawiony.
- Profil bazy jest taki sam, więc nie ustawiono ponownie.
- Pobierz historię - strona %1$d (%2$d/16)
- Pobierz historię - strona %1$d
- Pobierz czas pompy
- Pobierz ustawienia
- Pobierz model pompy
- Pobierz profil dawki bazowej
- Ustaw profil dawki bazowej
- Pobierz tymczasową dawkę bazową
- Ustaw tymczasową dawkę bazową
- Ustaw bolusZmień profil naZmień profil na %1$sOstatnie połączenie z pompą
@@ -1365,7 +1054,6 @@
%2$+.2fU]]>Wprowadzono ograniczenie bolusa: %2$.2fU to %3$.2fU]]>!!!!! Wykryto powolne wchłanianie węglowodanów: %2$d%% czasu. Sprawdź ponownie swoje obliczenia. COB mogły być przeszacowane przez co mogło być podane zbyt dużo insuliny !!!!!]]>
- %1$.0f / %2$d UDostarcz tą część dawki insuliny z wyniku kalkulatora bolusa [%]Kreator bolusa wykonuje obliczenia, ale tylko ta część obliczonej dawki insuliny jest dostarczana. Pomocne z algorytmem SMB.Wczytuję...
@@ -1373,7 +1061,6 @@
Zakres czasuCzas mieści się w zakresie od %1$s do %2$sPomiędzy
- ZamknijZwiększanie maksymalnej wartości bazowej ponieważ ustawienia są poniżej maxymalnej wartości bazy w profiluBłędny tekst wiadomości%1$s ISF: %2$.1f
@@ -1391,8 +1078,8 @@
WyłączWyczyść skończoneWyczyść rozpoczęte
- Wykrywanie czasuCzy chcesz zresetować czas rozpoczęcia zadania? Możesz utracić postępy.
+ Zmiana czasu i/lub strefy czasowej w pompieNie wybrano pompyWybierz jednostki, w których chcesz wyświetlać wartościPrześlij zmiany w profilu lokalnym do NS
@@ -1403,13 +1090,13 @@
SklonujNajpierw zapisz lub wycofaj bieżące zmianySkasować bieżący profil?
- Utworzyć nowy profil lokalny na bazie wybranego profilu?
+ Utworzyć nowy profil lokalny z wybranego profilu?Nazwa profilu zawiera kropki.\nTo nie jest obsługiwane przez NS.\nProfil nie zostanie przesyłany do NS.Dolna wartość zakresu docelowego (tylko do wyświetlania)Górna wartość zakresu docelowego (tylko do wyświetlania)Zmień kolejnośćWiek:
- Waga:
+ Waga:ID:WyślijNajczęściej używany profil:
@@ -1417,10 +1104,8 @@
AnkietaNieprawidłowy wpis wiekuNieprawidłowy wpis wagi
- %1$s: ∑: %2$.2f Bol: %3$.2f Baz: %4$.2f]]>%1$s: Od: %2$02d%% Cel: %3$02d%% Do: %4$02d%%]]>Średnio
- TDDTIRMonitor aktywnościCzy chcesz zresetować statystyki aktywności?
@@ -1430,14 +1115,178 @@
BG (poziom cukru)NarzędziaPokaż obliczenia
- Błąd
- 12h
- 24hZdarzenie automatyzacjiJuż ustawiono
- WiadomośćWyczyścić kolejkę? Wszystkie dane w kolejce zostaną utracone!
+ Użycie funkcji Extended bolus spowoduje zatrzymanie trybu pętli zamkniętej na czas działania przedłużonego bolusa. Czy na pewno tego chcesz?
+ Zamknięta pętla wyłączona, ponieważ działa Extended Bolus (bolus przedłużony)
+ EB
+ \"SprawdzanieTelefonu(em)\"
+ Menu wykresu
+ AS
+ Żądany czas SMB
+ Czas wykonywania SMB
+ Żądany czas bazy tymczasowej
+ Czas wykonywania bazy tymczasowej
+ Alarmy pompy Insight
+ z aplikacji Uwierzytelniającej: %1$s
+ Włącz uwierzytelnianie
+ Uwierzytelnianie komend za pomocą haseł jednorazowych generowanych przez aplikację Google Authenticator lub podobnych aplikacji 2FA.
+ Dodatkowy PIN na końcu tokenu
+ Dodatkowe cyfry, które powinny być zapamiętywane i przyklejone na końcu każdego wygenerowanego hasła jednorazowego
+ Ustawienia uwierzytelnienia
+ OTP do sprawdzenia:
+ Resetuj uwierzytelnianie
+ Resetuj klucz uwierzytelniania
+ Czy na pewno zresetować klucz uwierzytelniający? Spowoduje to, że wszystkie aktualnie skonfigurowane uwierzytelniania będą niepoprawne i konieczne będzie ponowne ich skonfigurowanie.
+ Nowy klucz uwierzytelniający został wygenerowany! Proszę użyć zaktualizowanego kodu QRCode do potwierdzenia uwierzytelniania.
+ 1. Zainstaluj uwierzytelnianie
+ 2. Zeskanuj kod, aby skonfigurować kody OTP AndroidAPS
+ 3. Sprawdź hasło jednorazowe
+ Resetuj uwierzytelnianie
+ Na każdym telefonie śledzącym zainstalować aplikację uwierzytelniania obsługującą tokeny TOTP RFC 6238 Popularne darmowe aplikacje:\n • Authy\n • Google Authenticator\n • LastPass Authenticator\n • FreeOTP Authenticator
+ NIE UDOSTĘPNIAJ tego kodu online!\nUżyj go tylko do konfiguracji aplikacji uwierzytelniania na telefonach śledzących.
+ Resetowanie uwierzytelniania powoduje, że wszystkie już ustawione uwierzytelnienia stają się niepoprawne (przestają działać). Trzeba będzie je jeszcze raz skonfigurować!
+ Przy połączeniu
+ Przy rozłączeniu
+ Prognozy poziomu
+ Krzywa odchylenie
+ Autoryzacja nie powiodła się
+ Cała insulina
+ Hasło główne jest używane do szyfrowania kopii zapasowych i przełamania zabezpieczeń w aplikacji. Zapamiętaj je lub przechowuj w bezpiecznym miejscu.
+ Hasła się nie zgadzają!
+ Aktualne hasło główneWskaźniki stanuKopiowanie ustawień z NS
+ Czy skopiować ustawienia NS (jeśli istnieją)?
+ Motyw oryginalny
+ Przyciski są zawsze wyświetlane na dole ekranu
+ Duży ekran
+ Motyw
+
+ Nigdy nie połączona
+ Wybudzanie
+ Błąd komunikacji
+ Przekroczony limit czasu połączenia
+ Pompa nieosiągalna
+ Nieprawidłowe ustawienia
+ Aktywna
+ Uśpiona
+
+
+ Integracja pompy Omnipod, wymaga RileyLink (z firmwarem 2.0 lub wyższym).
+
+ Sygnał dźwiękowy bolusa włączony
+ Sygnał dźwiękowy bazy włączony
+ Sygnał dźwiękowy SMB włączony
+ Sygnał dźwiękowy TBR (tymczasowej dawk bazowej) włączony
+ Włączone opcje debugowania PODów
+ Włączone wykrywanie stref czasowych
+
+ Pod Mgmt
+ Status Pod
+ %1$.2f U zostało
+ Ponad 50 U
+ Adres Pod
+ Pod traci ważność
+ Brak informacji
+ Pod nie podłączony
+ Nie zainicjowany
+ Aktywne alarmy Pod
+ Alerty ack
+
+ Omnipod (433,91 MHz)
+
+ To działanie nie jest możliwe.\n\n Musisz skonfigurować Omnipod przed uruchomieniem tego działania.
+ Operacja nie jest możliwa.\n\n Trzeba poczekać kilka minut, aż AAPS spróbuje ustawić profil pierwszy raz.
+ Niedozwolone działanie PodInitActionType: %1$s
+ Brak aktywnego Pod.
+ Nieudana weryfikacja polecenia.
+ Wystąpił nieoczekiwany błąd. Proszę zgłosić! (typ: %1$s).
+ Komunikacja nie powiodła się: odebrano niepoprawne parametry wejściowe.
+ Komunikacja nie powiodła się: przekroczono limit czasu.
+ Komunikacja nie powiodła się: wystąpił nieoczekiwany błąd. Proszę zgłosić!
+ Komunikacja nie powiodła się: weryfikacja integralności komunikatu nie powiodła się.
+ Komunikacja nie powiodła się: odebrano niepoprawny pakiet (komunikat) z Poda.
+ Komunikacja nie powiodła się: Pod jest w niewłaściwym stanie.
+ Komunikacja nie powiodła się: odebrano niepoprawną odpowiedź (pakiet) z Poda.
+ Komunikacja nie powiodła się: odebrano komunikat z niepoprawną sekwencją liczb z Poda.
+ Komunikacja nie powiodła się: odebrano komunikat z niepoprawną adresacją z Poda.
+ Komunikacja nie powiodła się: nie powiodło się dekodowanie komunikatu z Poda.
+ Komunikacja nie powiodła się: nonce resync nie powiodło się.
+ Komunikacja nie powiodła się: nonce nie jest zsynchronizowane.
+ Komunikacja nie powiodła się: brak wystarczającej ilości danych odebranych z Poda.
+ Błąd Pod. (%1$03d %2$s) został wykryty. Zdezaktywuj swój Pod i uruchom nowy.
+ Komunikacja nie powiodła się: Pod zwrócił odpowiedź o błędzie.
+
+ Zarządzanie Pod
+ Uruchom Pod
+ Odłącz Pod
+ Resetuj Pod
+ Historia Pod
+ Podanie bolusa
+ Anulowanie bolusa
+ Ustaw tymczasową dawkę bazową
+ Anuluj tymczasową bazę (wewnętrznie przez sterownik)
+ Anuluj tymczasową bazę (wymuszone przez użytkownika)
+ Ustaw harmonogram Dawki bazowej
+ Pobierz status Pod
+ Pobierz informacje o Pod
+ Ustaw czas
+ Konfigurowanie alertów
+ Potwierdź alerty
+ Wstrzymaj podawanie
+ Wznów podawanie
+ Nieznany Wpis
+ %1$.1f U
+ %1$.1f U, CH=%2$.1f g
+ Dawka: %1$.1f U, Czas: %2$d min
+ Jeśli naciśniesz OK, stan Pod zostanie wyzerowany i nie będziesz mógł więcej komunikować się z tym Podem. Zrób to tylko wtedy, gdy nie możesz się z nim skmunikować. Jeśli nadal można komunikować się z Podem, skorzystaj z opcji Odłącz Pod.
+ Historia Pod nie jest dostępna w tej chwili.
+ Napełnij Pod
+ \nNapełnij nowego Poda z wystarczającą ilością insuliny przez 3 dni.\n\nNasłuchuj dwóch sygnałów dźwiękowych z Poda podczas procesu napełniania. Wskazują one, że minimalna ilość 85U została wypełniona. Należy upewnić się, że ampułkostrzykawka jest całkowicie pusta, nawet po odsłuchaniu dwóch sygnałów dźwiękowych.\n\nPo napełnieniu Poda, należy nacisnąć Dalej.\n\nUwaga: nie usuwaj w tym czasie osłonki igłowej Poda.
+ Wypełnianie
+ Próba sparowania z nowym Podem i wypełnienia go.\n\nKiedy wszystkie elementy są sprawdzone, można nacisnąć Następny.\n\nUwaga: prosimy o trzymanie w tym czasie Poda bardzo blisko RileyLink.
+ Przymocuj Poda
+ \nPrzygotowanie miejsca do infuzji. Zdjąć osłonkę igły i zabezpieczenie plastra i przykleić Pod do skóry w miejscu wkłucia.\n\nJeśli kaniula odkleja się, proszę wcisnąć Anuluj i odczepić Pod.\n\nNaciśnij Następny w celu wprowadzenia kaniuli i rozpoczęcia podawania bazy.
+ Wprowadzanie kaniuli
+ Próba ustawienia początkowego planu bazowego i wprowadzeia kaniuli.\n\nKiedy wszystkie elementy są sprawdzane, można nacisnąć Następny.
+ Informacje o Podzie
+ \nPod jest teraz aktywny.\n\nTwój plan dawki bazowej został zaprogramowany i wprowadzono kaniulę w miejsce wkłucia.\n\nSprawdź, czy kaniula została prawidłowo włożona i wymień swój Pod, jeśli czujesz, że nie.
+ Odłącz Pod
+ \nNaciśnij Następny w celu odłączenia Poda.\n\nUwaga: To spowoduje zawieszenie wszystkich dostaw insuliny i dezaktywację Poda.
+ Odłączanie Poda
+ Deaktywacja Pod.\n\nKiedy wszystkie elementy są zaznaczone, możesz nacisnąć Następna.\n\nUwaga: Jeśli deaktywacja w sposób ciągły nie powodzi się, należy nacisnąć Anuluj i użyć opcji Reset Pod, aby wymusić zresetowanie stanu Pod.
+ Pod odłączony.\n\nProszę odkleić Pod od ciała i wyrzucić go.
+ Sparuj Pod
+ Wypełnij Pod
+ Wypełnij kaniulę
+ Ustaw profil dawki bazowej
+ Anulowanie podawania
+ Odłącz Pod
+
+
+ Integracja pompy dla Omnipod Dash.
+ Zakończ przypomnienie parowania
+ Zakończ przypomnienie o konfiguracji
+ Pod wkrótce straci ważność
+ Pod wkrótce straci ważność
+ Wyłączenie jest nieuchronne
+ Niski poziom w zbiorniku
+ Nieznany alarm
+ Ustawienie profilu podstawowego mogło się nie powieść. Podawanie mogło zostać zawieszone! Odśwież status Pod.
+ Ustawienie bazy tymczasowej mogło się nie powieść. Jeśli była już uruchomiona baza tymczasowa, to mogła zostać odwołana! Odśwież status Pod.
+ Ustawienie czasu mogło się nie powieść. Podawanie mogło zostać zawieszone! Odśwież status Pod.
+ Nie można sprawdzić, czy podano bolus. Upewnij się, że Twój Pod podaje bolus lub odwołaj go.
+ Statystyki RL
+ Logi pulsów omnipod
+ Porównaj profile
+ Pomocnik profilu
+ Profil domyślny
+ Bieżący profil
+ Dostępny profil
+ Typ profilu
+ Wiek: %1$.0f TDD: %2$.0f U
+ Wiek: %1$.0f Waga: %2$.0f kg
diff --git a/app/src/main/res/values-pl-rPL/validator.xml b/app/src/main/res/values-pl-rPL/validator.xml
index 3ea04e700d..bff65bf98c 100644
--- a/app/src/main/res/values-pl-rPL/validator.xml
+++ b/app/src/main/res/values-pl-rPL/validator.xml
@@ -1,2 +1,21 @@
-
+
+ Dozwolone są tylko cyfry.
+ Dozwolone są tylko cyfry w zakresie %1$s - %2$s.
+ To pole nie może zawierać znaków specjalnych
+ Dozwolone są tylko standardowe litery
+ Pole nie może być puste
+ Nieprawidłowy adres e-mail
+ Numer karty kredytowej nie jest prawidłowy
+ Nieprawidłowy numer telefonu
+ Nieprawidłowa nazwa domeny
+ Nieprawidłowy adres IP
+ Adres Url sieci Web nie jest prawidłowy
+ Nieprawidłowe imię lub nazwisko.
+ Niepoprawne imię i nazwisko.
+ Nieprawidłowy format
+ Trzeba podać 4-cyfrowy numer
+ Trzeba podać 6-cyfrowy numer
+ Nie wprowadzono minimalnej długości znaków
+ Pin powinien być od 3 do 6 cyfr, nie takich samych ani kolejnych
+
diff --git a/app/src/main/res/values-pt-rBR/exam.xml b/app/src/main/res/values-pt-rBR/exam.xml
index 26e394fb99..cd256141c4 100644
--- a/app/src/main/res/values-pt-rBR/exam.xml
+++ b/app/src/main/res/values-pt-rBR/exam.xml
@@ -1,16 +1,16 @@
O que é verdade sobre o DIA?
- Tópico: Duração da Ação de Insulina
+ Tópico: Duração da Ação de InsulinaO valor mínimo é de 3 horas.O valor mínimo é de 5 horas.https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html?#insulinO significado é igual ao parâmetro DIA usado na bomba.Você tem que determinar o seu valor individual (mas não menos de 5 horas).Tópico: Hipo Temp-Alvo
- O que é a razão principal para definir TT hipoglicemia?
- Para evitar que a Glic fique baixa se já estiver em funcionamento um temp zero.
- Para evitar o AAPS dosear demasiada insulina após uma subida rápida causada por hidratos de actuação rápida para tratar hipoglicemia.
+ Qual é a razão principal para definir TT hipoglicemia?
+ Para evitar que a glicose fique baixa se já estiver em funcionamento um temp zero.
+ Para evitar o AAPS dose muita insulina após uma subida rápida causada por carboidratos de atuação rápida para tratar hipoglicemia.https://androidaps.readthedocs.io/en/latest/EN/Usage/temptarget.htmlQual perfil pode ser usado e configurado offline?Tópico: Perfil Offline
@@ -18,7 +18,7 @@
https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html#profileTópico: Desconectando-se da bombaO que deve ser feito ao desligar a bomba?
- Clique em \'Desligar bomba\' para que o AAPS saiba que nenhuma insulina está a ser entregue.
+ Clique em \'Desligar bomba\' para que o AAPS saiba que nenhuma insulina será entregue.Clique em \'Suspender loop\' para que AAPS pare o looping enquanto a bomba estiver desconectada.Não altere nada no AAPS, apenas desconecte a bomba.https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#other-settings
@@ -28,14 +28,14 @@
Salve o arquivo exportado para outro local como e-mail, Dropbox, Google drive…Exporte-as logo após a instalação do AAPS.Exportá-los depois de fazer alterações de configuração.
- Exportá-los depois de completar um objectivo.
+ Exportá-los depois de completar um objetivo.Exporte-as quando concluir as configurações iniciais.https://androidaps.readthedocs.io/en/latest/EN/Usage/ExportImportSettings.htmlhttps://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#what-emergency-equipment-is-recommended-to-take-with-meTópico: Leituras do CGM imprecisasO que deve ser feito se os dados do CGM são irregulares?Nada, AAPS vai lidar com isso.
- Desactivar o loop para evitar sobredosagem.
+ Desativar o loop para evitar sobredosagem.Substitua o sensor CGM.Desligue o telefone.https://androidaps.readthedocs.io/en/latest/EN/Usage/Smoothing-Blood-Glucose-Data-in-xDrip.html#smoothing-blood-glucose-data
@@ -46,18 +46,18 @@
Faça um mudança de perfil abaixo de 100%.Fazer uma mudança de perfil acima de 100%.Pare o loop.
- Definir um alvo-temp de actividade antes de iniciar o exercício.
- Definir um alvo-temp de actividade após iniciar o exercício leva a resultados piores do que se iniciado antes.
+ Definir um alvo-temp de atividade antes de iniciar o exercício.
+ Definir um alvo-temp de atividade após iniciar o exercício leva a resultados piores do que se iniciado antes.https://androidaps.readthedocs.io/en/latest/EN/Usage/temptarget.html#activity-temp-target
- Tópico: Loop Desactivado/Suspenso
- Eu recebo insulina quando o loop estiver desactivado/suspenso?
+ Tópico: Loop Desativado/Suspenso
+ Eu recebo insulina quando o loop estiver desativado/suspenso?Sim, a insulina basal continua a ser entregue.Não, a entrega da insulina está parada.Tópico: Testando Basal, ISF e ICQuando devo validar os valores de basal, ISF e IC?Antes de começar com o loop.
- Quando ocorrer frequentemente Glic baixa.
- Quando ocorrer frequentemente Glic alta.
+ Quando ocorrer frequentemente glicemia baixa.
+ Quando ocorrer frequentemente glicemia alta.https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#androidaps-settingsTópico: Pré-requisitosO que eu preciso?
@@ -74,10 +74,10 @@
https://androidaps.readthedocs.io/en/latest/EN/Module/module.htmlUm Smartwatch.Um CGM compatível.
- Tópico: Actualização do AndroidAPS
+ Tópico: Atualização do AndroidAPSO que é verdade?Você precisa ter o Git instalado.
- Actualizar assim que nova versão for lançada e tiver tempo suficiente para fazer isso.
+ Atualizar assim que nova versão for lançada e tiver tempo suficiente para fazer isso.Você deve utilizar as mesmas chaves de assinatura.Nunca atualize se o sistema estiver funcionando bem.Peça ao seu amigo para a nova APK.
@@ -103,9 +103,9 @@
Qual algoritmo de sensibilidade tem um intervalo de tempo configurável?https://androidaps.readthedocs.io/en/latest/EN/Configuration/Sensitivity-detection-and-COB.htmlQual plugin de sensibilidade deve ser usado para o recurso UAM?
- Tópico: Erros de Entrada de Hidratos
- O que deve fazer se tiver feito uma entrada incorrecta de hidratos?
- Em Tratamentos, excluir a entrada incorrecta de hidratos. Insira novos hidratos.
+ Tópico: Erros de Entrada de Carboidratos
+ O que deve fazer se tiver feito uma entrada incorrecta de carboidratos?
+ Em Tratamentos, excluir a entrada incorrecta de carboidratos. Insira novos carboidratos.Adicionar falsa insulina usando a função de RefillTópico: Alimentos com Gordura e ProteínaO que fazer se sua comida contiver uma grande quantidade de gordura e/ou proteínas?
@@ -122,18 +122,18 @@
Aplicativo Loop no iPhone.Aplicativo Spike no iPhone.https://androidaps.readthedocs.io/en/latest/EN/Children/Children.html
- Tópico: Fator de Sensibilidade de Insulina
- Valores elevados de FSI levam a uma entrega de menos insulina quando o AAPS corrige Glic alta.
- Valores baixos de FSI levam a uma entrega de menos insulina quando o AAPS corrige Glic alta.
- Alterar os valores FSI não tem efeito sobre a quantidade de insulina entregue quando a AAPS corrige Glic alta.
+ Tópico: Fator de Sensibilidade de Insulina
+ Valores elevados de FSI levam a uma entrega de menos insulina quando o AAPS corrige glicemia alta.
+ Valores baixos de FSI levam a uma entrega de menos insulina quando o AAPS corrige glicemia alta.
+ Alterar os valores FSI não tem efeito sobre a quantidade de insulina entregue quando a AAPS corrige glicemia alta.Você precisa inserir o ISF nas Preferências.Alterar o valor do ISF no seu perfil é o suficiente para aplicar a alteração.https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#insulin-sensitivity-factor-isf-mmol-l-u-or-mg-dl-uhttps://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html
- Tópico: Rácio IC
- Rácios IC mais altos levam a menos insulina entregue para uma dada quantidade de hidratos.
- Rácios IC mais baixos levam a menos insulina entregue para uma dada quantidade de hidratos.
- Se tiver 0 COB, alterar o rácio IC irá levar a uma quantidade diferente de insulina para corrigir um determinado valor da Glic.
+ Tópico: Porporção IC
+ Proporções IC mais altos levam a menos insulina entregue para uma dada quantidade de carboidratos.
+ Proporções IC mais baixos levam a menos insulina entregue para uma dada quantidade de carboidratos.
+ Se tiver 0 COB, alterar a proporção IC irá levar a uma quantidade diferente de insulina para corrigir um determinado valor da glicemia.O IC será diferente se você contar a unidade de pão como 10g ou 12g.O significado do IC é: Quantos pães são cobertas por 1U de insulina.https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#carbohydrate-to-insulin-ratio-cr-g-u
@@ -163,6 +163,6 @@
GoogleFacebookOutra Medicação
- AAPS reduz Basal para aumentar o açúcar no sangue. As drogas do grupo de inibidores de SGLT2 (gliflozins) podem evitar o aumento esperado da Glic e, assim, podem produzir uma deficiência de insulina perigosa (DKA).
-\nOs nomes comuns de marca são: Invokana®, Forxiga®, Jardiance®, Steglatro®, Suglat®, Apleway®, Deberza®, Synjardy®, Vokanamet®, Xigduo®.\n\nPrometo que não vou tomar tais drogas ao usar o AAPS ou vou desactivar o loop antes de usar essas drogas.
+ AAPS reduz Basal para aumentar o açúcar no sangue. As drogas do grupo de inibidores de SGLT2 (gliflozins) podem evitar o aumento esperado da glicose e, assim, podem produzir uma deficiência de insulina perigosa (DKA).
+\nOs nomes comuns de marca são: Invokana®, Forxiga®, Jardiance®, Steglatro®, Suglat®, Apleway®, Deberza®, Synjardy®, Vokanamet®, Xigduo®.\n\nPrometo que não vou tomar tais drogas ao usar o AAPS ou vou desativar o loop antes de usar essas drogas.
diff --git a/app/src/main/res/values-pt-rBR/objectives.xml b/app/src/main/res/values-pt-rBR/objectives.xml
index 76c269ca71..2f75aa94e4 100644
--- a/app/src/main/res/values-pt-rBR/objectives.xml
+++ b/app/src/main/res/values-pt-rBR/objectives.xml
@@ -18,41 +18,38 @@
Utilizar por alguns dias e pelo menos uma noite sem alarmes de Glic baixa, antes de baixar GlicAjuste as basais e os rácios, se necessário, e, em seguida, active o auto-sens1 semana de looping durante o dia com sucesso com entrada regular de hidratos de carbono
- A activar recursos adicionais para uso durante o dia, como assistente avançado de refeição
- Activando recursos adicionais para uso durante o dia, como SMB
- A activar a automação
+ A ativar recursos adicionais para uso durante o dia, como assistente avançado de refeição
+ Ativando recursos adicionais para uso durante o dia, como SMB
+ A ativar a automaçãoDeverá ler a wiki e aumentar a IOB máx para que os SMBs funcionem devidamente! Inicialmente poderá considerar maxIOB=média dos bólus + 3 x a basal máxima
+ Leia os documentos de como a automação funciona. Configure primeiro regras simples. Em vez de ação deixe AAPS apresentar apenas a notificação. Quando tem certeza de automação é acionada no momento certo substitua a notificação por ação real. (https://androidaps.readthedocs.io/en/latest/EN/Usage/Automation.html)Glic disponível no NSEstado da Bomba disponível no NSExecução manualConcluído: %1$sAprenda como controlar AndroidAPS
- Executar diferentes acções no AndroidAPS
+ Executar diferentes ações no AndroidAPSDefinir perfil de 90% por 10 min (pressione longo no nome de perfil na Visão Geral)Simular chuveiro. Desligar a bomba de 1h (Pressione longo em Open Loop)... e volte a ligar de volta da mesma forma
- Crie um alvo temporário personalizado com 10 min de duração (pressione longo no seu alvo actual)
- No Configurador active o plugiin de Acções, torne-o visível e exiba o seu conteúdo no menu superior
+ Crie um alvo temporário personalizado com 10 min de duração (pressione longo no seu alvo atual)
+ No Configurador ative o plugin de Ações, torne-o visível e exiba o seu conteúdo no menu superiorMostrar conteúdo do plugin LoopUtilizar a função de escala premindo longamente gráfico GlicInserir
- Se tiver pelo menos 3 meses de experiência com Close Loop com outros sistemas, pode-se qualificar para um código para ignorar objectivos. Ver https://androidaps.readthedocs.io/en/latest/EN/Usage/Objectives.html#skip-objectives para mais detalhes.
- Código aceite
+ Se tiver pelo menos 3 meses de experiência com Close Loop com outros sistemas, pode-se qualificar para um código para ignorar objetivos. Ver https://androidaps.readthedocs.io/en/latest/EN/Usage/Objectives.html#skip-objectives para mais detalhes.
+ Código aceitoCódigo inválidoProve seu conhecimento
- Estude e responda as perguntas correctamente
- Responder desactivado até: %1$s
+ Estude e responda as perguntas corretamente
+ Resposta desativada para: %1$sResposta errada!Próximo inacabadoPedir Código: %1$s(marque todas as respostas correctas)
- https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#what-to-do-when-taking-a-shower-or-bath
- https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/Screenshots.html#the-homescreen
- https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/Screenshots.html#config-builder
- https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/Screenshots.html#the-homescreenNão está ligado à internetFalha ao recuperar tempo
- Requisitos de objectivo não cumpridos
+ Requisitos de objetivo não cumpridos%1$d dia%1$d dias
diff --git a/app/src/main/res/values-pt-rBR/protection.xml b/app/src/main/res/values-pt-rBR/protection.xml
index 67ae6b40c1..1c9c3e10d8 100644
--- a/app/src/main/res/values-pt-rBR/protection.xml
+++ b/app/src/main/res/values-pt-rBR/protection.xml
@@ -2,22 +2,22 @@
Autenticação necessáriaColoque o dedo sobre o leitor de impressões digitais para verificar a sua identidade
- Definições Protecção
- Protecção Aplicação
- Protecção Bólus
- Password Mestre
- Definições Password
- Password Aplicação
- Password Bólus
- Definições Desbloqueio
- Biométrico
- Password Personalizada
- Sem Protecção
- Protecção
- A Password Mestre não está definida!\n\nPor favor, configure Password Mestre em Preferências (%1$s → %2$s)
- Password foi definida!
- Password não foi definida
- Password não foi alterada
- Password apagada!
- Insira a password aqui
+ Definições Proteção
+ Proteção Aplicação
+ Proteção Bólus
+ Senha mestra
+ Definições de senha
+ Senha da aplicação
+ Senha do bólus
+ Definições de desbloqueio
+ Biometria
+ Senha personalizada
+ Sem proteção
+ Proteção
+ A senha mestre não está definida!\n\nPor favor, configure a senha mestre em Preferências (%1$s → %2$s)
+ Senha foi definida!
+ Senha não foi definida
+ Senha não foi alterada
+ Senha apagada!
+ Insira a senha aqui
diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml
index 93f7ede06e..572d9e3cb8 100644
--- a/app/src/main/res/values-pt-rBR/strings.xml
+++ b/app/src/main/res/values-pt-rBR/strings.xml
@@ -12,13 +12,10 @@
Redefinir banco de dadosVocê realmente quer redefinir os bancos de dados?Sair
- Usar bólus prolongado de >200%%
- Dispositivo Bluetooth DanaRSempre usar valores absolutos basaisPor favor, reinicie seu telefone ou reinicie o AndroidAPS nas Configurações do Sistema \nCaso contrário o Android APS não terá registro (importante para rastrear e verificar que os algoritmos estão funcionando corretamente)!Este dispositivo não parece suportar a optimização de bateria na lista de permissões - pode ter problemas de desempenho.Alguns botões para acessar rapidamente a funções comuns
- Digite as entradas avançadas do livro de log.Usado para configurar os plugins ativosPrograma de aprendizagemExibe as predefinições de comida definidas no Nightscout
@@ -36,14 +33,10 @@
Fornece o perfil definido no NightscoutDefina um perfil com apenas um bloco de cada vez.Integração para bombas Accu-Chek Combo, requer ter o ruffy instalado
- Integração para bombas DANA Diabecare R
- Integração para bombas DANA Diabecare R Coreanas
- Integração para as bombas DANA Diabecare R com firmware atualizado
- Integração para bombas DANA Diabecare RSIntegração para as pessoas que fazem múltiplas injeções diárias para a sua terapia de diabetesIntegração para as bombas que não têm qualquer driver ainda (Open Loop)
- A sensibilidade é calculada da mesma forma que Oref0, mas você pode especificar o período de tempo para o passado. A absorção mínima de hidratos de carbono é calculada a partir do tempo máximo de absorção de hidratos de carbono das preferências.
- A sensibilidade é calculada a partir de dados das últimas 8h ou 24h (usando qualquer um que é mais sensível). Hidratos são cortados (se não absorvidos) após o tempo especificado nas preferências. O Plugin também calcula o UAM.
+ A sensibilidade é calculada da mesma forma que Oref0, mas você pode especificar um período de tempo no passado. A absorção mínima de carboidratos é calculada a partir do tempo de absorção máxima especificado nas preferências.
+ A sensibilidade é calculada a partir de dados de 8h ou 24h no passado (usando o que é mais sensível). Carboidratos (se não absorvidos) são cortados após o tempo especificado nas preferências. O plugin também calcula o UAM.A sensibilidade é calculada como uma média ponderada de desvios. Desvios mais recentes têm maior peso. A absorção mínima de hidratos de carbono é calculada a partir do tempo máximo de absorção de hidratos de carbono das preferências. Este algoritmo é o mais rápido em seguir as mudanças de sensibilidade.Receber valores de Glicose da aplicação Eversense modificada.Receber valores BG do Glimp.
@@ -54,13 +47,6 @@
Monitore e controle AndroidAPS usando seu relógio WearOS.Mostrar informações sobre o loop no watchface do xDrip+.Controlar remotamente o AndroidAPS usando comandos SMS.
- Unidades
- DIA
- IC
- ISF
- Basal
- Meta
- SEM PERFIL DEFINIDOInsulina:Carboidratos:IOB:
@@ -76,15 +62,9 @@
TTCarbosCorr
- UIOB BolusExecutar agoraBOMBA VIRTUAL
- Taxa Basal de base
- Basal temporaria
- Bólus estendido
- Bateria
- ReservatórioOKÚltima execuçãoParâmetros de entrada
@@ -96,16 +76,11 @@
ResultadoResultado: %1$s %2$ssSem dados de glicose disponíveis
- Nenhuma alteração solicitadaSolicitar
- Rácio
- Duração
- MotivoGlicoseDeltaDelta:Configurador
- ObjetivosVisão geralPerfil NSPerfil simples
@@ -123,7 +98,6 @@
GeralEstes são alguns plugins gerais que pode achar úteis.Que restrições são aplicadas?
- diasRestriçõesLoopLoop
@@ -132,25 +106,19 @@
Depois das restrições processadasBasal temporária definida pela bombaUltima execução
- OK
- CancelarSEM APS SELECIONADO OU RESULTADO FORNECIDOSegurançaPlugin está desativadoViolação das restriçõesErro na entrega do bolus
- Erro na entrega da basal temporáriaValor da Basal [%]Aceitar nova basal temporária:TratamentoCalculadoraRestrição aplicada!
- Confirmação
- BolusBolus:BasalBasal:
- CarboidratosAltere sua entrada!Fonte de BGDe onde o AndroidAPS deve obter os dados?
@@ -158,34 +126,17 @@
Modo APSLoop FechadoLoop Aberto
+ Suspensão de Glicémia BaixaLoop DesativadoDesativar loopAtivar loopNova sugestão disponível
+ Sugestão de CarbsVersão não suportada do NightscoutLOOP DESATIVADO POR RESTRIÇÕESIOB BasalRestrição de bólus aplicadaRestrições de carbs aplicada
- Verificação BG
- Anúncio
- Anotação
- Pergunta
- Exercício
- Alteração do local do cateter
- Colocação do Sensor CGM
- Início do Sensor CGM
- Mudança de Cartucho de Insulina
- Troca de Perfil
- Bólus Lanche
- Bólus Refeição
- Bólus Correcção
- Bólus Combo
- Início Basal Temp
- Fim de Basal Temp
- Correção Carbos
- OpenAPS Offline
- Tipo de eventoOutroMedidorSensor
@@ -213,15 +164,15 @@
Arquivo não encontradoExportar configuraçõesImportar configurações
- Max U/hr em que uma Temp Basal pode ser definida
+ Max U/h em que uma Basal temporária pode ser definidaEste valor é chamado max basal no contexto do OpenAPSBasal Máxima IOB que OpenAPS pode dar [U]Este valor é denominado Max IOB em contexto OpenAPS \nEste é o valor máximo de insulina em [U] que APS pode dar de uma vez.
- Dispensar
- Será perguntado pela password mestre, que será usada para encriptar preferências exportadas.
- Será perguntado pela password mestre, que será necessária para desencriptar preferências importadas.
+ Será perguntado pela senha mestre, que será usada para encriptar preferências exportadas.
+ Será perguntado pela senha mestre, que será necessária para desencriptar preferências importadas.Exportação cancelada! Preferências NÃO foram exportadas!Importação cancelada! Preferências NÃO foram importadas!
+ Selecionar arquivo para importarPor favor, verifique as preferências antes da importação:Preferências não podem ser importadas!As preferências não devem ser importadas!
@@ -229,69 +180,50 @@
Detalhes de problemas de importaçãoImportarImportar mesmo assim (PERIGOSO!)
- As preferências foram criadas com uma variante diferente do AAPS (%1$s) enquanto tem: %2$s.\n\nAlgumas configurações podem estar ausentes ou inválidas - após a importação, por favor verifique e actualize suas preferências.
+ As preferências foram criadas com uma variante diferente do AAPS (%1$s) enquanto tem: %2$s.\n\nAlgumas configurações podem estar ausentes ou inválidas - após a importação, por favor verifique e atualize suas preferências.Preferências foram criadas num dispositivo diferente. Não há problema se estiver a importar de telefone diferente/antigo, mas se certifique que as preferências importadas estão corretas!
- Está a usar formato ultrapassado herdado a partir de versões antigas do AAPS, o que não é seguro! Use-o apenas como um último recurso, se não tiver uma exportação no actual no formato JSON.
- Preferências importadas já são %1$s dias antigas! Talvez tenha preferências mais actualizadas ou escolheu o ficheiro errado? Lembre-se de exportar preferências regularmente!
+ Você está usando o formato de legado desatualizado a partir de versões antigas da AAPS, que não é seguro! Use apenas como último recurso, se você não tiver uma exportação em formato atual, JSON.
+ As preferências importadas já têm %1$s dias de idade! Talvez você tenha preferências mais atualizadas ou escolha o arquivo errado? Lembre-se de exportar preferências regularmente!Formato de data-hora inválido!
- Formato do ficheiro
+ Formato do arquivoCriado emVersão AAPSVariante de Compilação
- A exportar nome do paciente do dispositivo
- A exportar modelo do dispositivo
- Encriptação do Ficheiro
+ Exportando nome do paciente do dispositivo
+ Exportando modelo do dispositivo
+ Criptografia do arquivoAntigo Formato de ExportaçãoNovo formato de encriptaçãoNovo formato de depuração (não encriptado)Formato de exportação desconhecido
- Ficheiro de configurações adulterado
- Ficheiro de configurações é seguro
+ Arquivo de configurações adulterado
+ Arquivo de configurações é seguroA usar um formato de configurações não seguro e não encriptadoErro de formato JSON, campo necessário ausente (formato, conteúdo, metadados ou segurança)
- Erro ao desencriptar, a password inserida não pode desencriptar o ficheiro
- Ficheiro de verificação (hash) em falta, não é possível verificar a autenticidade de configurações!
- Ficheiro foi modificado após exportação!
- Erro Desencriptação, a análise de preferências falhou!
- Erro de Desencriptação, a password é inválida ou configurações de arquivo foram modificadas! Pode acontecer que o ficheiro importado foi exportado com uma Password Mestre diferente.
+ Erro ao desencriptar, a senha inserida não pode desencriptar o arquivo
+ Arquivo de verificação (hash) em falta, não é possível verificar a autenticidade de configurações!
+ Arquivo foi modificado após exportação!
+ Erro desencriptação, a análise de preferências falhou!
+ Erro de desencriptação, a senha é inválida ou configurações de arquivo foram modificadas! Pode acontecer que o arquivo importado foi exportado com uma senha mestre diferente.Configuração de encriptação ausente, formato de configurações é inválido!Algoritmo de encriptação não suportado ou não especificado!
- DanaR
- Conectando
- Conectado
- Desconectado
- Configurações da bomba Dana
+ exportado hoje
+ exportado %1$s atrás
+ exportado há menos de uma horaCondições de UtilizaçãoNÃO DEVE SER USADO PARA FAZER DECISÕES MÉDICAS. NÃO HÁ NENHUMA GARANTIA PARA O PROGRAMA, NA EXTENSÃO PERMITIDA PELA LEGISLAÇÃO APLICÁVEL. EXCETO QUANDO DE OUTRA FORMA, POR ESCRITO, OS TITULARES DOS DIREITOS DE AUTOR E / OU OUTRAS PARTES FORNECEM O PROGRAMA “TAL COMO ESTÁ”, SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO, ÀS GARANTIAS IMPLÍCITAS DE COMERCIALIZAÇÃO E ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. TODO O RISCO QUANTO À QUALIDADE E DESEMPENHO DO PROGRAMA É COM VOCÊ. CASO O PROGRAMA SEJA DEFEITUOSO, VOCÊ ASSUME O CUSTO DE TODOS OS SERVIÇOS, REPAROS OU CORREÇÕES NECESSÁRIOS.EU ENTENDO E CONCORDOSalvar
- Nenhum dispositivo bluetooth encontrado
- Dispositivo selecionado não foi encontrado
- Erro de conexão com a bomba
- IOB Bomba
- Unidades diárias
- Último Bolus
- %1$.1fh atrás
- Dados de entrada inválidos
- Valor não definido corretamenteRecarregar perfil
- Ver perfil
- Executado
- Commentário
- Sucesso
- Percentagem
- Absoluto
- Cancelar basal temporáriaComunicador SMS
- Aguardando resultadosNúmeros de telefone permitidos+XXXXXXXXXX;+YYYYYYYYYYPara dar bolus %1$.2fU responder com código %2$sPara dar bólus %1$.2fU responder com código %2$sPara definir o Alvo Tempo %1$s responda com o código %2$sPara cancelar Alvo Temp responda com o código %1$s
- Para desactivar o Serviço Remoto SMS de responda com o código %1$s.\n\nTenha em mente que será capaz de o reactivar directamente apenas a partir do telemóvel mestre do AAPS.
- SMS Serviço Remoto interrompido. Para reactivá-lo, use o AAPS no telemóvel mestre.
+ Para desativar o Serviço Remoto SMS de responda com o código %1$s.\n\nTenha em mente que será capaz de o reativar diretamente apenas a partir do celular principal do AAPS.
+ SMS Serviço Remoto interrompido. Para reativá-lo, use o AAPS no telemóvel mestre.Para enviar calibração %1$.2f responder com código %2$sBolus falhouNúmero mínimo de minutos que deve decorrer entre um bólus remoto e o próximo
@@ -304,60 +236,21 @@
Alvo %1$s para %2$d minutosAlvo %1$s para %2$d minutos definido com sucessoAlvo Temp cancelado com êxito
- Administrando %1$.2fUPermitir comandos remotos via SMS
- Dedo
- Sensor
- Manual
- Alvo Temporário
- Cancelar alvo temporárioDefinições perfil DanaRDIA [h]Duração da Insulina Ativa
- Falha ao atualizar o perfil basal
- RecarregarEnviando
- E bolus
- DS Bólus
- DE Bólus
- erro
- recarregar
- hora basal
- glicose
- carboidrato
- alarme
- Total de %1$d registros enviados
- S bolus
- Alarmes
- Horas de Basal
- Bolus
- Carboidratos
- Insulina diária
- Erros
- Glicose
- Reabastecimento
- Suspender
- Conectando para %1$d
- Senha da bomba
- Senha da bomba incorrecta!
- A bomba está ocupada
- Entregue
- ParadoBolus paradoParando o bolus
- Oclusão
- Parar
- STOP PRESSIONADO
- Aguardando a bomba
- Vão ser administradas %1$.2fU
- Atingiu o limite autorizado
- Nenhum perfil selecionadoLoop foi desativadoLoop foi ativadoLoop DesativadoLoop ativado%1$.2f limitado a %2$.2fO valor %1$s está fora dos limites permitidos
+ Bomba desconectada
+ Bomba reconectadaO comando remoto não é permitidoO bolus remoto não está disponível. Tente novamente mais tarde.Para começar a basal %1$.2fU/h durante%2$d min responda com o código %3$s
@@ -391,22 +284,18 @@
RefeiçãoCorreçãoAções
- AndroidAPS iniciadoEnvio do NS apenas (sincronização desativada)Apenas upload para NS. Não é eficaz em SGV a menos que uma fonte local como xDrip esteja selecionada. Não é eficaz em perfis enquanto NS-Profiles é usado.Bomba não inicializada!
- Bomba não inicializada, perfil não definido!Purgar/PreencherPor favor certifique-se que o valor corresponde ao especificado para o seu conjunto de infusão!Outro
- Purgar/Preencher os valores standard.
+ Purgar/Preencher os valores padrõesBotão 1Botão 2Botão 3Unidades:Unidades
- mg/dL
- mmol/LDIAIntervalo Alvo:Intervalo para visualização
@@ -416,17 +305,7 @@
WearReenviar Todos os DadosAbrir Definições em Wear
- Erro da Bomba
- Bateria fraca
- Bomba desligada
- Bateria da Bomba Descarregada
- DanaR CoreanaValor da Basal:
- Não foi possivel configurar o perfil de basal
- Perfil Basal actualizado na bomba
- Desactivar modo EasyUI na bomba
- Habilitar bolus estendido na bomba
- Mudar de modo U/d para U/h na bombaValor da basal abaixo do mínimo. Perfil não definido!BG:Último BG:
@@ -434,66 +313,46 @@
MM640gNotificação em cursoDADOS ANTIGOS
- %1$d min atrás%1$dmin atrásPerfil localOpenAPS AMADelta médio curtoDelta médio longo
- Array de %1$d elementos.\nValor actual:
+ Array de %1$d elementos.\nValor atual:Dados AutosensScript debugUsar função Autosens
- Actualizar tratamentos do NS
+ Atualizar tratamentos do NSApagar tratamentos do futuroComer em breveHipoAtividadeRemover registo
- Estatísticas DanaR
- Dose diária acumulativa
- Dose diária exponencialmente ponderada
- Basal
- Bolus
- TDD
- Data
- Média
- # Dias
- Peso
- Possivelmente impreciso se foram usados bolus para purgar/preencher!
- Dados antigos, pressione \"Recarregar\"
- Basal Diária Total
- Basal diária * 2
- Inicializando...
- ACÇ
+ ACTCONFLOOPPSOAPSPL
- DANAInícioBOMBAVNSPerfilTRATA
- CPOBJWEARSMSAbreviar títulos dos separadoresUsar sempre delta médio curto em vez de delta simplesÚtil quando há ruído nos dados de fontes sem filtro como o xDrip.
- Configurações Avançadas
- Modelo: %1$02X Protocolo: %2$02X Código: %3$02XPerfil
- Valor padrão: 3 Por segurança é o valor limite estabelecido por OpenAPS. O que faz é limitar a basal a x3 a basal mázima. Se necessário modificar este valor, por favor ter em conta que os dados apontam para que os limites de segurança sejam - 3 x max diario ou 4x valor actual (qual seja menor) como valores máximos.
- Valor padrão: 4 Esta é a outra parte dos valores limites de segurança - 3 x max diário ou 4x valor actual - do OpenAPS. Isto define que não importa o valor da basal máxima definido na bomba, o valor máximo da basal temporária não pode ser maior que 4 x o valor da basal definida na bomba. O objectivo é evitar que sejam determinadas basais temporárias demasiado elevadas antes que se perceba como o algoritmo funciona. 4x é um valor que a maior parte das pessoas nunca necessitará de alterar pois o mais provável é necessitar de alterar outras definições para não necessitar de \"ultrapassar\" este limite de segurança.
+ Valor padrão: 3 Por segurança é o valor limite estabelecido por OpenAPS. O que faz é limitar a basal a x3 a basal mázima. Se necessário modificar este valor, por favor ter em conta que os dados apontam para que os limites de segurança sejam - 3 x max diario ou 4x valor atual (qual seja menor) como valores máximos.
+ Valor padrão: 4 Esta é a outra parte dos valores limites de segurança - 3 x max diário ou 4x valor actual - do OpenAPS. Isto define que não importa o valor da basal máxima definido na bomba, o valor máximo da basal temporária não pode ser maior que 4 x o valor da basal definida na bomba. O objetivo é evitar que sejam determinadas basais temporárias muito elevadas antes que se perceba como o algoritmo funciona. 4x é um valor que a maior parte das pessoas nunca necessitará de alterar pois o mais provável é necessitar de alterar outras definições para não necessitar de \"ultrapassar\" este limite de segurança.Valor predefinido: 1.2\n Este é um multiplicador para autosens (e em breve autotune) que coloca um limite máximo de 20%% aos rácios superiores e inferiores de autosens, o que por sua vez calcula o quão alto autosens pode ajustar a basal, quão pode baixar o Factor de Sensibilidade (FSI) e baixar o valor alvo de glicose no sangue.Valor padrão: 0.7\nO outro lado dos limites de segurança do autosens. Coloca um tecto no quão baixo autosens pode ajustar as basais, e quão alto pode ajustar os valores de ISF e valor alvo de glucose no sangue (BG).Autosens também ajusta os alvosValor padrão: true\nÉ usado para permitir que autosens possa ajustar os valores alvo de glucose no sangue (BG), além de ISF e basais.
- Valor padrão: 2\nBolus Snooze (pausa após bolus) é executado depois de realizar um bolus por refeição Desta maneira o algoritmo não irá contrariar com temporárias baixas logo depois da refeição. O valor padrão é 2; Então uma duração de acção da insulina (DIA) de 5h significa que o Bolus Snooze irá ser gradualmente reduzido ao longo de 2,5 horas = 5/2 = DIA/Valor padrão.
- Valor padrão: 3.0 para detecção avançada de refeições (AMA) ou 8.0 para super micro bolus (SMB). Esta é a configuração padrão para o calculo de quanto varia a cada 5 min a glucose no sangue (BG) devido à absorção de hidratos de carbono. O padrão é 3mg/ dl / 5min. Isso afeta a rapidez com que decaem as calorias no corpo (COB), e quantos hidratos de carbono terão de ser considerados no cálculo da previsão de BG, quando é que a BG está baixando mais do que espectável ou não subindo como espectável.
+ Valor padrão: 2\nBolus Snooze (pausa após bolus) é executado depois de realizar um bolus por refeição Desta maneira o algoritmo não irá contrariar com temporárias baixas logo depois da refeição. O valor padrão é 2; Então uma duração de ação da insulina (DIA) de 5h significa que o Bolus Snooze irá ser gradualmente reduzido ao longo de 2,5 horas = 5/2 = DIA/Valor padrão.
+ Valor padrão: 3.0 para detecção avançada de refeições (AMA) ou 8.0 para super micro bolus (SMB). Esta é a configuração padrão para o calculo de quanto varia a cada 5 min a glucose no sangue (BG) devido à absorção de carboidratos. O padrão é 3mg/ dl / 5min. Isso afeta a rapidez com que decaem as calorias no corpo (COB), e quantos carboidratos terão de ser considerados no cálculo da previsão de BG, quando é que a BG está baixando mais do que o esperado ou não subindo como esperado.Atenção!\n Normalmente não é necessário modificar os valores abaixo. Por favor PRESSIONE AQUI e LEIA o texto para garantir que ENTENDE as consequenciais antes de alterar algum destes valores.SMS número de telefone inválidoCalibração
@@ -503,18 +362,9 @@
Calibração enviada. Recepção têm de estar activada no xDrip.O xDrip não esta a receber as calibraçõesBomba suspensa
- A obter estado bomba
- Definindo basal temp
- A parar basal temp
- Configurando bolus prolongado
- Parando bolus prolongado
- Atualizar valores das basais
- A desligarExecutandoDefinições da bomba virtualEnviar estado para NS
- Senha incorrecta
- Aproximação do limite diario de insulinaNSClienteNSCIURL:
@@ -538,7 +388,7 @@
Mostrar IOB detalhadoDividir IOB entre IOB de bolus e de basal na face do relógionão foi bem sucedido - por favor, verifique o telefone
- Indisponível
+ n/aIdade do PacienteCriançaAdolescente
@@ -546,8 +396,8 @@
Adulto resistente insulinaPor favor seleccione a idade do diabético para definir os limites de segurançaNome do Paciente
- Por favor, forneça nome do paciente ou alcunha para diferenciar entre várias configurações
- Utilizador
+ Por favor, forneça nome do paciente ou apelido para diferenciar entre várias configurações
+ UsuárioGlimp%1$s necessita de autorizar a não optimização da bateria para assegurar a performance necessáriaLoop suspenso
@@ -574,14 +424,12 @@
SuperbólusRegistar inicio da app no NSA sair da aplicação para aplicar as configurações.
- DanaRv2
- InsulinaQual o tipo de insulina que está a utilizar?Insulina de ação rapidaNovorapid, Novolog, HumalogFiaspINS
- Activar superbólus no assistente
+ Ativar superbólus no assistenteHabilite a funcionalidade de superbolus no assistente. Não habilite até que aprenda o funcionamento. PODE CAUSAR OVERDOSE DE INSULINA SE USAR INDISCRIMINADAMENTE!Mostrar luzes de estado no ecrã principalLimite de aviso de nível de reservatório [U]
@@ -590,9 +438,7 @@
Limite de crítico de nível de bateria [%]IOBCOB
- Firmware
- Última ligação
- Estado Bluetooth
+ ACTSobreFalta de permissão SMSFalta permissão do estado do telefone
@@ -603,24 +449,13 @@
Adicionar BGI à linha de statusSem envio para NSTodos os dados enviados para NS são descartados. AAPS está conectado ao NS, mas não é feita nenhuma alteração no NS
- Valor da Basal
- Incremento de bolusCancelar Bólus EstendidoIdade do sensorIdade da CanulaIdade de Insulina
- horas
- Perfil inválido !!!Fazer Mudança De PerfilIdade bateria bomba
- Mudança de BateriaOpções Alarme
- Urgência hiperglicemia
- Alta
- Baixa
- Urgência hipoglicemia
- Dados Obsoletos
- Dados obsoletos urgentesTempo limite para dados obsoletos [min]Tempo limite para Urgência por dados obsoletos [min]Intervalo para autosens [h]
@@ -637,7 +472,6 @@
Configurações de absorçãoTempo máx. absorção refeição [h]Tempo em horas, espectável para que todos os hidratos de carbono da refeição sejam absorvidos
- Visualizar bólus prolongado como %%SAGEIAGECAGE
@@ -648,49 +482,32 @@
ESTManter a tela ligadaImpedir Android de desligar o ecrã. Isto irá consumir muita bateria quando não ligado ao carregador.
- Ao activar a função Autosense lembre-se de introduzir todos os hidratos de carbono (carbs) que comeu. Caso contra contrário os desvios de carbs serão erroneamente identificados como uma variação da sensibilidade!!
+ Ao ativar a função Autosense lembre-se de introduzir todos os carboidratos (carbs) que comeu. Caso contra contrário os desvios de carbs serão erroneamente identificados como uma variação da sensibilidade!!Média ponderada da SensibilidadeOKCancelarNem todos perfis foram carregados!Valores não guardados!Ative as transmissões para outros apps (como xDrip). Não ative se você tiver mais de uma instância de AAPS ou NSClient instalada!
- Activar partilha local.
+ Ativar partilha local.ATIVIDADE & FEEDBACKCARBOS & BOLUSCGM & OPENAPSBOMBADuração [min]SMB OpenAPS
- SMB
- Activar UAM
- Activar SMB
- Use Super Micro Boluses em vez de basal temp para uma acção mais rápida
+ Ativar UAM
+ Ativar SMB
+ Use Super Micro Boluses em vez de basal temp para uma ação mais rápidaDetecção de refeições não IntroduzidasTempo Pico da curva de IOBTempo Pico [min]Oref Pico-Livre
- Oref Acção Rápida
+ Oref Ação RápidaUltra-Rapid OrefDuração de Acção da Insulina (DIA) de %1$f demasiado curto - corrigido para %2$f!
- Activar perfil
- Data
+ Ativar perfilINVÁLIDO
- Aguardando emparelhamento na bomba
- Emparelhamento OK
- Tempo emparelhamento excedido
- A emparelhar
- Nenhum dispositivo encontrado até agora
- Reservatório vazio
- Alerta medição da glicemia
- Nível de insulina restante
- DanaRS
- Dana
- Bomba seleccionada
- Emparelhar nova bomba
- Velocidade Bólus
- Coloque o incremento da basal em 0.01 U/h
- Número de sériePercentagemAlteração TurnoAlvo-Temp padrão
@@ -700,32 +517,18 @@
alvo da atividadeduração hipoalvo hipo
- Purge/Encha
- Procurando o status do bolus estendido
- A obter estado bólus
- A obter o status da basal temporária
- A obter as definições da bomba
- A obter hora bombareutilizarControles do RelógioDefinir Alvo-Temp and inserir Tratamentos do relógio.
- Ligação expirouAlimentosg
- m
- h
- d]]>kJEnPrGor
- ]]>
- A aguardar o final do bolus. Restam %1$d sec.
- A processar acção
- A iniciar administração de bolus
+ ]]>Comando será executado agora
- Controlador bomba corrigidoBomba inacessívelLeituras Glic. perdidasUsar as notificações do sistema para alertas e notificações
@@ -735,9 +538,6 @@
Limite para bomba inacessível [min]Alarme UrgenteINFO
- Bluetooth
- Watchdog BT
- Desliga o bluetooth do telefone durante um segundo se nenhuma conexão com bomba for possível. Este parâmetro pode ser util em alguns telefones, onde a pilha bluetooth congela.Aplicação Eversense (com patch)Enviar dados Glic. para NSConfigurações de upload de BG
@@ -748,14 +548,9 @@
Limite de minutos de basal para SMBUAM SMB máx minutosMax minutos de basal para limitar SMB para UAM
- Limite Sugestão de Hidratos
- Quando Hidratos são sugeridos, quantos hidratos irá solicitar uma notificação
- Firmware bomba não suportadoEnviar dados Glic. para xDrip+Seleccionar 640g/Eversense como fonte no xDrip+Glic NSCliente
- Valor da basal alterado para o valor mínimo suportado: %1$s
- Valor da basal alterado para o valor máximo suportado: %1$sCálculos GlicCálculo de Bólus IOBCálculo de Basal IOB
@@ -773,8 +568,6 @@
Modo fechado ativadoIOB máxima definida correctamenteGlicemia disponivel desde a fonte selecionada
- Valores das basais não definidos por horas: %1$s
- Perfil inválido: %1$sA programar a bomba para injectar o bolusAtualizarEstado
@@ -795,7 +588,6 @@
Um bolus com o mesmo valor foi introduzido nos 2 últimos minutos. Para evitar introduções acidentais e segurança contra bugs existentes o bolus foi cancelado.AgoraLendo histórico da bomba
- Histórico da BombaConfigurando perfil basalNível cartucho da bomba está baixoBateria da bomba está fraca
@@ -814,21 +606,15 @@
Erro na entrega Bólus EstendidoVisãoatrás
- %1$.2f h
- %1$d mins
- %1$dmSMB sempre activadoSMB sempre activo independentemente dos bolus. Possível apenas quando o medidor tive um bom filtro de dados como o G5Ativar SMB após carbosSMB activo por 6h após carbs, mesmo com 0 COB. Possível apenas quando o medidor tive um bom filtro de dados como o G5
- Activar SMB com COB
- Activar SMB quando tem COB activo.
+ Ativar SMB com COB
+ Ativar SMB quando houver COB ativo.SMB activo com valores alvo temporáriosSMB activo quando há valor alvo temporário activo (exercício, etc)SMB activo com alvos temporários elevados
- SMB activo com alvos temporários elevados em curso (exercicio)
- Permitir basal temp correr
- SilêncioInsulinaCarbosBotões
@@ -838,6 +624,9 @@
Unidades de insulina a adicionar quando o botão é premidoNão foi possível lançar aplicação de monitorização contínua. Por favor verifique que está instalada.CGM
+ Ignorar 5m
+ Ignorar 15m
+ Ignorar 30mNavegador do históricoNotificar no SMBMostrar SMB no relogio como bolus normal.
@@ -856,7 +645,6 @@
Sem bólus, registar apenasCategoriaSubcategoria
- O bolus apenas será gravadoPreencher glicemias em falta com NSSMB definido pela bombaAtividade
@@ -870,7 +658,6 @@
A correr a versão dev. O Loop fechado está desabilitado.Modo engenheiro activadoModo de engenharia não habilitado e não no na versão mestra
- %1$.2f U/hLendo perfil basalO histórico da bomba foi alterado após o cálculo do bolo ter sido realizado. O bolus não foi injectado. Por favor, verifique se bolus ainda é necessário.O bolus foi injectado, mas não foi possível adicionar ao histórico. Isto é possível se dois bolus do mesmo valor baixo foram administrados nos últimos dois minutos. Por favor verifique o histórico da bomba e use o Careportal para adicionar os dados em falta caso necessário. Cuidado para não adicionar dados com o mesmo valor no mesmo minuto.
@@ -883,7 +670,7 @@
\n\nhttp://www.androidaps.org\nhttp://www.androidaps.de (de)\n\nfacebook:\nhttp://facebook.androidaps.org\nhttp://facebook.androidaps.de (de)O último bólus tem mais de 24 horas ou está no futuro. Por favor verifique se a data está definida correctamente na bomba.Hora/data da entrega do bólus na bomba parece errado, IOB aparentemente está incorrecto. Verifique hora/data na bomba.
- TrocaPerfil em falta. Por favor faça uma troca de perfil ou pressione \"Activar Perfil\" em PerfilLocal.
+ TrocaPerfil em falta. Por favor faça uma troca de perfil ou pressione \"Ativar Perfil\" em PerfilLocal.Contagem BólusContagem TBRA bomba não é capaz de basais temporárias
@@ -892,16 +679,11 @@
Autosens desabilitado nas preferênciasSMB desactivado nas configuraçõesUAM desactivado nas configurações
- UAM desactivado porque confia no plugin de sensibilidade Oref1
- A basal max está limitada a %1$.2f U/h por %2$s
- limite bomba
- deve ser valor positivo
+ UAM desativado porque confia no plugin de sensibilidade Oref1multiplicador de basal máxmultiplicador de basal máx diáriaUm bolus foi injectado nos últimos 3 minutos, saltando SMBBasal correctamente definida
- A limitar rácio percentagem máx para %1$d%% porque %2$s
- A limitar bólus para %1$.1f U porque %2$sA limitar bólus estendido para %1$.1f U porque %2$sA limitar IOB máx. para %1$.1f U porque %2$sA limitar hidratos para %1$d g porque %2$s
@@ -916,7 +698,6 @@
SMB não permitido no modo open loopAlimentosrepor
- À espera da sincronização da hora (%1$d sec)Desligado (%1$d m)Máximo total IOS OpenAPS não pode superar [U]Este valor é chamado de Max IOB em contexto de OpenAPS\nOpenAPS não adicionará mais insulina se o IOB atual for maior que este valor
@@ -932,7 +713,6 @@
Assistente de ConfiguraçãoTERMINARSelecione o seu Idioma
- Pedido: %1$.2fU Entregue: %2$.2fU Código Erro: %3$sPrimeiro incremento insulinaSegundo incremento insulinaTerceiro incremento insulina
@@ -955,53 +735,34 @@
Tipo da Bomba VirtualDefinição da BombaBólus: Passo=%1$s\nBólus Estendido: [Passo=%2$s, Duração=%3$smin -%4$sh] \nBasal: Passo=%5$s\ nTBR: %6$s (por %7$s), Duração=%8$smin-%9$sh\n%10$s
- * Somente valores discretos nos intervalos são suportados como granularidade para basal/bolus na bomba virtual.Preenchimentoauto GlicemiaDefinições do Assistente RápidoResultado cálculos incluídos no Assistente:Mostrar ConfiguraçõesConfigurações gerais
- Activar NSCliente
+ Ativar NSClienteBem-vindo ao assistente de configuração. Vai guiá-lo(a) através do processo de instalação\nConfigurações da bombaLer estadoAlterações devem ser feitas no NSSaltar assistente de configuração
- Pressione o botão abaixo para activar o AndroidAPS para sugerir/fazer alterações basais
+ Pressione o botão abaixo para ativar o AndroidAPS para sugerir/fazer alterações basaisConfigurar plugin APSConfigurar plugin SensibilidadePlugin de Sensibilidade é usado para detecção de sensibilidade e cálculos COB. Para mais info visite:https://github.com/MilosKozak/AndroidAPS/wiki/Sensitivity-detection-and-COB
- NSCliente gere a ligação ao Nightscout. Pode saltar esta parte mas não será possível passar os objectivos até que o configure.
+ NSCliente gere a ligação ao Nightscout. Pode saltar esta parte mas não será possível passar os objetivos até que o configure.Lembre-se: novos perfis de insulina requerem diâmetro de pelo menos 5h. DIA 5–6h no novo perfil é igual ao diâmetro 3h nos antigos perfis de insulina.Configure a fonte das glicemias
- Por favor seleccione a fonte do perfil. Se o paciente é uma criança deverá utilizar perfil NS. Se ninguém o está a seguir no Nightscout provavelmente preferirá um perfil Local. Lembre-se que apenas está a escolher a fonte de perfil. Para o utilizar terá que o activar executando \"Troca Perfil\"
+ Por favor selecione a fonte do perfil. Se o paciente é uma criança deverá utilizar perfil NS. Se ninguém o está a seguir no Nightscout provavelmente preferirá um perfil Local. Lembre-se que apenas está a escolher a fonte de perfil. Para o utilizar terá que o ativar executando \"Troca Perfil\"Seleccione um dos algoritmos disponíveis. Eles são classificados do mais antigo para o mais recente. Algoritmo mais recente é geralmente mais forte e mais agressivo. Assim, se você é novo looper, poderá provavelmente começar com AMA e não com a versão mais recente. Não se esqueça de ler a documentação de OpenAPS e configurá-lo antes de usar.
- Iniciar primeiro objectivo
+ Iniciar primeiro objetivoPermissãoPedir permissãoAplicação precisa de permissão de janela do sistema para notificações
- Aplicação requer permissão de localização para pesquisa BT
- Aplicação necessita da permissão de armazenamento para ser capaz de armazenar ficheiros de registoPedidoConfigurar plugin InsulinaSair
- Opções do utilizador
- Formato hora
- Botão rolamento
- Sinal ao pressionar botão
- Alarme
- Som
- Vibrar
- Ambos
- LCD na hora [segundos]
- Luz de fundo na hora [segundos]
- Unidades de Glucose
- Desligar [horas]
- Reservatório baixo [Unidades]
- Gravar opções para a bomba
- Ligado
- DesligadoAbrir a navegaçãoFechar a navegaçãoPreferências plugin
@@ -1021,11 +782,9 @@
Quando a sensibilidade é detectada, aumenta o alvo glicoseConfiguração da bomba inválida, verifique a documentação e se o menu de informações rápidas está nomeado de QUICK INFO utilizando o programa de configuração 360.Personalizado
- Grande diferença Horária
- Grande diferença horária:\n A diferença de hora para a bomba é superior a 1.5h.\nPor favor ajuste manualmente a hora na bomba e certifique-se que a leitura do histórico da bomba não provoca problemas.\nSe possível apague o histórico da bomba antes de modificar a hora ou desabilite o loop durante toda a duração de acção da insulina (DIA) depois da ultima entrada no histórico da bomba ou mais um DIA desde o momento da correcção, qual delas seja a que mantenha o loop aberto durante mais tempo.Limpar AndroidAPS iniciadoConfigurações encontradas
- Atenção: Se conectar à sua bomba física e activar o perfil, o AndroidAPS irá copiar as definições desse perfil para as definições da bomba, apagando o memorizado na bomba. Por favor verifique que o que preencheu no perfil da app tem os mesmos valores que estão na bomba. Em caso contrario pressione imediatamente cancelar e corrija antes de voltar a ligar à bomba.
+ Atenção: Se conectar à sua bomba física e ativar o perfil, o AndroidAPS irá copiar as definições desse perfil para as definições da bomba, apagando o memorizado na bomba. Por favor verifique que o que preencheu no perfil do app tem os mesmos valores que estão na bomba. Em caso contrário pressione imediatamente cancelar e corrija antes de voltar a ligar à bomba.Dados tratamento incompletosConfigurações de manutençãoEmail destinatário
@@ -1048,17 +807,10 @@
Modo APS preferidoTotalCalc
- CumprimentoEnviar os ficheiros de registo do dia de hoje para os programadores. Situação inesperada.
- Transgressão Bólus máx
- Erro no comando
- Erro velocidade
- Transgressão limite insulinaPedido de mudança mínima [%]A app mostrará um pedido de alteração apenas se a mudança for superior a este valor em %. O valor padrão é 20%
- Emparelhe a sua bomba com o seu telefone!A pesquisar dispositivos…
- Por favor aguarde…Emparelhamento concluídoOs códigos exibidos neste dispositivo e na sua bomba correspondem?Emparelhamento Insight
@@ -1147,7 +899,6 @@
é igual ou maior queé maior quenão está disponível
- desconhecidoGlicose não está disponívelGlicose %1$s %2$.0f %3$sGlicose %1$s %2$.1f %3$s
@@ -1164,23 +915,10 @@
AutoAutomatização== ∑ %1$s U
- U/h
- g/U
- /URegistar mudança de sensor para NSCriar evento \"Mudança de Sensor\" automaticamente no NS aquando do início do sensorTomato (MiaoMiao)Tomato
- segundo
- minuto
- hora
- dia
- semana
- segundos
- minutos
- horas
- dias
- semanasNome de utilizador no Tidepool, normalmente seu endereço de e-mailNome de UtilizadorPalavra-passe da conta Tidepool
@@ -1207,9 +945,8 @@
Tempo recorrenteTodoNunca
- %1$dminsCondição:
- Acção:
+ Ação:IOB [U]:Glicose [%1$s]:APAGAR
@@ -1221,9 +958,8 @@
Detectamos que está a correr uma versão inválida. Loop desactivado!versão antigaversão muito antiga
- Nova versão para pelo menos %1$d dias disponíveis! Retorno a LGS após %2$d dias, o loop será desactivado após %3$d dias
+ Nova versão para pelo menos %1$d dias disponíveis! Retorno a LGS após %2$d dias, o loop será desativado após %3$d dias2h
- %1$.2fUApp Dexcom (com patch)DXCMReceber valores da Glicemia da app Dexcom (com patch).
@@ -1263,158 +999,22 @@
COB %1$s %2$.0fNome da TarefaEDITAR
- Escolha um tipo de acção
+ Escolha um tipo de açãoEscolha um tipo de gatilhoGatilhos:REMOVERPrecondições:
-
- Operação não suportada pela Bomba e/ou Controlador.
- Operação não suportada ainda pela Bomba.
-
- Integração de Bombas Medtronic, requer o dispositivo RileyLink e o Modelo de Bomba específico
-
- Número de série da Bomba
- Tipo de Bomba
- Frequência da Bomba
- Atraso antes que o Bólus seja iniciado (s)
- Max Bolus na Bomba (U)
- Máxima Basal na Bomba (U/h)
- Codificação Medtronic
- EUA & Canadá (916 MHz)
- Em todo o Mundo (868 Mhz)
- Codificação de Software 4b6b
- Codificação de Hardware 4b6b
- Acordar e Configurar
- Limpar Bloco de Bólus
- Redefinir configuração RileyLink
- Tipo de Bateria (Visão Detalhada)
- Não seleccionado (Visão simples)
- Alcalina (Visão estendida)
- Lithium (visão estendida)
- NiZn (Vista Estendida)
- NiMH (Visualização estendida)
- Depuração de Bólus/Tratamentos
-
- PROCURAR
- PARAR
- Seleccionado
- Procura RileyLink
- Bluetooth de energia baixa (LE) não suportado.
- Bluetooth não está activado.
- Localização Não Está Activada
- Para que a procura de Bluetooth funcione em aparelhos mais recentes, a localização tem que ser activada. A app não rastreia a sua localização e pode ser desativada depois de um emparelhamento bem sucedido.
- Activar
- Não
- A procurar
- Procura terminada
- Erro de Procura: %1$d
-
- Definições
- Histórico
- Estado do RileyLink
- Estado da Bomba
- Configurações do RileyLink
- RileyLink
- Endereço Configurado
- Dispositivo Ligado
- Estado de Ligação
- Erro de Ligação
- Dispositivo
- Tipo de dispositivo
- Modelo do dispositivo
- Frequência da última utilização
- Último contacto do dispositivo
- Firmware RL
-
- A iniciar o Bluetooth...
- Erro de Bluetooth
- Bluetooth Pronto
- Não Iniciado
- Inicialização do RileyLink…
- Erro no RileyLink
- Configurando RileyLink e a Bomba
- Problema ao ligar à Bomba
- Ligado
-
- Dispositivo não é RileyLink
- RileyLink inacessível
- Bluetooth desactivado
- Nenhum Adaptador Bluetooth
- TuneUp Falhou
- Bomba inacessível
- Pod inacessível
- Não definido
-
- Bomba Medtronic
- Omnipod
-
- Erros
- Núm. Série não definido.
- Núm. Série inválido.
- Tipo de Bomba não definido.
- Tipo de Bomba não suportado.
- Frequência de Bomba não definida.
- Frequência da Bomba não suportada.
- Endereço RileyLink inválido.
- A bomba detectada não é a mesma que a bomba configurada.
- A configuração de perfis/padrões da basal não éstá atcivada na bomba. Active-a na bomba.
- Perfil Basal definido na Bomba está incorrecto (deve ser STD).
- Tipo de DBT errado definido na bomba (deve ser Absoluto).
- Máx. Basal definida na Bomba está incorreta (deve ser %1$.2f).
- Máx. Basal definido errado na Bomba (deve ser %1$.2f).
- Operação não é possível.\n\n Você precisa configurar a Bomba Medtronic antes de poder usar esta operação.
- Solicitada uma alteração de tempo de mais de 24h.
-
- Basais
- Configurações
- Notificações
- Estatísticas
- Desconhecido
- Tudo
- Histórico da Bomba Medtronic
-
- Nunca contactado
- A acordar
- Erro com comunicação
- Tempo limite para comunicação
- Bomba inacessível
- Configuração inválida
- Activo
- A dormir
-
- Cancelou o Bolus, depois de ele já ter sido definido na Bomba. Uma vez que a Bomba Medtronic não suporta cancelamento, precisará de cancelar manualmente. Coloque a Bomba no modo de Suspender e depois Retome (se ainda quiser cancelar). A aplicação irá obter as alterações, na próxima actualização (em menos de 5 minutos).
- Não foi possível ler a TBR actual.
- Não foi possível cancelar a TBR atual. A parar a operação.
- Falhou Definir Perfil devido aos seguintes padrões, tem uma taxa de basal muito grande: %1$s
- O bólus não pôde ser entregue.
- Bólus não foi entregue, porque o quantidade de insulina disponível (%1$.2f) é menor que o bólus necessário (%2$.2f).
- TBR não pode ser definida.
- Não foi possível cancelar a TBR atual.
- Perfil Basal não pôde ser definido.
- Perfil Basal é o mesmo, então não será definido novamente.
- Obter Histórico - Página %1$d (%2$d/16)
- Obter Histórico - Página %1$d
- Obter Hora da Bomba
- Obter Definições
- Obter Modelo de Bomba
- Obter Perfil Basal
- Definir Perfil Basal
- Obter Basal temporário
- Definir Basal temporário
- Definir BólusAlterar perfil paraAlterar perfil para %1$s
- Última ligação à bomba
- Última ligação à bomba [minutos atrás]
- Última ligação à bomba %1$s %2$s min atrás
+ Última ligação com a bomba
+ Última ligação com a bomba [minutos atrás]
+ Última ligação com a bomba %1$s %2$s min atrásEnviar SMS: %1$sEnviar SMS para todos os númerosEnviar SMS com texto%2$+.2fU]]>Restrição de Bolus aplicada: %2$.2fU para %3$.2fU]]>!!!!! Absorção lenta de hidratos detectada: %2$d%% do tempo. Verifique o seu cálculo. COB pode estar sobreestimado, assim mais insulina pode ser dada !!!]]>
- %1$.0f / %2$d UEntregue esta parte do resultado do assistente de bólus [%]Assistente de bólus executa o cálculo, mas apenas esta parte da insulina calculada é entregue. Útil com o algoritmo SMB.A carregar ...
@@ -1422,26 +1022,19 @@
Intervalo de tempoO tempo está entre %1$s e %2$sEntre
- FecharAumentar o valor máximo de basal porque a configuração é inferior à sua basal máxima no perfilCorpo da mensagem inválido%1$s FSI: %2$.1f
- %1$.0fg IC: %2$.1f
- %1$.1fg IC: %2$.1f
- %1$d%%Assistente de Bólus
- minNome do Perfil:Seleccionado:Unidades
- Deseja mudar de perfil e descartar as alterações feitas no perfil actual?
- %1$dg
+ Deseja mudar de perfil e descartar as alterações feitas no perfil atual?LigadoDesligado
- Limpar terminado
- Limpar iniciado
- Detecção de tempo
- Deseja reiniciar o objectivo? Pode perder seu progresso.
+ Limpeza terminado
+ Limpeza iniciado
+ Deseja reiniciar o objetivo? Pode perder seu progresso.Nenhuma bomba seleccionadaSeleccione as unidades em que deseja exibir os valoresCarregar as alterações do perfil local para NS
@@ -1449,42 +1042,31 @@
ICFSIALV
- Clone
- Guardar ou repor as alterações actuais primeiro
- Eliminar perfil actual?
- Criar novo perfil local a partir desta troca de perfil?
- Nome do perfil contém pontos.\nIsso não é suportado pelo NS.\nPerfil não é enviado para o NS.
+ Guardar ou repor as alterações atuais primeiro
+ Eliminar perfil atual?
+ Nome do perfil contém pontos.\nIsso não é suportado pelo NS.\nPerfil não foi enviado para o NS.Valor mais baixo da área de intervalo (apenas exibição)Valor mais alto da área de intervalo (apenas exibição)ReordenarIdade:
- Peso:
- ID:EnviarPerfil mais comum:Nota: Apenas os dados visíveis neste ecrã serão enviados anonimamente. O ID é atribuído a esta instalação do AndroidAPS. Você pode enviar dados novamente se o perfil principal for alterado, mas deixá-lo rodar pelo menos uma semana para tornar o resultado visível no intervalo de tempo. Sua ajuda é apreciada.QuestionárioEntrada de idade inválidaEntrada de peso inválida
- %1$s: ∑: %2$.2f Bol: %3$.2f Bas: %4$.2f]]>%1$s: Hipo: %2$02d%% Dentro: %3$02d%% Hiper: %4$02d%%]]>Média
- TDD
- TIR
- Monitor de actividade
- Quer reiniciar as estatísticas de actividade?
+ Monitor de atividade
+ Quer reiniciar as estatísticas de atividade?EstatísticasGlic. AleatóriaGerar dados de Glic. aleatórios (Somente modo de Demonstração)GLICFerramentasMostrar Localização
- Erro
- 12h
- 24hEvento de automaçãoJá definido
- MensagemLimpar fila? Todos os dados na fila serão perdidos!O uso do Bólus Estendido irá parar o modo Closed Loop no tempo do bólus estendido. Quer realmente isso?Closed Loop desabilitado por causa da execução do Bólus Estendido
@@ -1499,7 +1081,7 @@
Alertas Bomba Insighta partir da app Autenticador para: %1$s
- Activar Autenticador
+ Ativar AutenticadorAutenticar comandos usando Uma-Password-Única que sejam geradas pelo Google Authenticator ou app 2FA similar.PIN adicional no token finalDígitos adicionais que devem ser memorizados e colados no final de cada Uma-Password-Única que seja gerada
@@ -1507,8 +1089,8 @@
OTP para verificar:Repor AutenticadoresRepor Chave Autenticador
- Tem certeza de redefinir chave Authenticador? Ele tornará todos os Authenticators configurados actualmente como inválidos, e precisará de os configurar novamente.
- Nova Chave do Autenticador foi gerada! Por favor, use o QRCode actualizado para os autenticadores.
+ Tem certeza de redefinir chave Authenticador? Ele tornará todos os Authenticators configurados atualmente como inválidos, e precisará de os configurar novamente.
+ Nova Chave do Autenticador foi gerada! Por favor, use o QRCode atualizado para os autenticadores.1. Instalar Autenticador2. Pesquise o código para configurar os códigos OTP do AndroidAPS3. Teste Uma-Password-Única
@@ -1524,5 +1106,34 @@
Insulina absolutaPassword Mestre é usada para encriptação da cópia de segurança e substituir segurança na aplicação. Lembre-se dela ou guarde-a em um lugar seguro.As passwords não coincidem
- Password Mestre actual
+ Senha mestra atual
+ Copiar definições do NS
+ Tema original
+ Botões são sempre exibidos na parte inferior da tela
+ Mostrador Grande
+ Tema
+
+ Nunca contatado
+ A acordar
+ Erro com comunicação
+ Tempo limite para comunicação
+ Bomba inacessível
+ Configuração inválida
+ Ativo
+ A dormir
+
+
+
+
+
+
+
+ Desativado Pod
+ Definir Bólus
+ Definir Basal temporário
+ %1$.1f U
+ Definir Perfil Basal
+ Desativado Pod
+
+
diff --git a/app/src/main/res/values-pt-rPT/exam.xml b/app/src/main/res/values-pt-rPT/exam.xml
index b28a79133e..4ce02a40a9 100644
--- a/app/src/main/res/values-pt-rPT/exam.xml
+++ b/app/src/main/res/values-pt-rPT/exam.xml
@@ -1,7 +1,7 @@
O que é verdade sobre DIA?
- Tópico: Duração da Acção de Insulina (DIA)
+ Tópico: Duração da Acção de Insulina (DIA)O valor mínimo é de 3 horas.O valor mínimo é de 5 horas.https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html?#insulin
@@ -18,7 +18,7 @@
https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html#profileTópico: Desligar a BombaO que deve ser feito ao desligar a bomba?
- Clique em \'Desligar bomba\' para que o AAPS saiba que nenhuma insulina está a ser entregue.
+ Clique em \'Desligar bomba\' para que o AAPS saiba que nenhuma insulina está a ser administrada.Clique em \'Suspender loop\' para que AAPS pare o looping enquanto a bomba estiver desconectada.Não altere nada no AAPS, apenas desconecte a bomba.https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#other-settings
@@ -51,8 +51,8 @@
https://androidaps.readthedocs.io/en/latest/EN/Usage/temptarget.html#activity-temp-targetTópico: Loop Desactivado/SuspensoEu recebo insulina quando o loop estiver desactivado/suspenso?
- Sim, a insulina basal continua a ser entregue.
- Não, a entrega da insulina está parada.
+ Sim, a insulina basal continua a ser administrada.
+ Não, administração da insulina está parada.Topic: Testar Basal, FSI e ICQuando devo validar valores das basais, FSI e de IC?Antes de começar com o looping.
@@ -109,7 +109,7 @@
Como adicionar insulina falsa utilizando a função RecarregarTópico: Alimentos com Gordura e ProteínaO que fazer se a comida contém uma grande quantidade de gordura e/ou proteínas?
- Recalcular gordura e proteínas em hidratos e usar recurso de \"Hidratos Estendidos\".
+ Recalcular gordura e proteínas em hidratos e usar recurso de \"Hidratos Prolongados\".Recalcular gordura e proteínas em hidratos e adicionar ao cálculo de bólus.Use o bólus estendido para cobrir gordura e proteínas.https://androidaps.readthedocs.io/en/latest/EN/Usage/Extended-Carbs.html
@@ -122,17 +122,17 @@
App de Loop no iPhone.App Spike no iPhone.https://androidaps.readthedocs.io/en/latest/EN/Children/Children.html
- Tópico: Factor de Sensibilidade de Insulina
- Valores elevados de FSI levam a uma entrega de menos insulina quando o AAPS corrige Glic alta.
- Valores baixos de FSI levam a uma entrega de menos insulina quando o AAPS corrige Glic alta.
- Alterar os valores FSI não tem efeito sobre a quantidade de insulina entregue quando a AAPS corrige Glic alta.
+ Tópico: Factor de Sensibilidade de Insulina
+ Valores elevados de FSI levam a uma administração de menos insulina quando o AAPS corrige Glic alta.
+ Valores baixos de FSI levam a uma administração de menos insulina quando o AAPS corrige Glic alta.
+ Alterar os valores FSI não tem efeito sobre a quantidade de insulina administrada quando a AAPS corrige Glic alta.É necessário inserir FSI nas Preferências.A alteração do valor do FSI no seu perfil é suficiente para aplicar a mudança.https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#insulin-sensitivity-factor-isf-mmol-l-u-or-mg-dl-uhttps://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html
- Tópico: Rácio IC
- Rácios IC mais altos levam a menos insulina entregue para uma dada quantidade de hidratos.
- Rácios IC mais baixos levam a menos insulina entregue para uma dada quantidade de hidratos.
+ Tópico: Rácio IC
+ Rácios IC mais altos levam a menos insulina administrada para uma dada quantidade de hidratos.
+ Rácios IC mais baixos levam a menos insulina administrada para uma dada quantidade de hidratos.Se tiver 0 COB, alterar o rácio IC irá levar a uma quantidade diferente de insulina para corrigir um determinado valor da Glic.IC será diferente se contar a unidade de pão como 10g ou 12g.O significado do IC é: Quantas unidades de pão são cobertas por 1U de insulina.
diff --git a/app/src/main/res/values-pt-rPT/insight_alert_titles.xml b/app/src/main/res/values-pt-rPT/insight_alert_titles.xml
index 1d3cc97b10..1ac44dae19 100644
--- a/app/src/main/res/values-pt-rPT/insight_alert_titles.xml
+++ b/app/src/main/res/values-pt-rPT/insight_alert_titles.xml
@@ -1,15 +1,15 @@
- Administrar bolus
+ Administrar BólusBolus não administradoAlarmeMudar o conjunto de infusão
- Basal temporária concluída
+ DBT concluídoReservatório quase vazioBateria fracaHora/Data inválidaFora da Garantia
- Basal temporária cancelada
+ DBT canceladoBolus canceladoAviso de periodo de empréstimoCartucho não inserido
diff --git a/app/src/main/res/values-pt-rPT/insight_exceptions.xml b/app/src/main/res/values-pt-rPT/insight_exceptions.xml
index 78763caf20..34d6775898 100644
--- a/app/src/main/res/values-pt-rPT/insight_exceptions.xml
+++ b/app/src/main/res/values-pt-rPT/insight_exceptions.xml
@@ -6,8 +6,8 @@
Falha ao criar documentoTempo expirouNúmero máximo de bólus tipo já em execução
- Sem basal temporária para cancelar
- Sem basal temporária para alterar
+ Sem DBT para cancelar
+ Sem DBT para alterarSem bolus para cancelarA bomba já está nesse estadoModo executar não autorizado
diff --git a/app/src/main/res/values-pt-rPT/objectives.xml b/app/src/main/res/values-pt-rPT/objectives.xml
index 195da54c80..40678732c6 100644
--- a/app/src/main/res/values-pt-rPT/objectives.xml
+++ b/app/src/main/res/values-pt-rPT/objectives.xml
@@ -13,7 +13,7 @@
Compreender o seu open loop, incluindo as recomendações de basais temporáriasCom base nessa experiência, decidir qual deve ser a basal máxima e configurá-la na bomba e nas preferênciasComeçar o close loop com Suspensão por Glicose Baixa
- Utilizar em close loop com IOB máx = 0 por alguns dias sem muitas situações de Suspensão por Baixa Glicose
+ Utilizar em close loop com IOB máx = 0 por alguns dias sem muitas situações de Suspensão Glicose BaixaAjustar o close loop, aumentar IOB máxima acima de 0 e reduzir gradualmente os alvos de GlicUtilizar por alguns dias e pelo menos uma noite sem alarmes de Glic baixa, antes de baixar GlicAjuste as basais e os rácios, se necessário, e, em seguida, active o auto-sens
diff --git a/app/src/main/res/values-pt-rPT/protection.xml b/app/src/main/res/values-pt-rPT/protection.xml
index 67ae6b40c1..2fa347f1b5 100644
--- a/app/src/main/res/values-pt-rPT/protection.xml
+++ b/app/src/main/res/values-pt-rPT/protection.xml
@@ -5,19 +5,21 @@
Definições ProtecçãoProtecção AplicaçãoProtecção Bólus
- Password Mestre
- Definições Password
- Password Aplicação
- Password Bólus
+ Senha Mestre
+ Senha Definições
+ Senha Aplicação
+ Senha BólusDefinições DesbloqueioBiométrico
- Password Personalizada
+ Senha PersonalizadaSem ProtecçãoProtecção
- A Password Mestre não está definida!\n\nPor favor, configure Password Mestre em Preferências (%1$s → %2$s)
- Password foi definida!
- Password não foi definida
- Password não foi alterada
- Password apagada!
- Insira a password aqui
+ A Senha Mestre não está definida!\n\nPor favor, configure Senha Mestre em Preferências (%1$s → %2$s)
+ Reverter Inseguro
+ Para ser eficaz, a protecção biométrica precisa de uma senha mestre definida para reverter.\n\nPor favor, defina uma senha mestre!
+ Senha foi definida!
+ Senha não foi definida
+ Senha não foi alterada
+ Senha limpa!
+ Insira aqui a senha
diff --git a/app/src/main/res/values-pt-rPT/strings.xml b/app/src/main/res/values-pt-rPT/strings.xml
index b31fcdf7d7..53d86619f7 100644
--- a/app/src/main/res/values-pt-rPT/strings.xml
+++ b/app/src/main/res/values-pt-rPT/strings.xml
@@ -8,17 +8,14 @@
Max bolus permitido [U]Max hidratos permitidos [g]Preferências
- Atualizar tratamentos do NS
+ Actualizar tratamentos do NSReinicializar base de dadosQuer realmente reiniciar a base de dados?Sair
- Usar bólus prolongado de >200%%
- Dispositivo Bluetooth DanaRUsar sempre valores absolutos de basal
- Por favor, reinicie o seu telefone ou reinicie o AndroidAPS a partir das Configurações do Sistema \ncaso contrário, o AndroidAPS não terá registro (importante para controlar e verificar se os algoritmos estão a funcionar corretamente)!
+ Por favor, reinicie o telefone ou reinicie o AndroidAPS a partir das Configurações do Sistema \ncaso contrário, o AndroidAPS não terá registo (importante para controlar e verificar se os algoritmos estão a funcionar correctamente)!Este dispositivo não parece suportar a optimização de bateria na lista de permissões - pode ter problemas de desempenho.Alguns botões para aceder rapidamente a funções comuns
- Inserir as entradas avançadas do livro de registo.Usado para configurar os plugins ativosPrograma de aprendizagemExibe as predefinições de comida definidas no Nightscout
@@ -36,10 +33,6 @@
Fornece o perfil definido no NightscoutDefinir um perfil com apenas um bloco de tempo.Integração para bombas Accu-Chek Combo, requer ter o ruffy instalado
- Integração para bombas DANA Diabecare R
- Integração para bombas DANA Diabecare R Coreanas
- Integração para as bombas DANA Diabecare R com firmware atualizado
- Integração para bombas DANA Diabecare RSIntegração para as pessoas que fazem múltiplas injeções diárias para a sua terapia de diabetesIntegração para as bombas que não têm qualquer driver ainda (Open Loop)A sensibilidade é calculada da mesma forma que Oref0, mas você pode especificar o período de tempo para o passado. A absorção mínima de hidratos de carbono é calculada a partir do tempo máximo de absorção de hidratos de carbono das preferências.
@@ -54,15 +47,8 @@
Monitorizar e controlar o AndroidAPS usando o seu relógio WearOS.Mostrar informações sobre o loop no watchface do xDrip+.Controlar remotamente o AndroidAPS usando comandos SMS.
- Unidades
- DIA
- IC
- FSI
- Basal
- Alvo
- SEM PERFIL DEFINIDOInsulina:
- Hidratos de Carbono:
+ Hidratos:IOB:IOB:IOB Total:
@@ -76,15 +62,9 @@
TTHidratosCorr
- UBólus IOBExecutar agoraBOMBA VIRTUAL
- Taxa Basal de base
- Basal temp
- Bólus estendido
- Bateria
- ReservatórioOKÚltima execuçãoParâmetros de entrada
@@ -96,16 +76,11 @@
ResultadoResultado: %1$s %2$ssSem dados de glucose disponíveis
- Nenhuma alteração solicitadaPedido
- Rácio
- Duração
- MotivoGlucoseDeltaDelta:Configurador
- ObjetivosVisão geralPerfil NSPerfil simples
@@ -123,34 +98,27 @@
GeralEstes são alguns plugins gerais que pode achar úteis.Que restrições são aplicadas?
- diasRestriçõesLoopLoop
- Utilize isto para ativar a integração loop do AndroidAPS.
+ Utilize isto para activar a integração loop do AndroidAPS.APSDepois das restrições processadasBasal temporária definida pela bombaUltima execução
- OK
- CancelarNÃO EXISTE NENHUM APS SELECIONADO OU RESULTADO FORNECIDOSegurançaPlugin está desativadoViolação das restrições
- Erro na entrega do bolus
- Erro na entrega da basal temporária
+ Erro na administração do bólusValor da Basal [%]Aceitar nova basal temporária:TratamentoCalculadoraRestrição aplicada!
- Confirmação
- BolusBolus:BasalBasal:
- Hidratos de CarbonoAltere o seu input!Origem dos valores de GlucoseDe onde deve o AndroidAPS obter os dados?
@@ -158,38 +126,21 @@
Modo APSClosed LoopOpen Loop
+ Suspensão de Glicémia BaixaLoop DesactivadoDesactivar LoopActivar LoopDisponível nova sugestão
+ Sugestão de HidratosVersão sem suporte do NightscoutLOOP DESATIVADO POR RESTRIÇÕESBasal IOBRestrição de bólus aplicadaRestrição de hidratos de carbono aplicada
- Verificar Glic
- Anúncio
- Nota
- Pergunta
- Exercício
- Alteração do local do cateter
- Colocação do Sensor CGM
- Início do Sensor CGM
- Mudança de Cartucho de Insulina
- Troca de Perfil
- Bólus Lanche
- Bólus Refeição
- Bólus Correcção
- Bólus Combo
- Início Temp Basal
- Fim Temp Basal
- Correcção Hidratos
- OpenAPS Offline
- Tipo de eventoOutroMedidorSensor
- Hidratos de Carbono
+ HidratosInsulinaTempo HidratosDividir
@@ -203,7 +154,7 @@
Tipo de glicoseSem perfil carregado do NSBasalTemp
- Bólus estendido
+ Bólus ProlongadoVersão Nightscout:Falta %1$dgPreferências exportadas
@@ -213,15 +164,17 @@
Ficheiro não encontradoExportar configuraçõesImportar configurações
- Max U/hr em que uma Temp Basal pode ser definida
+ Max U/h em que uma Temp Basal pode ser definidaEste valor é chamado max basal no contexto do OpenAPS
- Basal Máxima IOB que OpenAPS pode dar [U]
- Este valor é denominado Max IOB em contexto OpenAPS \nEste é o valor máximo de insulina em [U] que APS pode dar de uma vez.
- Dispensar
- Será perguntado pela password mestre, que será usada para encriptar preferências exportadas.
- Será perguntado pela password mestre, que será necessária para desencriptar preferências importadas.
+ Basal Máxima IOB que OpenAPS pode administrar [U]
+ Este valor é denominado Max IOB em contexto OpenAPS \nEste é o valor máximo de insulina em [U] que APS pode administrar de uma vez.
+ Será perguntado pela senha mestre, que será usada para encriptar preferências exportadas.
+ Será perguntado pela senha mestre, que será necessária para desencriptar preferências importadas.Exportação cancelada! Preferências NÃO foram exportadas!Importação cancelada! Preferências NÃO foram importadas!
+ Não é possível importar as preferências!
+ Por favor, volte ao ecrã principal e tente novamente.
+ Seleccione o ficheiro para importaçãoPor favor, verifique as preferências antes da importação:Preferências não podem ser importadas!As preferências não devem ser importadas!
@@ -234,6 +187,8 @@
Está a usar formato ultrapassado herdado a partir de versões antigas do AAPS, o que não é seguro! Use-o apenas como um último recurso, se não tiver uma exportação no actual no formato JSON.Preferências importadas já são %1$s dias antigas! Talvez tenha preferências mais actualizadas ou escolheu o ficheiro errado? Lembre-se de exportar preferências regularmente!Formato de data-hora inválido!
+ Preferências de uma versão menor diferente de aplicação. Está OK se você está importando após o upgrade, mas verifique após a importação se as preferências ainda estão corretas!
+ Preferências de uma versão principal diferente de aplicação. As principais versões diferem significativamente e podem ter preferências incompatíveis! Certifique-se depois de importar que as preferências ainda estão corretas!Formato do ficheiroCriado emVersão AAPS
@@ -249,45 +204,28 @@
Ficheiro de configurações é seguroA usar um formato de configurações não seguro e não encriptadoErro de formato JSON, campo necessário ausente (formato, conteúdo, metadados ou segurança)
- Erro ao desencriptar, a password inserida não pode desencriptar o ficheiro
+ Erro ao desencriptar, a senha inserida não pode desencriptar o ficheiroFicheiro de verificação (hash) em falta, não é possível verificar a autenticidade de configurações!Ficheiro foi modificado após exportação!Erro Desencriptação, a análise de preferências falhou!
- Erro de Desencriptação, a password é inválida ou configurações de arquivo foram modificadas! Pode acontecer que o ficheiro importado foi exportado com uma Password Mestre diferente.
+ Erro de Desencriptação, a senha é inválida ou configurações de arquivo foram modificadas! Pode acontecer que o ficheiro importado foi exportado com uma Senha Mestre diferente.Configuração de encriptação ausente, formato de configurações é inválido!Algoritmo de encriptação não suportado ou não especificado!
- DanaR
- A ligar
- Ligado
- Desligado
- Configurações da bomba Dana
+ exportado hoje
+ exportado há %1$s
+ exportado às %1$s
+ exportado há menos de uma hora
+ no diretório: %1$sCondições de UtilizaçãoNÃO DEVE SER USADO PARA FAZER DECISÕES MÉDICAS. NÃO HÁ NENHUMA GARANTIA PARA O PROGRAMA, NA EXTENSÃO PERMITIDA PELA LEGISLAÇÃO APLICÁVEL. EXCETO QUANDO DE OUTRA FORMA, POR ESCRITO, OS TITULARES DOS DIREITOS DE AUTOR E / OU OUTRAS PARTES FORNECEM O PROGRAMA “TAL COMO ESTÁ”, SEM GARANTIA DE QUALQUER TIPO, EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO, ÀS GARANTIAS IMPLÍCITAS DE COMERCIALIZAÇÃO E ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. TODO O RISCO QUANTO À QUALIDADE E DESEMPENHO DO PROGRAMA É COM VOCÊ. CASO O PROGRAMA SEJA DEFEITUOSO, VOCÊ ASSUME O CUSTO DE TODOS OS SERVIÇOS, REPAROS OU CORREÇÕES NECESSÁRIOS.EU ENTENDO E CONCORDOGuardar
- Nenhum dispositivo bluetooth encontrado
- Dispositivo seleccionado não foi encontrado
- Erro de conexão da bomba
- IOB Bomba
- Unidades diárias
- Último bólus
- %1$.1fh atrás
- Entrada Inválida
- Valor não definido corretamenteRecarregar perfil
- Ver perfil
- Executado
- Commentário
- Sucesso
- Percentagem
- Absoluto
- Cancelar basal tempComunicador SMS
- À espera de resultadoNúmero de telefones permitidos+XXXXXXXXXX;+YYYYYYYYYY
- Para dar bolus %1$.2fU responder com código %2$s
- Para dar bólus %1$.2fU responder com código %2$s
+ Para administrar bólus %1$.2fU responder com código %2$s
+ Para administrar bólus %1$.2fU responder com código %2$sPara definir o Alvo Tempo %1$s responda com o código %2$sPara cancelar Alvo Temp responda com o código %1$sPara desactivar o Serviço Remoto SMS de responda com o código %1$s.\n\nTenha em mente que será capaz de o reactivar directamente apenas a partir do telemóvel mestre do AAPS.
@@ -297,88 +235,55 @@
Número mínimo de minutos que deve decorrer entre um bólus remoto e o próximoQuantos minutos deve decorrer, pelo menos, entre um bólus e o próximoPara sua segurança, para editar esta preferência você precisa adicionar pelo menos 2 números de telefone.
- Bólus %1$.2fU enviado com êxito
- Vai ser enviado %1$.2fU
- Bólus %1$.2fU enviado com êxito
- Bólus de refeição %1$.2fU entregue com sucesso
+ Bólus %1$.2fU administrado com êxito
+ A ser administrado %1$.2fU
+ Bólus %1$.2fU administrado com êxito
+ Bólus de refeição %1$.2fU administrado com sucessoAlvo %1$s para %2$d minutosAlvo %1$s para %2$d minutos definido com sucessoAlvo Temp cancelado com êxito
- A enviar %1$.2fUPermitir comandos remotos via SMS
- Dedo
- Sensor
- Manual
- Alvo Temporário
- Cancelar alvo temporárioDefinições perfil DanaRDIA [h]Duração da Insulina Activa
- Falha a actualizar perfil da basal
- RecarregarA enviar
- E bólus
- DS Bólus
- DE Bólus
- erro
- recarregar
- hora basal
- glicose
- hidratos de carbono
- alarme
- Total de %1$d registos carregados
- S bolus
- Alarmes
- Horas de Basal
- Bolus
- Hidratos de Carbono
- Insulina diária
- Erros
- Glicose
- Recarregar
- Suspender
- A ligar durante %1$d s
- Senha da bomba
- Senha da bomba incorrecta!
- A bomba está ocupada
- Entregue
- ParadoO bolus parouA parar o bolus
- Oclusão
- Parar
- STOP PRESSIONADO
- À espera da bomba
- Vai ser administrada %1$.2fU
- Atingiu o limite autorizado
- Nenhum perfil seleccionadoLoop foi desactivadoLoop foi activadoLoop desactivadoLoop activado%1$.2f limitado a %2$.2fO valor %1$s está fora dos limites permitidos
+ Para ligar a bomba responda com o código %1$s
+ Ligação à bomba falhou
+ Para desligar a bomba por %1d minutos responda com o código %2$s
+ Bomba desligada
+ Bomba ligada novamenteO comando remoto não é permitidoO bólus remoto não está disponível. Tente novamente mais tarde.Para começar a basal %1$.2fU/h durante %2$d min responda com o código %3$sPara mudar o perfil para %1$s %2$d%% responda com o código %3$s
- Para começar o bólus estendido %1$.2fU/h para %2$d min responda com o código %3$s
+ Para começar o bólus prolongado %1$.2fU/h para %2$d min responda com o código %3$sPara inserir %1$dg em %2$s responda com código %3$sPara começar a basal %1$d%% U/h durante %2$d min responda com o código %3$sPara suspender o loop por %1$d minutos resposta com código %2$s
+ Para retomar o loop responda com o código %1$s
+ Para activar o loop responda com o código %1$s
+ Para desactivar o loop responda com o código %1$sBasal temporária %1$.2fU/h para %2$d min iniciada com êxito
- Bólus estendido %1$.2fU/h para %2$d min iniciado com êxito
+ Bólus prolongado %1$.2fU/h para %2$d min iniciado com êxitoHidratos %1$dg inseridos com sucessoIntrodução de %1$dg de hidratos falhouBasal temporária %1$d%% U/h durante%2$d min iniciada com êxitoInício basal temp falhou
- Falha ao iniciar o bólus estendido
+ Falha ao iniciar o bólus prolongadoPara parar a basal temporária responda com o código %1$s
- Para parar o bólus temporário responda com o código %1$s
+ Para parar o bólus prolongado responda com o código %1$sBasal temp cancelada
- Bólus estendido cancelado
+ Bólus prolongado canceladoNão foi possivel cancelar a basal temp
- Falhou o cancelamento do bolus extendido
+ Falhou a cancelar bólus prolongadoComando desconhecido ou resposta erradaAssistente RápidoDefinições do Assistente Rápido
@@ -391,22 +296,18 @@
RefeiçãoCorrAcções
- AndroidAPS iniciadoEnvio NS apenas (sincronização desactivada)Apenas upload para NS. Não é eficaz em SGV a menos que uma fonte local como xDrip esteja selecionada. Não é eficaz em perfis enquanto NS-Profiles é usado.Bomba não inicializada!
- Bomba não inicializada, perfil não definido!Purgar/PreencherPor favor certifique-se que o valor corresponde ao especificado para o seu conjunto de infusão!Outro
- Purgar/Preencher os valores standard.
+ Valores Padrão Purgar/Preencher InsulinaBotão 1Botão 2Botão 3Unidades:Unidades
- mg/dL
- mmol/LDIAIntervalo Alvo:Intervalo para visualização
@@ -416,17 +317,7 @@
WearReenviar Todos os DadosAbrir Definições em Wear
- Erro Bomba
- Bateria fraca
- Encerrar Bomba
- Bateria da Bomba Descarregada
- DanaR CoreanaValor da Basal:
- Não foi possivel configurar o perfil de basal
- Perfil Basal actualizado na bomba
- Desactivar modo EasyUI na bomba
- Habilitar bolus estendido na bomba
- Mudar de modo U/d para U/h na bombaValor da basal abaixo do mínimo. Perfil não definido!GLIC:Ultima Gli:
@@ -434,7 +325,6 @@
MM640gNotificação em cursoDADOS ANTIGOS
- %1$d min atrás%1$dmin atrásPerfil localOpenAPS AMA
@@ -450,47 +340,28 @@
HipoActividadeRemover registo
- Estatísticas DanaR
- Dose diária acumulativa
- Dose diária exponencialmente ponderada
- Basal
- Bólus
- TDD
- Data
- Rácio
- # Dias
- Peso
- Possivelmente impreciso se foram usados bolus para purgar/preencher!
- Dados antigos, pressione \"Recarregar\"
- Basal Diária Total
- Basal diária * 2
- A inicializar ...ACÇCONFLOOPPSOAPSPL
- DANAInícioBOMBAVNSPerfilTRATA
- CPOBJWEARSMSAbreviar títulos dos separadoresUsar sempre delta médio curto em vez de delta simplesÚtil quando há ruído nos dados de fontes sem filtro como o xDrip.
- Configurações Avançadas
- Modelo: %1$02X Protocolo: %2$02X Código: %3$02XPerfilValor padrão: 3 Por segurança é o valor limite estabelecido por OpenAPS. O que faz é limitar a basal a x3 a basal mázima. Se necessário modificar este valor, por favor ter em conta que os dados apontam para que os limites de segurança sejam - 3 x max diario ou 4x valor actual (qual seja menor) como valores máximos.Valor padrão: 4 Esta é a outra parte dos valores limites de segurança - 3 x max diário ou 4x valor actual - do OpenAPS. Isto define que não importa o valor da basal máxima definido na bomba, o valor máximo da basal temporária não pode ser maior que 4 x o valor da basal definida na bomba. O objectivo é evitar que sejam determinadas basais temporárias demasiado elevadas antes que se perceba como o algoritmo funciona. 4x é um valor que a maior parte das pessoas nunca necessitará de alterar pois o mais provável é necessitar de alterar outras definições para não necessitar de \"ultrapassar\" este limite de segurança.Valor predefinido: 1.2\n Este é um multiplicador para autosens (e em breve autotune) que coloca um limite máximo de 20%% aos rácios superiores e inferiores de autosens, o que por sua vez calcula o quão alto autosens pode ajustar a basal, quão pode baixar o Factor de Sensibilidade (FSI) e baixar o valor alvo de glicose no sangue.Valor padrão: 0.7\nO outro lado dos limites de segurança do autosens. Coloca um tecto no quão baixo autosens pode ajustar as basais, e quão alto pode ajustar os valores de ISF e valor alvo de glucose no sangue (BG).
- Autosens também ajusta os alvos
+ Autosens ajusta os alvos, tambémValor padrão: true\nÉ usado para permitir que autosens possa ajustar os valores alvo de glucose no sangue (BG), além de ISF e basais.Valor padrão: 2\nBolus Snooze (pausa após bolus) é executado depois de realizar um bolus por refeição Desta maneira o algoritmo não irá contrariar com temporárias baixas logo depois da refeição. O valor padrão é 2; Então uma duração de acção da insulina (DIA) de 5h significa que o Bolus Snooze irá ser gradualmente reduzido ao longo de 2,5 horas = 5/2 = DIA/Valor padrão.Valor padrão: 3.0 para detecção avançada de refeições (AMA) ou 8.0 para super micro bolus (SMB). Esta é a configuração padrão para o calculo de quanto varia a cada 5 min a glucose no sangue (BG) devido à absorção de hidratos de carbono. O padrão é 3mg/ dl / 5min. Isso afeta a rapidez com que decaem as calorias no corpo (COB), e quantos hidratos de carbono terão de ser considerados no cálculo da previsão de BG, quando é que a BG está baixando mais do que espectável ou não subindo como espectável.
@@ -503,42 +374,33 @@
Calibração enviada. Recepção têm de estar activada no xDrip.O xDrip não esta a receber as calibraçõesBomba suspensa
- A obter estado bomba
- Definindo basal temp
- A parar basal temp
- Configurando bolus prolongado
- Parando bolus prolongado
- Atualizar valores das basais
- A desligarA ExecutarDefinições da bomba virtualEnviar estado para NS
- Senha incorrecta
- Aproximação do limite diario de insulina
- NSCliente
- NSCI
+ ClienteNS
+ CLNSURL:Rolar automáticoReiniciar
- NSCliente
+ ClienteNSNightscout URLIntroduza o Nightscout URLNS API secretNS API secretInsira NS API secret (min 12 caract.)
- Entregar agora
+ Administrar agoraLimpar fila de esperaMostrar file de esperaFila de espera:Estado:Em pausaLimpar Registo
- Cliente NS sem permissões para alterar dados. Tem a senha API correta?
+ ClienteNS sem permissões para alterar dados. Tem a senha API correta?Definições WearMostrar IOB detalhadaDividir IOB entre IOB de bolus e de basal na face do relógiosem efeito - por favor verifique no telemóvel
- Indisponível
+ n/dIdade do PacienteCriançaAdolescente
@@ -574,8 +436,6 @@
SuperbólusRegistar inicio da app no NSA sair da aplicação para aplicar as configurações.
- DanaRv2
- InsulinaQual o tipo de insulina que está a utilizar?Insulina de ação rapidaNovorapid, Novolog, Humalog
@@ -596,11 +456,14 @@
Limite crítico de nível de reservatório [U]Limite de aviso de nível de bateria [%]Limite de crítico de nível de bateria [%]
+ PREVIOBCOB
- Firmware
- Última ligação
- Estado Bluetooth
+ BAS
+ DESV
+ ACT
+ ABS
+ DESVINCLIAcercaFalta de permissão SMSFalta permissão do estado do telefone
@@ -611,24 +474,15 @@
Adicionar BGI à linha de statusSem envio para NSTodos os dados enviados para NS são descartados. AAPS está conectado ao NS, mas não é feita nenhuma alteração no NS
- Valor da Basal
- Incremento de bolus
- Cancelar Bólus Estendido
+ Cancelar Bólus ProlongadoIdade SensorIdade CanulaIdade Insulina
- horas
- Perfil inválido !!!Fazer Mudança De PerfilIdade bateria bomba
- Troca bateria bombaOpções Alarme
- Urgência hiperglicemia
- Alto
- Baixo
- Urgência hipoglicemia
- Dados Obsoletos
- Dados obsoletos urgentes
+ Criar notificações dos alarmes NS
+ Criar notificações a partir dos anúncios NSTempo limite para dados obsoletos [min]Tempo limite para Urgência por dados obsoletos [min]Intervalo para autosens [h]
@@ -645,7 +499,6 @@
Configurações de absorçãoTempo máx. absorção refeição [h]Tempo em horas, espectável para que todos os hidratos de carbono da refeição sejam absorvidos
- Visualizar bólus prolongado como %%SAGEIAGECAGE
@@ -653,16 +506,16 @@
OAPSUPLDBAS
- EST
+ PROLManter ecrã ligadoImpedir Android de desligar o ecrã. Isto irá consumir muita bateria quando não ligado ao carregador.
- Ao activar a função Autosense lembre-se de introduzir todos os hidratos de carbono (carbs) que comeu. Caso contra contrário os desvios de carbs serão erroneamente identificados como uma variação da sensibilidade!!
+ Ao activar a função Autosense lembre-se de introduzir todos os hidratos de carbono (carbs) que comeu. Caso contra contrário os desvios de hidratos serão erroneamente identificados como uma variação da sensibilidade !!Média ponderada da SensibilidadeOKCancelarNem todos perfis foram carregados!Valores não guardados!
- Activar transmissões para outras aplicações (como xDrip). Não habilite se tiver mais de uma instância de AAPS ou NSClient instalado!
+ Activar transmissões para outras aplicações (como xDrip). Não habilite se tiver mais de uma instância de AAPS ou ClienteNS instalado!Activar partilha local.ACTIVIDADE & FEEDBACKHIDRATOS & BÓLUS
@@ -670,7 +523,6 @@
BOMBADuração [min]OpenAPS SMB
- SMBActivar UAMActivar SMBUse Super Micro Boluses em vez de basal temp para uma acção mais rápida
@@ -682,23 +534,7 @@
Ultra-Rapid OrefDuração de Acção da Insulina (DIA) de %1$f demasiado curto - corrigido para %2$f!Activar perfil
- DataINVÁLIDO
- Aguardando emparelhamento na bomba
- Emparelhamento OK
- Tempo emparelhamento excedido
- A emparelhar
- Nenhum dispositivo encontrado até agora
- Reservatório vazio
- Alerta medição da glicemia
- Nível de insulina restante
- DanaRS
- Dana
- Bomba seleccionada
- Emparelhar nova bomba
- Velocidade Bólus
- Coloque o incremento da basal em 0.01 U/h
- Número de sériePercentagemAlteração TurnoAlvo-Temp padrão
@@ -708,32 +544,18 @@
alvo actividadeduração hipoalvo hipo
- Purge/Encha
- Procurando o status do bolus estendido
- A obter estado bólus
- A obter o status da basal temporária
- A obter as definições da bomba
- A obter hora bombareutilizarControles do RelógioDefinir Alvo-Temp and inserir Tratamentos do relógio.
- Ligação expirouAlimentosg
- m
- h
- d]]>kJEnPrGor]]>
- A aguardar o final do bolus. Restam %1$d sec.
- A processar acção
- A iniciar administração de bolusComando será executado agora
- Controlador bomba corrigidoBomba inacessívelLeituras Glic. perdidasUsar as notificações do sistema para alertas e notificações
@@ -741,14 +563,12 @@
Alerta caso nenhuma glicemia seja recebidaAlerta caso não seja possivel alcançar a bombaLimite para bomba inacessível [min]
+ Alertar se forem necessários HidratosAlarme UrgenteINFO
- Bluetooth
- Watchdog BT
- Desliga o bluetooth do telefone durante um segundo se nenhuma conexão com bomba for possível. Este parâmetro pode ser util em alguns telefones, onde a pilha bluetooth congela.Aplicação Eversense (com patch)Enviar dados Glic. para NS
- Configurações de upload de BG
+ Configurações de upload de GlicMostrar Delta detalhoMostrar delta com mais um ponto decimalCom que frequência em min os SMBs serão dados
@@ -756,14 +576,11 @@
Limite de minutos de basal para SMBUAM SMB máx minutosMax minutos de basal para limitar SMB para UAM
- Limite Sugestão de Hidratos
- Quando Hidratos são sugeridos, quantos hidratos irá solicitar uma notificação
- Firmware bomba não suportado
+ Mínimo De Hidratos Necessários Para Sugestão
+ Mínimo de gramas de hidratos de carbono ara exibir um alerta de sugestão de hidratos. As sugestões de hidratos abaixo deste número não activarão uma notificação.Enviar dados Glic. para xDrip+Seleccionar 640g/Eversense como fonte no xDrip+
- Glic NSCliente
- Valor da basal alterado para o valor mínimo suportado: %1$s
- Valor da basal alterado para o valor máximo suportado: %1$s
+ Glic ClienteNSCálculos GlicCálculo de Bólus IOBCálculo de Basal IOB
@@ -777,13 +594,11 @@
Cálculo alvo temporárioLoop activadoAPS seleccionado
- NSCLiente tem permissão de escrita
+ ClienteNS tem permissão de escritaModo fechado ativadoIOB máxima definida correctamenteGlicemia disponivel desde a fonte selecionada
- Valores das basais não definidos por horas: %1$s
- Perfil inválido: %1$s
- A programar a bomba para injectar o bolus
+ A programar bomba para administrar bólusActualizarEstadoActividade
@@ -793,17 +608,16 @@
Suspenso devido ao erroSuspenso pelo utilizadorA correr
- Cancelar TBR
- A definir TBR (%1$d%% / %2$d min)
+ A Cancelar DBT
+ A definir DBT (%1$d%% / %2$d min)Injectando (%1$.1f U)A actualizarOperação solicitada não suportada pela bomba
- Ultilização nao segura: bolus estendudos ou multionda estão activos. Modo do loop foi alterado para apenas suspender em limite inferior por 6h. Apenas são suportados bolus normais em modo loop
+ Utilização não segura: bólus prolongados ou multi-onda estão activos. Modo do loop foi alterado para apenas suspender em limite inferior por 6h. Apenas são suportados bólus normais em modo loopUtilização insegura: A bomba utiliza uma perfil de basal diferente do primeiro. O loop foi desactivado. Seleccionar o primeiro perfil da bomba e reinicie.Um bolus com o mesmo valor foi introduzido nos 2 últimos minutos. Para evitar introduções acidentais e segurança contra bugs existentes o bolus foi cancelado.AgoraA ler histórico bomba
- Histórico da BombaA definir perfil basalNível cartucho da bomba está baixoBateria da bomba está fraca
@@ -814,17 +628,16 @@
Necesário actualizar relógio da bombaAvisoBasal Temporária CANCELADA. O aviso foi confirmado
- Não foi possivel establecer comunicação com a bomba. Nenhum bolus foi administrado.
- Administração de bolus falhou. Nenhum bolus parece ter sido administrado. Para confirmar, por favor verifique a bomba de forma a evitar uma dupla administração de bolus e programe novamente o bolus. De forma a evitar qualquer problema, os bolus não são reprogramados de forma automatica.
- Apenas %1$.2f U do bolus de %2$.2f U foi injectado de devido a um erro. Por favor verifique a bomba e tome as medidas necessárias.
- A injeção do bolus e a verificação do histórico da bomba falharam, por favor verifique a bomba. Se o bolus foi injetado será adicionado ao histórico de tratamentos durante a próxima conexão com a bomba.
+ Não foi possível estabelecer comunicação com a bomba. Nenhum bólus foi administrado
+ Administração de bólus falhou. Nenhum bólus parece ter sido administrado. Para confirmar, por favor verifique a bomba de forma a evitar uma dupla administração de bólus e programe novamente o bólus. De forma a evitar qualquer problema, os bólus não são reprogramados de forma automática.
+ Apenas %1$.2f U do bólus de %2$.2f U foi administrado devido a um erro. Por favor verifique a bomba e tome as medidas necessárias.
+ A administrar o bólus e a verificação do histórico da bomba falharam, por favor verifique a bomba. Se o bólus foi administrado será adicionado ao histórico de tratamentos durante a próxima ligação com a bomba.Não há insulina suficiente no reservatório para bolus
- Erro na entrega Bólus Estendido
+ Erro na administração Bólus ProlongadoVisãoatrás
- %1$.2f h
- %1$d mins
- %1$dm
+ Definir basais temporárias neutras
+ Se activado, ele irá cancelar basal temporária antes do final de cada hora. Este método pode ajudar a parar o sinal sonoro/vibração em algumas bombas, de hora em hora.SMB sempre activadoSMB sempre activo independentemente dos bolus. Possível apenas quando o medidor tive um bom filtro de dados como o G5Activar SMB após hidratos
@@ -834,9 +647,7 @@
SMB activo com valores alvo temporáriosSMB activo quando há valor alvo temporário activo (exercício, etc)SMB activo com alvos temporários elevados
- SMB activo com alvos temporários elevados em curso (exercicio)
- Permitir basal temp correr
- Silêncio
+ Activar SMB quando há alvo temporário elevado activo (exercício, acima de 100 mg/dl ou 5,5 mmol/l)InsulinaHidratosBotões
@@ -846,11 +657,17 @@
Unidades de insulina a adicionar quando o botão é premidoNão foi possível lançar aplicação de monitorização contínua. Por favor verifique que está instalada.CGM
+ Ignorar 5m
+ Ignorar 15m
+ Ignorar 30m
+ reqNavegador do históricoNotificar no SMBMostrar SMB no relogio como bolus normal.Criar anúncios dos erros
+ Criar anúncios a partir dos alertas de hidratos necessáriosCriar um anúncio no Nightscout para caixas de diálogo de erro e alertas locais (também podem ser visualizados em Careportal sob tratamentos)
+ Criar anúncios Nightscout para alertas de hidratos necessáriosMostrar a predições na face do relogio.PrevisãoEscolha de Dados
@@ -864,7 +681,7 @@
Sem bólus, registar apenasCategoriaSubcategoria
- O bolus apenas será gravado
+ Bólus será registado apenas (não administrado pela bomba)Preencher glicemias em falta com NSSMB definido pela bombaActividade
@@ -878,10 +695,9 @@
A correr a versão dev. O Loop fechado está desabilitado.Modo engenheiro activadoModo de engenharia não habilitado e não no na versão mestra
- %1$.2f U/hA ler perfil basal
- O histórico da bomba foi alterado após o cálculo do bolo ter sido realizado. O bolus não foi injectado. Por favor, verifique se bolus ainda é necessário.
- O bolus foi injectado, mas não foi possível adicionar ao histórico. Isto é possível se dois bolus do mesmo valor baixo foram administrados nos últimos dois minutos. Por favor verifique o histórico da bomba e use o Careportal para adicionar os dados em falta caso necessário. Cuidado para não adicionar dados com o mesmo valor no mesmo minuto.
+ O histórico da bomba foi alterado após o cálculo do bolo ter sido realizado. O bólus não foi administrado. Por favor, verifique se bólus ainda é necessário.
+ O bólus foi administrado, mas não foi possível adicionar ao histórico. Isto é possível se dois bólus do mesmo valor baixo foram administrados nos últimos dois minutos. Por favor verifique o histórico da bomba e use o Careportal para adicionar os dados em falta caso necessário. Cuidado para não adicionar dados com o mesmo valor no mesmo minuto.A rejeitar a temporal alta uma vez que o cálculo não considerou as mudanças do histórico da bombaA actualizar estado bombaO rácio da basal foi alterado na bomba e vai ser actualizado em breve
@@ -890,10 +706,10 @@
Bólus múltiplos, com a mesma quantidade e no mesmo minuto acabaram de ser importados. Apenas um registo pôde ser adicionado aos tratamentos. Por favor confirma na bomba e adicione o registo de bólus manualmente, utilizando o separador do Careportal. Tenha em atenção que deve criar um bólus com um tempo em que nã oexistem outros registos de bólus.\n\nhttp://www.androidaps.org\nhttp://www.androidaps.de (de)\n\nfacebook:\nhttp://facebook.androidaps.org\nhttp://facebook.androidaps.de (de)O último bólus tem mais de 24 horas ou está no futuro. Por favor verifique se a data está definida correctamente na bomba.
- Hora/data da entrega do bólus na bomba parece errado, IOB aparentemente está incorrecto. Verifique hora/data na bomba.
+ Hora/data da administração do bólus na bomba parece errado, IOB aparentemente está incorrecto. Verifique hora/data na bomba.TrocaPerfil em falta. Por favor faça uma troca de perfil ou pressione \"Activar Perfil\" em PerfilLocal.Contagem Bólus
- Contagem TBR
+ Contagem DBTA bomba não é capaz de basais temporáriasNenhum valor de basal temporaria valido foi lido da bombaLoop fecchado disabilitado nas preferências
@@ -901,16 +717,11 @@
SMB desactivado nas configuraçõesUAM desactivado nas configuraçõesUAM desactivado porque confia no plugin de sensibilidade Oref1
- A basal max está limitada a %1$.2f U/h por %2$s
- limite bomba
- deve ser valor positivomultiplicador de basal máxmultiplicador de basal máx diária
- Um bolus foi injectado nos últimos 3 minutos, saltando SMB
+ Um bólus foi administrado nos últimos 3 minutos, a ignorar SMBBasal correctamente definida
- A limitar rácio percentagem máx para %1$d%% porque %2$s
- A limitar bólus para %1$.1f U porque %2$s
- A limitar bólus estendido para %1$.1f U porque %2$s
+ A limitar bólus prolongado para %1$.1f U porque %2$sA limitar IOB máx. para %1$.1f U porque %2$sA limitar hidratos para %1$d g porque %2$sA limitar IOB para %1$.1f U porque %2$s
@@ -918,13 +729,12 @@
limite rígidouso não seguroErro na leitura de estado
- Registar mudança de sítio
+ Registar mudança local bombaRegistar mudança cartuchoSMB sempre e depois dos hidratos desactivado por fonte da Glicemia activa não suportar filtro avançadoSMB não permitido no modo open loopAlimentosrepor
- À espera da sincronização da hora (%1$d sec)Desligado (%1$d m)Máximo total IOB OpenAPS não pode superar [U]Este valor é chamado de Max IOB em contexto de OpenAPS\nOpenAPS não adicionará mais insulina se o IOB atual for maior que este valor
@@ -940,7 +750,6 @@
Assistente de ConfiguraçãoTERMINARSelecione o seu Idioma
- Pedido: %1$.2fU Entregue: %2$.2fU Código Erro: %3$sPrimeiro incremento insulinaSegundo incremento insulinaTerceiro incremento insulina
@@ -962,14 +771,13 @@
n/aTipo da Bomba VirtualDefinição da Bomba
- Bólus: Passo=%1$s\nBólus Estendido: [Passo=%2$s, Duração=%3$smin -%4$sh] \nBasal: Passo=%5$s\ nTBR: %6$s (por %7$s), Duração=%8$smin-%9$sh\n%10$s
- * Somente valores discretos nos intervalos são suportados como granularidade para basal/bolus na bomba virtual.
+ Bólus: Passo=%1$s\nBólus Prolongado: [Passo=%2$s, Duração=%3$smin -%4$sh] \nBasal: Passo=%5$s\ nDBT: %6$s (por %7$s), Duração=%8$smin-%9$sh\n%10$sPreenchimentoauto GlicemiaDefinições do Assistente RápidoResultado cálculos incluídos no Assistente:
- Mostrar Configurações
- Configurações gerais
- Activar NSCliente
+ Configurações Ecrã
+ Configurações Gerais
+ Activar ClienteNSBem-vindo ao assistente de configuração. Vai guiá-lo(a) através do processo de instalação\nConfigurações da bombaLer estado
@@ -980,7 +788,7 @@
Configurar plugin SensibilidadePlugin de Sensibilidade é usado para detecção de sensibilidade e cálculos COB. Para mais info visite:https://github.com/MilosKozak/AndroidAPS/wiki/Sensitivity-detection-and-COB
- NSCliente gere a ligação ao Nightscout. Pode saltar esta parte mas não será possível passar os objectivos até que o configure.
+ ClienteNS gere a ligação ao Nightscout. Pode saltar esta parte mas não será possível passar os objectivos até que o configure.Lembre-se: novos perfis de insulina requerem diâmetro de pelo menos 5h. DIA 5–6h no novo perfil é igual ao diâmetro 3h nos antigos perfis de insulina.Configure a fonte das glicemiasPor favor seleccione a fonte do perfil. Se o paciente é uma criança deverá utilizar perfil NS. Se ninguém o está a seguir no Nightscout provavelmente preferirá um perfil Local. Lembre-se que apenas está a escolher a fonte de perfil. Para o utilizar terá que o activar executando \"Troca Perfil\"
@@ -989,27 +797,11 @@
PermissãoPedir permissãoAplicação precisa de permissão de janela do sistema para notificações
- Aplicação requer permissão de localização para pesquisa BT
- Aplicação necessita da permissão de armazenamento para ser capaz de armazenar ficheiros de registo
+ Aplicação necessita de permissão de localização para pesquisa Bluetooth e identificação Wi-Fi
+ Aplicação precisa da permissão de armazenamento para poder armazenar ficheiros de registo e exportar configuraçõesPedidoConfigurar plugin InsulinaSair
- Opções do utilizador
- Formato hora
- Botão rolamento
- Sinal ao pressionar botão
- Alarme
- Som
- Vibrar
- Ambos
- LCD na hora [segundos]
- Luz de fundo na hora [segundos]
- Unidades de Glucose
- Desligar [horas]
- Reservatório baixo [Unidades]
- Gravar opções para a bomba
- Ligado
- DesligadoAbrir a navegaçãoFechar a navegaçãoPreferências plugin
@@ -1029,8 +821,6 @@
Quando a sensibilidade é detectada, aumenta o alvo glicoseConfiguração da bomba inválida, verifique a documentação e se o menu de informações rápidas está nomeado de QUICK INFO utilizando o programa de configuração 360.Personalizado
- Grande diferença Horária
- Grande diferença horária:\n A diferença de hora para a bomba é superior a 1.5h.\nPor favor ajuste manualmente a hora na bomba e certifique-se que a leitura do histórico da bomba não provoca problemas.\nSe possível apague o histórico da bomba antes de modificar a hora ou desabilite o loop durante toda a duração de acção da insulina (DIA) depois da ultima entrada no histórico da bomba ou mais um DIA desde o momento da correcção, qual delas seja a que mantenha o loop aberto durante mais tempo.Limpar AndroidAPS iniciadoConfigurações encontradasAtenção: Se conectar à sua bomba física e activar o perfil, o AndroidAPS irá copiar as definições desse perfil para as definições da bomba, apagando o memorizado na bomba. Por favor verifique que o que preencheu no perfil da app tem os mesmos valores que estão na bomba. Em caso contrario pressione imediatamente cancelar e corrija antes de voltar a ligar à bomba.
@@ -1049,43 +839,40 @@
Sem dados Autosens disponíveisDefinições de registoRepor definições por defeito
- Erro de funcionamento do NSCliente. Pondere reiniciar o NS e NSCliente.
+ Erro de funcionamento do ClienteNS. Pondere reiniciar o NS e ClienteNS.ASDisponível %1$s disponívelFuso horárioModo APS preferidoTotalCalc
- CumprimentoEnviar os ficheiros de registo do dia de hoje para os programadores. Situação inesperada.
- Transgressão Bólus máx
- Erro no comando
- Erro velocidade
- Transgressão limite insulinaPedido de mudança mínima [%]A app mostrará um pedido de alteração apenas se a mudança for superior a este valor em %. O valor padrão é 20%
- Emparelhe a sua bomba com o seu telefone!A pesquisar dispositivos…
- Por favor aguarde…Emparelhamento concluídoOs códigos exibidos neste dispositivo e na sua bomba correspondem?Emparelhamento InsightAccu-Chek Insight
- %1$.2fU / %2$.2fU entregue
+ %1$.2fU / %2$.2fU administado%1$s: %2$sTubo mudadoHora da bomba actualizadaConfirmarSilêncioAlerta da Bomba
- Registar alterações de local
+ Registar mudanças de localNúmero de unidades do reservatório alteradasRegistar alterações de tuboRegistar mudanças de bateriaAlterações do modo de funcionamento de registoAlertas de registo
- Ativar a emulação TBR
+ Activar a emulação DBTUsar bólus prolongados em vez de basais temporárias para contornar o limite de 250%%
+ Desactivar vibrações na entrega manual de bólus
+ Para bólus e bólus estendidos (só disponível com o firmware Insight 3.x)
+ Desactivar vibrações na entrega automática de bólus
+ Para SMB e Basal Temp com emulação DBT (só disponível com firmware Insight 3.x)Atraso de desconexão [s]Número de sérieLançar versão de software
@@ -1112,17 +899,17 @@
IniciadoParado%1$d%% para %2$d / %3$d min
- Bólus estendido
+ Bólus ProlongadoBólus Multi-Onda%1$.2f / %2$.2f U por %3$d min
- Desativar notificação do fim da basal temporária\n(configuração da bomba)
- Desativar notificação do fim da basal temporária\n(configuração da bomba)
+ Activar notificação do fim da basal temporária\n(configuração da bomba)
+ Desactivar notificação do fim da basal temporária\n(configuração da bomba)ActualizarIntegração de bomba para bombas Accu-Chek InsightNão inseridoÚltima ligação:%1$d minutos atrás
- Basal temporária: %1$d%% para %2$d / %3$d minutos
- Estendido: %1$.2f / %2$.2f U por %3$d min
+ DBT: %1$d%% para %2$d / %3$d minutos
+ Prolongado: %1$.2f / %2$.2f U por %3$d minMultionda: %1$.2f / %2$.2f U por %3$d minTDD: %1$.2fReser:%1$.2fU
@@ -1155,7 +942,6 @@
é igual ou maior queé maior quenão está disponível
- desconhecidoGlicose não está disponívelGlicose %1$s %2$.0f %3$sGlicose %1$s %2$.1f %3$s
@@ -1172,27 +958,14 @@
AutoAutomatização== ∑ %1$s U
- U/h
- g/U
- /URegistar mudança de sensor para NSCriar evento \"Mudança de Sensor\" automaticamente no NS aquando do início do sensorTomato (MiaoMiao)Tomato
- segundo
- minuto
- hora
- dia
- semana
- segundos
- minutos
- horas
- dias
- semanasNome de utilizador no Tidepool, normalmente seu endereço de e-mailNome de Utilizador
- Palavra-passe da conta Tidepool
- Palavra-passe
+ Senha da conta Tidepool
+ Senha LoginTeste de Conta TidepoolSe activado, envio será para https://int-app.tidepool.org em vez do habitual https://app.tidepool.org/Usar servidores de integração (teste)
@@ -1215,7 +988,6 @@
Tempo recorrenteTodoNunca
- %1$dminsCondição:Acção:IOB [U]:
@@ -1229,9 +1001,8 @@
Detectamos que está a correr uma versão inválida. Loop desactivado!versão antigaversão muito antiga
- Nova versão para pelo menos %1$d dias disponíveis! Retorno a LGS após %2$d dias, o loop será desactivado após %3$d dias
+ Nova versão para pelo menos %1$d dias disponíveis! Retorno a SGB após %2$d dias, o loop será desactivado após %3$d dias2h
- %1$.2fUApp Dexcom (com patch)DXCMReceber valores da Glicemia da app Dexcom (com patch).
@@ -1276,141 +1047,6 @@
Gatilhos:REMOVERPrecondições:
-
- Operação não suportada pela Bomba e/ou Controlador.
- Operação não suportada ainda pela Bomba.
-
- Integração de Bombas Medtronic, requer o dispositivo RileyLink e o Modelo de Bomba específico
-
- Número de série da Bomba
- Tipo de Bomba
- Frequência da Bomba
- Atraso antes que o Bólus seja iniciado (s)
- Max Bolus na Bomba (U)
- Máx Basal na Bomba (U/h)
- Codificação Medtronic
- EUA & Canadá (916 MHz)
- Em todo o Mundo (868 Mhz)
- Codificação de Software 4b6b
- Codificação de Hardware 4b6b
- Acordar e Configurar
- Limpar Bloco de Bólus
- Redefinir configuração RileyLink
- Tipo de Bateria (Visão Detalhada)
- Não seleccionado (Visão simples)
- Alcalina (Visão estendida)
- Lithium (visão estendida)
- NiZn (Vista Estendida)
- NiMH (Visualização estendida)
- Depuração de Bólus/Tratamentos
-
- PROCURAR
- PARAR
- Seleccionado
- Procura RileyLink
- Bluetooth de energia baixa (LE) não suportado.
- Bluetooth não está activado.
- Localização Não Está Activada
- Para que a procura de Bluetooth funcione em aparelhos mais recentes, a localização tem que ser activada. A app não rastreia a sua localização e pode ser desativada depois de um emparelhamento bem sucedido.
- Activar
- Não
- A procurar
- Procura terminada
- Erro de Procura: %1$d
-
- Definições
- Histórico
- Estado do RileyLink
- Estado da Bomba
- Definições do RileyLink
- RileyLink
- Endereço Configurado
- Dispositivo Ligado
- Estado de Ligação
- Erro de Ligação
- Dispositivo
- Tipo de dispositivo
- Modelo do dispositivo
- Frequência da última utilização
- Último contacto do dispositivo
- Firmware RL
-
- A iniciar o Bluetooth...
- Erro de Bluetooth
- Bluetooth Pronto
- Não Iniciado
- Inicialização do RileyLink…
- Erro no RileyLink
- A ajustar RileyLink e a Bomba
- Problema ao ligar à Bomba
- Ligado
-
- Dispositivo não é RileyLink
- RileyLink inacessível
- Bluetooth desactivado
- Nenhum Adaptador Bluetooth
- TuneUp Falhou
- Bomba inacessível
- Pod inacessível
- Não definido
-
- Bomba Medtronic
- Omnipod
-
- Erros
- Núm. Série não definido.
- Núm. Série inválido.
- Tipo de Bomba não definido.
- Tipo de Bomba não suportado.
- Frequência de Bomba não definida.
- Frequência da Bomba não suportada.
- Endereço RileyLink inválido.
- A bomba detectada não é a mesma que a bomba configurada.
- A configuração de perfis/padrões da basal não éstá atcivada na bomba. Active-a na bomba.
- Perfil Basal definido na Bomba está incorrecto (deve ser STD).
- Tipo de DBT errado definido na bomba (deve ser Absoluto).
- Máx. Basal definida na Bomba está incorreta (deve ser %1$.2f).
- Máx. Basal definido errado na Bomba (deve ser %1$.2f).
- Operação não é possível.\n\n Você precisa configurar a Bomba Medtronic antes de poder usar esta operação.
- Solicitada uma alteração de tempo de mais de 24h.
-
- Basais
- Configurações
- Notificações
- Estatísticas
- Desconhecido
- Tudo
- Histórico da Bomba Medtronic
-
- Nunca contactado
- A acordar
- Erro com comunicação
- Tempo limite para comunicação
- Bomba inacessível
- Configuração inválida
- Activo
- A dormir
-
- Cancelou o Bolus, depois de ele já ter sido definido na Bomba. Uma vez que a Bomba Medtronic não suporta cancelamento, precisará de cancelar manualmente. Coloque a Bomba no modo de Suspender e depois Retome (se ainda quiser cancelar). A aplicação irá obter as alterações, na próxima actualização (em menos de 5 minutos).
- Não foi possível ler a TBR actual.
- Não foi possível cancelar a TBR atual. A parar a operação.
- Falhou Definir Perfil devido aos seguintes padrões, tem uma taxa de basal muito grande: %1$s
- O bólus não pôde ser entregue.
- Bólus não foi entregue, porque o quantidade de insulina disponível (%1$.2f) é menor que o bólus necessário (%2$.2f).
- TBR não pode ser definida.
- Não foi possível cancelar a TBR atual.
- Perfil Basal não pôde ser definido.
- Perfil Basal é o mesmo, então não será definido novamente.
- Obter Histórico - Página %1$d (%2$d/16)
- Obter Histórico - Página %1$d
- Obter Hora da Bomba
- Obter Definições
- Obter Modelo de Bomba
- Obter Perfil Basal
- Definir Perfil Basal
- Obter Basal Temporária
- Definir Basal Temporária
- Definir BólusAlterar perfil paraAlterar perfil para %1$sÚltima ligação à bomba
@@ -1422,15 +1058,13 @@
%2$+.2fU]]>Restrição de Bolus aplicada: %2$.2fU para %3$.2fU]]>!!!!! Absorção lenta de hidratos detectada: %2$d%% do tempo. Verifique o seu cálculo. COB pode estar sobreestimado, assim mais insulina pode ser dada !!!]]>
- %1$.0f / %2$d U
- Entregue esta parte do resultado do assistente de bólus [%]
- Assistente de bólus executa o cálculo, mas apenas esta parte da insulina calculada é entregue. Útil com o algoritmo SMB.
+ Administrar esta parte do resultado do assistente de bólus [%]
+ Assistente de bólus executa o cálculo, mas apenas esta parte da insulina calculada é administada. Útil com o algoritmo SMB.A carregar ...SilenciarIntervalo de tempoO tempo está entre %1$s e %2$sEntre
- FecharAumentar o valor máximo de basal porque a configuração é inferior à sua basal máxima no perfilCorpo da mensagem inválido%1$s FSI: %2$.1f
@@ -1448,8 +1082,8 @@
DesligadoLimpar terminadoLimpar iniciado
- Detecção de tempoDeseja reiniciar o objectivo? Pode perder seu progresso.
+ Alterar Hora e/ou Fuso Horário na BombaNenhuma bomba seleccionadaSeleccione as unidades em que deseja exibir os valoresCarregar as alterações do perfil local para NS
@@ -1460,13 +1094,13 @@
CloneGuardar ou repor as alterações actuais primeiroEliminar perfil actual?
- Criar novo perfil local a partir desta troca de perfil?
+ Criar novo perfil local a partir deste perfil?Nome do perfil contém pontos.\nIsso não é suportado pelo NS.\nPerfil não é enviado para o NS.Valor mais baixo da área de intervalo (apenas exibição)Valor mais alto da área de intervalo (apenas exibição)ReordenarIdade:
- Peso:
+ Peso:ID:EnviarPerfil mais comum:
@@ -1474,10 +1108,9 @@
QuestionárioEntrada de idade inválidaEntrada de peso inválida
- %1$s: ∑: %2$.2f Bol: %3$.2f Bas: %4$.2f]]>
+ Entrada % inválida%1$s: Hipo: %2$02d%% Dentro: %3$02d%% Hiper: %4$02d%%]]>Média
- TDDTIRMonitor de actividadeQuer reiniciar as estatísticas de actividade?
@@ -1487,16 +1120,12 @@
GLICFerramentasMostrar Localização
- Erro
- 12h
- 24hEvento de automaçãoJá definido
- MensagemLimpar fila? Todos os dados na fila serão perdidos!
- O uso do Bólus Estendido irá parar o modo Closed Loop no tempo do bólus estendido. Quer realmente isso?
- Closed Loop desabilitado por causa da execução do Bólus Estendido
- BE
+ O uso do Bólus Prolongado irá parar o modo Closed Loop no tempo do bólus prolongado. Quer realmente isso?
+ Closed Loop desabilitado por causa da execução do Bólus Prolongado
+ BP\"VerificadorTelefone\"Menu do GráficoAS
@@ -1508,9 +1137,9 @@
a partir da app Autenticador para: %1$sActivar Autenticador
- Autenticar comandos usando Uma-Password-Única que sejam geradas pelo Google Authenticator ou app 2FA similar.
+ Autenticar comandos usando Uma-Senha-Única que sejam geradas pelo Google Authenticator ou app 2FA similar.PIN adicional no token final
- Dígitos adicionais que devem ser memorizados e colados no final de cada Uma-Password-Única que seja gerada
+ Dígitos adicionais que devem ser memorizados e colados no final de cada Uma-Senha-Única que seja geradaConfiguração do AutenticadorOTP para verificar:Repor Autenticadores
@@ -1519,7 +1148,7 @@
Nova Chave do Autenticador foi gerada! Por favor, use o QRCode actualizado para os autenticadores.1. Instalar Autenticador2. Pesquise o código para configurar os códigos OTP do AndroidAPS
- 3. Teste Uma-Password-Única
+ 3. Testar Uma-Senha-ÚnicaRepor AutenticadoresInstalar uma app Autenticador que suporte Tokens RFC 6238 TOTP em cada telefone seguidor. Populares aplicativos gratuitos são:\n • Authy\n • o Google Authenticator\n • LastPass Autenticador\n • FreeOTP AutenticadorNÃO PARTILHE este código online!\nUse-o apenas para a instalação da app Autenticador nos telefones seguidores.
@@ -1530,7 +1159,142 @@
Desvio de inclinaçãoFalha na autorizaçãoInsulina absoluta
- Password Mestre é usada para encriptação da cópia de segurança e substituir segurança na aplicação. Lembre-se dela ou guarde-a em um lugar seguro.
- As passwords não coincidem
- Password Mestre actual
+ Senha Mestre é usada para encriptação da cópia de segurança e substituir segurança na aplicação. Lembre-se dela ou guarde-a em um lugar seguro.
+ As senhas não coincidem
+ Senha Mestre actual
+ Luzes de Estado
+ Copiar definições do NS
+ Copiar definições do NS (se existir)?
+ Tema Gráfico Original
+ Os botões são sempre exibidos na parte inferior do ecrã
+ Mostrador Grande
+ Tema gráfico
+
+ Nunca contactado
+ A acordar
+ Erro com comunicação
+ Tempo limite para comunicação
+ Bomba inacessível
+ Configuração inválida
+ Activo
+ A dormir
+
+
+ Integração de bomba para Omnipod, requer RileyLink (com pelo menos firmware 2.0) dispositivo.
+
+ Sinal Bólus Activado
+ Sinal Basal Activado
+ Sinal SMB Activado
+ Sinal DBT Activado
+ Opções de Depuração do Pod habilitadas
+ Detecção de DST/Fuso Horário Activado
+
+ Gestão Pod
+ Estado do Pod
+ %1$.2f U restante
+ Mais de 50 U
+ Endereço do Pod
+ Pod Expira
+ Sem info
+ Nenhum Pod ligado
+ Não inicializado
+ Alertas Pod Activos
+ Reco Alertas
+
+ Omnipod (433.91 MHz)
+
+ A operação não é possível.\n\nPrecisa configurar o Omnipod primeiro, antes de pode usar esta operação.
+ A operação não é possível.\n\n Precisa de esperar alguns minutos, até que AAPS tente definir o perfil para a primeira vez.
+ PodInitActionType Ilegal: %1$s
+ Nenhum Pod Activo.
+ A verificação do comando falhou.
+ Ocorreu um erro inesperado. Por favor reporte! (digite: %1$s).
+ Falha na comunicação: foram recebidos parâmetros de entrada inválidos.
+ Falha na comunicação: tempo limite.
+ Falha na comunicação: ocorreu um erro inesperado. Por favor, reporte!
+ Falha na comunicação: mensagem de falha de verificação de integridade.
+ Falha na comunicação: recebeu um pacote inválido do Pod.
+ Falha na comunicação: o Pod está em um estado errado.
+ Falha na comunicação: recebeu uma resposta inválida do Pod.
+ Falha na comunicação: recebeu uma mensagem com número de sequência inválido do Pod.
+ Falha na comunicação: recebeu uma mensagem com um endereço inválido do Pod.
+ Falha na comunicação: falha ao descodificar a mensagem do Pod.
+ Falha na comunicação: nonce resync falhou.
+ Falha na comunicação: nonce fora de sincronização.
+ Falha na comunicação: não há dados suficientes recebidos do Pod.
+ Uma falha de Pod (%1$03d %2$s) foi detectada. Por favor, desactive o Pod e inicie um novo.
+ Falha na comunicação: o Pod devolveu uma resposta de erro.
+
+ Gestão Pod
+ Iniciar Pod
+ Desactivar Pod
+ Repor Pod
+ Histórico do Pod
+ Definir Bólus
+ Cancelar Bólus
+ Definir Basal Temporária
+ Cancelar Basal Temporária (Forçado pelo controlador)
+ Cancelar Basal Temporária (Forçado pelo utilizador)
+ Definir Programação Basal
+ Obter Status do Pod
+ Obter Pod Info
+ Definir Hora
+ Configurar Alertas
+ Reconhecer Alertas
+ Suspender Administração
+ Retomar Administração
+ Entrada Desconhecida
+ %1$.1f U
+ %1$.1f U, HC=%2$.1f g
+ Taxa: %1$.1f U, Duração: %2$d min
+ Se pressionar OK, o estado do Pod vai ser forçado a redefinir e você não será capaz de comunicar mais com o Pod. Faça isso somente se você não pode comunicar mais com o Pod. Se ainda pode comunicar com o Pod, por favor, use o Desactivar Pod opção.
+ Histórico do Pod não disponível no momento.
+ Encher o Pod
+ \nPreencher o novo Pod com insulina suficiente para 3 dias.\n\nOuvir dois sinais sonoros a partir do Pod durante o processo de enchimento. Isso indica que a quantidade mínima de 85U foi inserida. Certifique-se de esvaziar completamente a seringa, mesmo depois de ouvir dois sinais sonoros.\n\nDepois de preencher o Pod, por favor, pressione Próximo.\n\nNota: não remova a tampa da agulha do Pod neste momento.
+ A Purgar
+ A tentar emparelhar com o novo Pod e purgá-lo.\n\nQuando todos os itens forem verificados, pode pressionar Próximo.\n\nNota: por favor, mantenha o Pod muito perto do RileyLink neste momento.
+ Anexar o Pod
+ \nPrepare o local de infusão. Remova a tampa da agulha do Pod e o adesivo e fixe o Pod no local de infusão.\n\nSe a canula sair, por favor, pressione Cancelar e descarte o seu Pod.\n\nPressione Próximo para inserir a canula e começar a administração da basal.
+ A inserir canula
+ A tentar definir um plano da basal inicial e inserir canula.\n\nQuando todos os itens estiverem verificados, pode pressionar Próximo.
+ Info Pod
+ \nO Pod está agora activo.\n\nO seu plano de basal foi programado e a canula foi inserida.\n\nPor favor, verifique se a canula foi inserida correctamente e substitua o seu Pod se você se sente que não.
+ Desactivar Pod
+ \nPressione Próximo para desactivar o Pod.\n\nNota: Isto irá suspender toda a administração de insulina e desactivar o Pod.
+ A Desactivar Pod
+ A desactivar o Pod.\n\nQuando todos os itens forem verificados, pode pressionar Próximo.\n\nNota: Se desactivar falhar continuamente, por favor, pressione Cancelar e use o Repor Pod opção para forçar a repor o estado do Pod.
+ Pod desactivado.\n\nPor favor, remova o Pod do seu corpo e descarte-o.
+ Emparelhar Pod
+ Purgar Pod
+ Enchimento de Canula
+ Definir Perfil Basal
+ Cancelar Administração
+ Desactivar Pod
+
+
+ Integração da Bomba para Omnipod Dash.
+ Lembrete Concluir Emparelhamento
+ Lembrete Terminar Configuração
+ Pod vai expirar em breve
+ Pod vai expirar em breve
+ Encerramento iminente
+ Reservatório baixo
+ Alerta desconhecido
+ Pode ter falhado ao definir perfil da basal. A administração pode estar suspensa! Por favor, actualize o estado do Pod.
+ Pode ter falhado ao definir basal temporária. Se houve uma basal temporária já em execução, pode ter sido cancelada! Por favor, actualize o estado do Pod.
+ Pode ter falhado ao definir a hora. A administração pode estar suspensa! Por favor, actualize o estado do Pod.
+ Não é possível verificar se o bólus foi bem-sucedido. Por favor, verifique se o Pod está administrar ou cancelar o bólus.
+ Estatísticas RL
+ Registo de Pulse
+ Comparar Perfis
+ Assistente de Perfil
+ Perfil Padrão
+ Perfil Actual
+ Perfil Disponível
+ Tipo de Perfil
+ Idade: %1$.0f TDD: %2$.0f U
+ Idade: %1$.0f TDD: %2$.0f U %3$d%%
+ Idade: %1$.0f Peso: %2$.0f kg
+ % de basal
+ Perfil Padrão DPV
diff --git a/app/src/main/res/values-ro-rRO/exam.xml b/app/src/main/res/values-ro-rRO/exam.xml
index 90db41d280..be73b91f50 100644
--- a/app/src/main/res/values-ro-rRO/exam.xml
+++ b/app/src/main/res/values-ro-rRO/exam.xml
@@ -1,7 +1,7 @@
Care afirmații despre DIA sunt adevărate?
- Subiect: Durata Acțiunii Insulinei
+ Subiect: Durata de acțiune a insulineiValoarea minimă este de 3 ore.Valoarea minimă este de 5 ore.https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html?#insulin
@@ -20,28 +20,149 @@
Ce trebuie să faceți atunci când deconectați pompa?Apăsați ‘Deconectează pompa’ astfel încât AAPS să știe că nu se va putea livra insulină.Apăsați ‘Suspendă bucla’ astfel încât AAPS să dezactiveze bucla atâta timp cât pompa este deconectată.
+ Nu modificați nimic în AAPS, doar deconectați pompa.https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#other-settingsSubiect: Setări AndroidAPSCare sunt cele mai bune metode de a păstra o copie de siguranță a setărilor AndroidAPS?Export pe un mediu de stocare local folosind meniul Mentenanță.Stocarea fișierului exportat într-un alt loc, precum email, Dropbox, Google drive…Exportarea imedia după instalarea AAPS.
+ Exportați-le după ce modificați setările.
+ Exportaţi-le după finalizarea unui obiectiv.Exportarea atunci când ați terminat setarea inițială.https://androidaps.readthedocs.io/en/latest/EN/Usage/ExportImportSettings.htmlhttps://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#what-emergency-equipment-is-recommended-to-take-with-meSubiect: Citiri zgomotoase ale glicemiei
+ Ce ar trebui făcut dacă valorile CGM sunt nesigure?
+ Nimic, AAPS se va descurca.
+ Dezactivați bucla închisă pentru a evita supra-dozarea.Se va înlocui senzorul CGM.Se va opri telefonul.https://androidaps.readthedocs.io/en/latest/EN/Usage/Smoothing-Blood-Glucose-Data-in-xDrip.html#smoothing-blood-glucose-data
+ Verificați dacă aplicația de senzor normalizează valorile glicemiei.Subiect: Exerciții fiziceCum puteți ajuta sistemul să facă față exercițiilor fizice?
+ Folosirea funcționalității de țintă temporară.Se va face un schimb de profil de sub 100%.Se va face o schimbare de profil de peste 100%.Se va opri bucla.
+ Setați o valoare-țintă temporară de activitate înainte de a începe exercițiul fizic.
+ Setarea unei valori-țintă temporare pentru activitate după ce exercițiul fizic a început generează rezultate mai proaste decât dacă ar fi fost setată înainte.https://androidaps.readthedocs.io/en/latest/EN/Usage/temptarget.html#activity-temp-target
+ Subiect: Dezactivarea/Suspendarea buclei închise
+ Primesc insulina atunci când bucla închisă este dezactivata/suspendata?
+ Da, insulina bazală este livrată în continuare.Nu, livrarea de insulină este oprită.Subiect: Bazală, ISF și testare ICCând ar trebui să validez bazalele, ISF și valorile IC?Înainte de pornirea buclei.
+ Atunci când hipoglicemiile apar frecvent.
+ Atunci când hiperglicemiile apar frecvent.https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#androidaps-settings
+ Subiect: Cerințe preliminare
+ Ce am nevoie?
+ Profil validat (ratele bazale, IC, ISF, DIA).
+ Un calculator pentru a crea APK-ul.
+ Un telefon compatibil.
+ O mașină.
+ Nightscout pentru a finaliza obiectivele.
+ Un cont Tidepool.
+ Un cont de Google.
+ Un cont de Github.
+ Experiență în dezvoltarea Android.
+ O pompă MiniMed 670G.
+ https://androidaps.readthedocs.io/en/latest/EN/Module/module.html
+ Un ceas inteligent.
+ Un sistem de senzori CGM compatibil.
+ Subiect: Actualizarea AndroidAPS
+ Ce este adevărat?
+ Aveți nevoie de Git instalat.
+ Actualizați când o versiune noua este lansată și aveți timp să o instalați.
+ Ar trebui sa folosiți aceleași chei de semnare.
+ Nu actualizați niciodată dacă sistemul funcționează corect.
+ Cereți unui prieten noul APK.
+ https://androidaps.readthedocs.io/en/latest/EN/Installing-AndroidAPS/Update-to-new-version.html#update-to-a-new-version-or-branch
+ Subiect: Rezolvarea Problemelor
+ Unde căutați ajutor?
+ Alăturaţi-vă grupului de Facebook AndroidAPS.
+ Citiți documentația AndroidAPS.
+ Vizitați canalul AndroidAPS pe Gitter.
+ Vizitați AndroidAPS Google support
+ Vă consultați cu diabetologul.
+ https://androidaps.readthedocs.io/en/latest/EN/Installing-AndroidAPS/Update-to-new-version.html#troubleshooting
+ https://www.facebook.com/groups/AndroidAPSUsers/
+ https://gitter.im/MilosKozak/AndroidAPS
+ Subiect: Plugin-uri pentru Insulină
+ Ce brand de insulină poate fi folosit cu plugin-ul ‘Ultra-Rapid-Oref’?
+ Fiasp®
+ NovoRapid®
+ Humalog®
+ Actrapid®
+ https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html#insulin
+ Subiect: Plugin-uri pentru sensibilitate
+ Ce algoritm de sensibilitate are un interval de timp configurabil?
+ https://androidaps.readthedocs.io/en/latest/EN/Configuration/Sensitivity-detection-and-COB.html
+ Ce plugin de sensibilitate trebuie folosit pentru funcționalitatea UAM?
+ Subiect: Erori la introducerea carbohidraților
+ Ce ar trebui sa faceți dacă ați introdus o cantitate de carbohidrați greșită?
+ În secțiunea Tratamente, ștergeți intrarea greșită. Introduceți din nou cantitatea de carbohidrați.
+ Adăugați unități false de insulina folosind funcția de Reîncărcare
+ Subiect: Alimente cu Lipide și Proteine
+ Cum procedați atunci când mâncarea conține o cantitate mare de lipide și\/sau proteine?
+ Convertiți lipidele și proteinele în carbohidrați și folosiți funcționalitatea de \"Carbohidrați extinși\".
+ Convertiți lipidele și proteinele în carbohidrați și adăugați-i la calcularea bolusului.
+ Folosiți bolusul extins pentru a acoperi lipidele și proteinele.
+ https://androidaps.readthedocs.io/en/latest/EN/Usage/Extended-Carbs.html
+ Subiect: Monitorizarea la distanţă
+ Cum puteți monitoriza AAPS-ul copilului dumneavoastră de la distanță?
+ Folosind un site Nightscout.
+ Aplicația Dexcom Flollow dacă folosiți aplicația Dexcom originală (doar valorile glicemiei).
+ Dexcom Follow dacă folosiți aplicația xDrip.
+ Aplicația xDrip în modul \"follower\".
+ Aplicația Loop pe iPhone.
+ Aplicația Spike pe iPhone.
+ https://androidaps.readthedocs.io/en/latest/EN/Children/Children.html
+ Subiect: Factorul de Sensibilitate la Insulină (ISF)
+ Valorile ISF mai mari determina livrarea unor cantități mai mici de insulina atunci când AAPS corectează hiperglicemiile.
+ Valorile ISF mai mici determina livrarea unor cantități mai mici de insulina atunci când AAPS corectează hiperglicemiile.
+ Modificările ISF nu au nicio influență asupra cantităților de insulina livrate atunci când AAPS corectează hiperglicemiile.
+ Trebuie sa setați ISF in Preferințe.
+ Schimbarea valorii ISF în profil este suficientă pentru a produce efecte.
+ https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#insulin-sensitivity-factor-isf-mmol-l-u-or-mg-dl-u
+ https://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html
+ Subiect: Rația insulină-carbohidrați (IC)
+ Valorile IC mai mari determină o cantitate mai mică de insulină livrată pentru o cantitate dată de carbohidrați.
+ Valorile IC mai mici determină o cantitate mai mică de insulină livrată pentru o cantitate dată de carbohidrați.
+ Dacă aveți 0 CoB (carbohidrați activi), schimbarea IC va determina modificarea cantității de insulină livrată pentru a corecta glicemia.
+ Valoarea IC va fi diferita dacă considerați 1BE (unitate de pâine) ca 10g sau 12g glucide.
+ IC înseamnă: Câte unități de pâine sunt acoperite de 1 unitate de insulină.
+ https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#carbohydrate-to-insulin-ratio-cr-g-u
+ Subiect: Schimbarea de profil
+ Atunci când se specifică 90% la schimbarea de profil…
+ Ratele bazale vor fi cu 10% mai mari.
+ Ratele bazale vor fi cu 10% mai mici.
+ Valoarea IC va fi cu 10% mai mare.
+ Valoarea IC va fi cu 10% mai mica.
+ Valoarea ISF va fi cu 10% mai mare.
+ Valoarea ISF va fi cu 10% mai mică.
+ Veți primi în total cam cu 10% mai puțină insulină.
+ Intervalul-ţintă va fi cu 10% mai mare.
+ Intervalul-ţintă va fi cu 10% mai mic.
+ Doar valoarea-ţintă inferioară va fi cu 10% mai mică.
+ https://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html?highlight=profile%20switch#profile-switch
+ Dacă va treziți cu o ora mai devreme decât de obicei, cum veți anunța AAPS de schimbarea din programul dumneavoastră?
+ Inițiați o schimbare de profil cu decalaj de timp de 1
+ Inițiați o schimbare de profil cu decalaj de timp de -1
+ https://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html?highlight=profile%20switch#timeshift
+ Inițiați o schimbare de profil cu decalaj de timp de 60
+ Inițiați o schimbare de profil cu decalaj de timp de -60
+ https://androidaps.readthedocs.io/en/latest/EN/Module/module.html#good-individual-dosage-algorithm-for-your-diabetes-therapy
+ Subiect: Ajutor pentru ratele bazale
+ Unde căutați ajutor pentru a seta ratele bazale etc.
+ Medicul dumneavoastră diabetolog
+ Google
+ Facebook
+ Alte tratamente
+ AAPS reduce ratele bazale pentru a crește glicemia. Medicamentele din grupa inhibitorilor SGLT2 (gliflozins) pot împiedica această creștere a glicemiei si, prin urmare, pot mări riscul de cetoacidoza diabetica (DKA).
+\nBranduri comune sunt: Invokana®, Forxiga®, Jardiance®, Steglatro®, Suglat®, Apleway®, Deberza®, Synjardy®, Vokanamet®, Xigduo®.\n\nDeclar pe propria răspundere că nu voi lua asemenea medicamente cât folosesc AAPS sau că voi dezactiva bucla închisă înainte de le folosi.
diff --git a/app/src/main/res/values-ro-rRO/objectives.xml b/app/src/main/res/values-ro-rRO/objectives.xml
index cdf5312139..80b2837283 100644
--- a/app/src/main/res/values-ro-rRO/objectives.xml
+++ b/app/src/main/res/values-ro-rRO/objectives.xml
@@ -20,7 +20,9 @@
O săptămână de buclă închisă încheiată cu succes în condițiile introducerii regulate a carbohidrațilorActivarea unor facilități adiționale pentru funcționarea în timpul zilei, cum ar fi advanced meal assistSe activează opțiuni pentru uzul în timpul zilei, cum ar fi SMB
+ Activarea automatizăriiTrebuie sa citiți wiki și să măriți maxIOB pentru a obține SMB corect! Un start bun este maxIOB=media bolusurilor + 3x maxima bazalei din zi
+ Citiți documentația despre cum funcționează automatizarea. Setați primele reguli simple. În loc de a acționa, lăsați AAPS doar să afișeze notificări. Când sunteți siguri ca automatizarea acționează la momentul potrivit, înlocuiți notificările cu acțiuni reale.(https://androidaps.readthedocs.io/en/latest/EN/Usage/Automation.html)Glicemie disponibilă în NSStarea pompei disponibilă în NSAcțiuni manuale
@@ -35,10 +37,12 @@
Afișați conținutul facilității BuclăFolosiți funcția scală prin apăsarea prelungă a graficului glicemieiIntroduceţi
+ Dacă aveți cel puțin 3 luni de experiență cu un sistem în bucla închisă, puteți beneficia de un cod pentru a sări peste obiective. Pentru mai multe detalii vezi: https://androidaps.readthedocs.io/en/latest/EN/Usage/Objectives.html#skip-objectives.Cod acceptatCod invalidDovediți-vă cunoștințeleStudiați și răspundeți corect la întrebări
+ Posibilitatea de a răspunde este dezactivată până la: %1$sRăspuns greșit!Următoarea nefinalizatăSolicită codul: %1$s
diff --git a/app/src/main/res/values-ro-rRO/protection.xml b/app/src/main/res/values-ro-rRO/protection.xml
index 3ea04e700d..03b44e5135 100644
--- a/app/src/main/res/values-ro-rRO/protection.xml
+++ b/app/src/main/res/values-ro-rRO/protection.xml
@@ -1,2 +1,25 @@
-
+
+ Autentificarea este obligatorie
+ Puneți degetul pe cititorul de amprente pentru a verifica identitatea
+ Protecţie setări
+ Protecție aplicație
+ Protecție bolus
+ Parola principală
+ Parolă setări
+ Parolă aplicație
+ Parolă bolus
+ Deblochează setările
+ Biometric
+ Parolă personalizată
+ Fără protecţie
+ Protecţie
+ Parola principală nu este setată!\n\nVă rugăm să vă setaţi parola principală în Preferinţe (%1$s → %2$s)
+ Trecere la modul nesecurizat biometric
+ Pentru a fi eficientă, protecţia biometrică are nevoie de o parolă principală pentru regresie.\n\nVă rugăm să setaţi o parolă principală!
+ Parola a fost setată!
+ Parola nu a fost setată
+ Parola nu a fost modificată
+ Parolă ștearsă!
+ Introduceți parola aici
+
diff --git a/app/src/main/res/values-ro-rRO/strings.xml b/app/src/main/res/values-ro-rRO/strings.xml
index f4f0cf24c9..c81aa82286 100644
--- a/app/src/main/res/values-ro-rRO/strings.xml
+++ b/app/src/main/res/values-ro-rRO/strings.xml
@@ -12,13 +12,10 @@
Resetează bazele de dateSigur resetați bazele de date?Ieșire
- Folosiți bolusuri extinse pentru >200%%
- Dispozitive bluetooth DanaRFolosește întotdeauna valori absolute ale bazaleiRestartați telefonul sau reporniți aplicația AndroidAPS din System Settings \naltfel AndroidAPS nu va putea face loguri (importante pentru verificarea corectitudinii funcționării algoritmilor)!Acest dispozitiv nu permite folosirea excluderii din lista de optimizare a bateriei - se poate să întâmpinați probleme de performanță.Butoane pentru accesarea celor mai comune facilităţi
- Accesaţi secţiunea de loguri avansate.Folosit pentru configurarea facilităţilor activeProgram de învăţareAfişează mâncărurile predefinite în Nightscout
@@ -36,13 +33,10 @@
Foloseşte profilul predefinit deja în NightscoutDefinește un profil cu un singur bloc de timp.Integrare cu pompele Accu-Chek, necesită aplicația Ruffy
- Integrare cu pompele DANA Diabcare R
- Integrare cu pompele DANA Diabcare R coreene
- Integrare cu pompele DANA Diabcare R cu firmware upgradat
- Integrare cu pompele DANA Diabcare RSIntegrare cu pompă virtuală, pentru persoanele ce folosesc terapia cu penIntegrare cu pompele ce nu au încă un driver software disponibil (Buclă Deschisă)Sensibilitatea este calculată la fel ca în algoritmul Oref0, dar se poate specifica un interval de timp în trecut. Absorbția minimă de carbohidrați este calculată din parametrul echivalent, stabilit în preferințe.
+ Sensibilitatea este calculată folosind datele din ultimele 8 sau 24 ore (se alege cea mai mare din ele), iar carbohidrații (când nu sunt absorbiți) sunt ignorați după timpul specificat în preferințe. Plugin-ul calculează și UAM.Sensibilitatea este calculată ca o medie ponderată a deviațiilor. Deviațiile noi au o importanță mai mare. Absorbția minimă de carbohidrați este calculată în funcție de parametrul absorbție maximă de carbohidrați, stabilit în preferințe. Acest algoritm este cel mai rapid atunci când sensibilitatea la insulină este fluctuantă.Primește valorile glicemiei din aplicația Eversense modificată.Primește valorile glicemiei din aplicația Glimp.
@@ -53,13 +47,6 @@
Monitorizează și controlează aplicația AndroidAPS folosind smartwatchul WearOS.Afișează informații privind starea buclei pe watchface-ul xDrip+.Controlare de la distanță a AndroidAPS folosind comenzi date prin SMS.
- Unități
- DIA
- IC
- ISF
- Bazală
- Țintă
- NICIUN PROFIL SETATInsulină:Carbohidrați:IOB:
@@ -75,15 +62,9 @@
TTCarbohidrațiCorecție
- UIOB bolusExecutăPOMPĂ VIRTUALĂ
- Rată bazală normală
- Bazală temporară
- Bolus extins
- Baterie
- RezervorOKUltima execuțieParametri de intrare
@@ -93,17 +74,13 @@
ProfilDate despre masăRezultat
+ Rezultat: %1$s %2$sNu există date despre glicemie
- Nu este solicitată nicio schimbareSolicită
- Rată
- Durată
- MotivGlicemieDiferențăDiferență:Configurator
- ObiectivePrivire de ansambluProfil NSProfil simplu
@@ -121,7 +98,6 @@
GeneralExistă pluginuri generale pe care le-ați putea găsi utile.Ce constrângeri sunt aplicate?
- zileConstrângeriBuclăBuclă
@@ -130,24 +106,19 @@
Constrângeri după procesareBazală Temporală programată în pompăUltima acțiune executată
- OK
- RenunțăNU AȚI SELECTAT APS SAU NU EXISTĂ REZULTAT GENERATSiguranțăModul inactivÎncălcare a unei limiteEroare la livrarea bolusului
- Eroare la setare bazală temporară
+ Valoare bazală [%]Acceptă noua bazală temporară:TratamentCalculatorLimitare aplicată!
- Confirmare
- BolusBolus:BazalăBazală:
- CarbohidrațiSchimbați ceea ce ați introdus!Sursă glicemieDe unde trebuie să primească AndroidAPS datele?
@@ -155,33 +126,17 @@
Mod APSBuclă închisăBuclă deschisă
+ Suspendare la hipoglicemieBuclă inactivăDezactivează buclaActivează buclaO nouă sugestie este disponibilă
+ Sugestie carbohidrațiVersiune incompatibilă de NightscoutBUCLĂ DEZACTIVATĂ DATORITĂ CONSTRÂNGERILORIOB bazalăConstrângere de bolus aplicatăConstrângere de carbohidrați aplicată
- Verificare glicemie
- Anunț
- Notă
- Întrebare
- Activitate fizică
- Schimbare loc pompă
- Inserare senzor
- Start senzor
- Schimbare cartuș insulină
- Gustare
- Masă
- Bolus de corecție
- Bolus combo
- Start bazală temporară
- Sfârșit bazală temporară
- Corecție de carbohidrați
- OpenAPS Offline
- Tip evenimentAltulGlucometruSenzor
@@ -193,6 +148,7 @@
ProcentAbsolutNote
+ Ora evenimentuluiProfilIntrodus deTip glicemie
@@ -208,107 +164,117 @@
Nu am găsit fișierulExportă setărileImportă setările
- Maximul de unități de insulină pe oră poate fi setat la
+ Valoarea maximă în U/ora a unei rate bazale temporare poate fi setată laAceastă valoare este denumită bazală maximă în contextul OpenAPSMaximul de bazală IOB pe care o poate livra OpenAPS[U]Această valoare este denumită Max IOB în contextul OpenAPS\nAceastă valoare este implicit nulă (0). După câteva zile sau săptămâni, în funcție de opțiunea dumneavoastră, puteți ajusta acest număr.
- RENUNȚĂ
- DanaR
- Se conectează
- Conectat
- Deconectat
+ Vi se va solicita parola principală, care va fi utilizată pentru criptare la exportarea setărilor.
+ Vi se va solicita parola principală, care este necesară pentru a decripta setările importate.
+ Exportarea a eșuat! Preferințele NU au fost exportate!
+ Importarea a eșuat! Preferințele NU au fost importate!
+ Nu se pot prelua setările!
+ Mergeți la ecranul principal și încercați din nou.
+ Selectați fișierul pentru import
+ Verificați preferințele înainte de a le importa:
+ Preferințele nu pot fi importate!
+ Preferințele nu ar trebui importate!
+ Explicații problemele de import…
+ Detalii probleme de import
+ Importă
+ Importă oricum (PERICOL!)
+ Preferințele au fost create folosind o alta versiune de AAPS (%1$s) în timp ce versiunea curentă este: %2$s.\n\nCâteva setări pot lipsi sau pot fi invalide - după import verificați și actualizați preferințele.
+ Preferințele au fost create pe un dispozitiv diferit. Este în regulă să le importați de pe un alt telefon, dar asigurați-vă că sunt corecte!
+ Folosiți un format neactualizat dintr-o versiune veche de AAPS care nu este securizat! Folosiți acest format în ultima instanța, doar dacă nu aveți un export în formatul curent de JSON.
+ Preferințele importate sunt vechi de %1$s zile deja! Poate aveți preferințe mai recente sau ați ales un fișier greșit? Amintiți-vă să exportați preferințele în mod regulat!
+ Format dată invalid!
+ Preferințe dintr-o versiune minoră diferită a aplicației. Este OK dacă importați după upgrade, dar verificați după import că preferințele sunt corecte!
+ Preferințe dintr-o versiune majoră a aplicației. Versiunile majore au diferențe semnificative și pot avea preferințe incompatibile! Asigurați-vă după import ca preferințele sunt corecte!
+ Formatul fișierului
+ Creat la
+ Versiune AAPS
+ Versiune de build
+ Exporta numele dispozitivului pacientului
+ Exportarea modelului dispozitivului
+ Criptarea fișierului
+ Format vechi de export
+ Format nou criptat
+ Format nou pentru debug (necriptat)
+ Format de export necunoscut
+ Fişier de setări modificat
+ Fișierul de setări este securizat
+ Folosirea formatului nesecurizat, necriptat pentru setări
+ Eroare format JSON, lipsește un câmp necesar (format, conținut, metadate sau securitate)
+ Eroare la decriptare, parola dată nu poate decripta fişierul
+ Suma de control a fişierului (hash) lipseşte, nu se poate verifica autenticitatea setărilor!
+ Fişierul a fost modificat după export!
+ Eroare la decriptare, parsarea preferinţelor a eşuat!
+ Eroare la decriptare, parola furnizată este invalidă sau fişierul de setări a fost modificat! Se poate întâmpla ca fişierul importat să fi fost exportat cu o parolă master diferită.
+ Lipseşte configuraţia de criptare, formatul setărilor este invalid!
+ Algoritm de criptare nesuportat sau nespecificat!
+ exportat azi
+ exportat cu %1$s în urmă
+ exportat în data de %1$s
+ exportat acum mai puțin de o ora
+ în folderul: %1$sLicență utilizator finalNU FOLOSIȚI PENTRU LUAREA DE DECIZII MEDICALE. NU EXISTĂ RĂSPUNDERE LEGALĂ SAU GARANȚIE PENTRU ACEST PROGRAM, ÎN LIMITA APLICABILĂ A LEGII. CU EXCEPTIA CAZURILOR SPECIAL MENȚIONATE, AUTORUL ȘI/SAU ALTE PERSOANE IMPLICATE PUN LA DISPOZIȚIE ACEST PROGRAM FĂRĂ NICIO GARANȚIE, IMPLICITĂ SAU EXPLICITĂ, INCLUZÂND, DAR FĂRĂ A SE LIMITA LA, GARANȚIILE LEGATE DE VĂNZAREA SAU POTRIVIREA PENTRU UN ANUME SCOP. ÎNTREGUL RISC LEGAT DE CALITATEA ȘI PERFORMANȚA ACESTUI PROGRAM CAD ÎN RESPONSABILITATEA DUMNEAVOASTRĂ. DACĂ PROGRAMUL SE DOVEDEȘTE A FI DEFECT, DUMNEAVOASTRĂ VĂ ASUMAȚI ÎNTREAGA RĂSPUNDERE, PRECUM ȘI TOATE COSTURILE LEGATE DE SERVICE, REPARAȚII SAU CORECȚII.ÎNȚELEG ȘI SUNT DE ACORDSalvează
- Nu s-a găsit niciun adaptor bluetooth
- Dispozitivul selectat nu a fost găsit
- Eroare de conexiune cu pompa
- IOB din pompă
- Unități zilnic
- Ultimul bolus
- %1$.1f o în urmă
- Date de intrare incorecte
- Valoare setată incorectReîncarcă profilul
- Afișează profilul
- Executat
- Comentariu
- Succes
- Procent
- Absolut
- Renunță la bazala temporarăComunicator SMS
- Se așteaptă rezultatulNumere de telefon permise+ XXXXXXXXXX; + YYYYYYYYYYPentru a livra un bolus de %1$.2fU răspundeți cu codul %2$s
+ Pentru a livra un bolus de %1$.2fU raspundeți cu: %2$s
+ Pentru a seta tinta temporara %1$s raspundeti cu: %2$s
+ Pentru a anula tinta temporara raspundeți cu: %1$s
+ Pentru a dezactiva serviciul SMS la distanta raspundeti cu: %1$s.\n\nRetineti ca o sa il puteti reactiva doar direct de pe smartphone-ul master AAPS.
+ Serviciul SMS la distanta s-a oprit. Pentru a il reactiva, utilizati AAPS de pe smartphone-ul master.Pentru a trimite calibrarea cu %1$.2f răspundeți cu codul %2$sBolusare eșuată
+ Numarul minim de minute care trebuie sa treaca intre un bolus la distanta si urmatorul
+ Cate minute trebuie sa treaca, cel puţin, intre un bolus si următorul
+ Pentru siguranta dumneavoastra, pentru a edita aceasta preferinta trebuie sa adaugati cel putin 2 numere de telefon.Bolusul de %1$.2fU a fost livrat cu succesSe va livra un bolus de %1$.2fUBolusul de %1$.2fU a fost livrat cu succes
- Se livrează %1$.2fU
+ Bolusul de %1$.2fU a fost livrat cu succes
+ Țintă %1$s pentru %2$d minute
+ Tinta %1$s pentru %2$d minute este setata cu succes
+ Tinta temporara anulata cu succesPermite comenzi de la distanță, prin SMS
- Deget
- Senzor
- ManualSetări de profil DanaR
- DIA [o]
+ DIA [h]Durata de Acțiune a Insulinei (DIA)
- Setarea profilului bazalei eșuată
- ReîncărcareSe trimite
- Bolus E
- Bolus DS
- Bolus DE
- eroare
- reumplere
- bazală pe oră
- glicemie
- carbohidrat
- alarmă
- Au fost încărcate %1$d înregistrări
- Bolus S
- Alarme
- Ore bazale
- Bolusuri
- Carbohidrați
- Insulină zilnică
- Erori
- Glicemie
- Reumplere
- Suspendare
- Conectat de %1$d s
- Parola pompei
- Parola pompei greșită!
- Pompa face altă acțiune
- Livrat
- OpritBolus opritSe oprește bolusul
- Ocluzie
- Stop
- STOP APĂSAT
- Se așteaptă pompa
- Se va livra un bolus de %1$.2fU
- Ați atins limita permisă
- Niciun profil selectatBucla a fost dezactivatăBucla a fost activatăBucla este dezactivatăBucla este activată%1$.2f este limitată la %2$.2fValoarea %1$s este mai mare decât limita stabilită
+ Pentru a conecta pompa raspundeti cu codul %1$s
+ Conectarea cu pompa a esuat
+ Pentru a deconecta pompa timp de %1d minute, raspundeti cu: %2$s
+ Pompă deconectată
+ Pompă reconectatăComanda de la distanță nu este permisăBolus de la distanță nu este disponibil. Încearcă din nou mai târziu.Pentru a iniția bazala de %1$.2fU/h pentru %2$d min trimiteți codul %3$sPentru a schimba profilul în %1$s %2$d%% trimiteți codul %3$sPentru a stabili bazala de %1$.2fU/h pentru %2$d min trimiteți codul %3$s
+ Pentru a introduce %1$dg la %2$s, raspundeti cu: %3$sPentru a iniția bazala de %1$d%% pentru %2$d min trimiteți codul %3$sPentru suspendarea buclei pentru %1$d minute trimiteți codul %2$s
+ Pentru a reactiva bucla inchisa, raspundeti cu %1$s
+ Pentru a activa bucla inchisa, raspundeti cu %1$s
+ Pentru a dezactiva bucla inchisa, raspundeti cu %1$sBazala temporară %1$.2fU/h pentru %2$d minute a fost trimisă cu succesBolusul extins de %1$.2fU pentru %2$d min a fost inițiat
+ %1$dg carbohidrati introdusi cu succes
+ Introducerea a %1$dg de carbohidrati a esuatBazala temporară %1$d%% pentru %2$d minute a fost stabilită cu succesTrimiterea bazalei temporare a eșuatPornirea bolusului extins a eșuat
@@ -330,20 +296,19 @@
MasăCorecțieAcțiuni
- AndroidAPS a pornitDoar încărcare în NS (sincronizare dezactivată)Doar încărcare în NS. Nu are efect asupra SGV decât în cazul selectării unei surse locale, precum xDrip. Nu acționează asupra Profilurilor cât timp se folosesc profilurile din Nightscout.Pompa nu este inițializată!
- Pompa nu este inițializată, profilul nu este setat!Pregătire/umplereAsigurați-vă că aveți cantitatea specificată de instrucțiunile setului de infuzie!Alte
- Pregătire/umplere cu cantitățile standard de insulină.
+ Umplere/Amorsare folosind cantitățile standard de insulinăButon 1Buton 2Buton 3
- mg/dl
- mmol/l
+ Unități:
+ Unități
+ DIAIntervalul țintă:Intervalul pentru vizualizareValoarea maximă și minimă pentru graficele din vizualizare și pentru smartwatch
@@ -352,17 +317,7 @@
CeasRetrimite toate dateleDeschide setările pe Wear
- Eroare a pompei
- Baterie aproape descărcată
- Pompa oprită
- Bateria pompei este descărcată
- DanaR din CoreeaRată bazală:
- Setarea profilului bazalei a eșuat
- Profilul bazalei a fost modificat în pompă
- Dezactivează modul EasyUI în pompă
- Activează bolusuri extinse în pompă
- Schimbă din modul U/z în U/o în pompăValoarea bazalei este sub minimul permis. Profilul nu este setat!Glicemie:Ultima glicemie:
@@ -370,7 +325,6 @@
MM640gNotificare activăDATE VECHI
- %1$d min în urmăacum %1$dminProfil localOpenAPS AMA
@@ -385,47 +339,29 @@
Masă în curândHipoActivitate
- Statistici DanaR
- TDD cumulat
- TDD estimat exponențial
- Bazală
- Bolus
- TDD
- Data
- Rata
- # Zile
- Greutate
- Posibil fără acuratețe bună în cazul folosirii de bolusuri pentru pornire/umplere!
- Date vechi, apăsați \"REÎNCĂRCARE\"
- Total bazală normală
- TBB * 2
- Inițializare...
+ Șterge înregistrareaACTCONFBUCLSPOAPSLP
- DANAACASĂPOMPĂVPROFILNSTRAT
- CPOBICEASSMSScurtează titlurile secțiunilorFolosește întotdeauna media scurtă a diferenței în locul diferenței simpleFolositor când datele vin de la surse nefiltrate, ca atunci când xDrip are măsurători zgomotoase.
- Setări avansate
- Model: %1$02X Protocol: %2$02X Cod: %3$02XProfilValoare implicită: 3\nAceasta este o setare de critică de securitate a OpenAPS. Asta înseamnă că se limitează bazala lade 3x valoarea maximă a bazalelor tale.Cel mai probabil nu veți schimba această valoare, dar trebuie să țineți cont de ce se discută despre “3x max zilnic; 4x curent” ca valori de siguranță.Valoare implicită: 4\nAceasta este cealaltă jumătate a cheii de siguranță a OpenAPS și cealaltă jumătate a \"3x max zilnic; 4x curent\" al setărilor de siguranță.Aceasta înseamnă că bazala dumneavoastră, indiferent de bazala maximă configurată în pompă, nu poate fi mai mare de acest număr înmulțit cu nivelul curent al bazalei active. Această limitare este impusă pentru a evita posibilitatea de a intra pe un teritoriu periculos prin setarea unei bazale maxime excesiv de mari înainte de a înțelege funcționarea algoritmului. Din nou, valoarea implictă este 4x; majoritatea oamenilor nu vor trebui să ajusteze această valoare și vor modifica, mai degrabă, alte valori dacă vor simți că această valoare le stă în cale.Valoare implicită: 1.2\nAceasta este valoarea limită de multiplicare pentru autosens (și pentru autotune, în curând) pentru a seta o limită maximă de 20%% din cât de mare poate fi raportul autosens, care, la rândul ei, determină cât de mult poate autosens să modifice bazalele, cât de jos poate modifica ISF și cât de jos poate pune ținta glicemiei.Valoare implicită: 0.7\nCealaltă parte a limitelor autosens, care limitează cât de jos poate ajusta bazalele și cât de mult poate mări ISF și țintele de glicemie.
- Autosens ajustează țintele la
+ Autosens ajustează si target-urileValoare implicită: adevărat\nAceasta se folosește pentru a permite autosens să ajusteze țintele de glicemie, pe lângă modificările asupra ISF și bazalelor.Valoare implicită: 2\nAmânarea bolusului este aplicată după ce ați făcut un bolus de masă, astfel încât bucla să nu reacționeze cu ținte bazale temporare scăzute atunci când tocmai ați mâncat. Exemplul de față și valoarea implicită sunt 2; astfel o durată de acțiune a insulinei (DIA) de 3 ore duce la o eliminare treptată a întârzierii setării bazalelor temporare după 1.5 ore (3DIA/2).Valoarea implicită: 3.0 (AMA) sau 8.0 (SMB). Aceasta este o setare pentru impactul implicit al carbohidraţilor pe 5 minute. Valoarea implicită este 3mg/dl la 5min. Aceasta influenţează rapiditatea cu care se scade COB şi modul în care se ia în calcul absorbţia carbohidraţilor în calcularea valorilor estimate ale glicemiei, atunci când glicemia este în scădere mai mare decât se aştepta sau nu creşte atât de repede pe cât se aştepta.
@@ -438,18 +374,9 @@
Calibrare trimisă. Recepționarea trebuie să fie activată și în xDrip.xDrip nu recepționează calibrăriLivrare de insulină suspendată
- Se primește starea pompei
- Se setează bazala temporară
- Se oprește bazala temporară
- Se pornește bolusul extins
- Se oprește bolusul extins
- Se restabilesc ratele bazale
- Se deconecteazăSe executăSetări pompă virtualăTrimitere status către NS
- Parolă greșită
- Se apropie limita zilnică de insulinăClient NSNSCIURL:
@@ -473,13 +400,16 @@
Arată IOB detaliatSepară IOB în bolus și IOB bazal pe ceasfără succes - verificați telefonul
- Nu este disponibil
+ indisponibilVârsta pacientuluiCopilAdolescentAdultAdult rezistent la insulinăVă rog să selectați vârsta pacientului în vederea stabilirii valorilor maxime admise de siguranță
+ Numele pacientului
+ Vă rugăm să furnizați numele sau porecla pacientului pentru a diferenția între configurări
+ UtilizatorGlimp%1$s necesită excluderea din lista de optimizare a bateriei pentru o funcționare corespunzătoareBuclă suspendată
@@ -506,8 +436,6 @@
SuperbolusÎnregistrează pornirea aplicației în NSSe iese din aplicație în vederea aplicării setărilor.
- DanaRv2
- InsulinăCe tip de insulină folosiți?Insulină rapidăNovorapid, Novolog, Humalog
@@ -516,13 +444,26 @@
Activează superbolus în asistentActivează funcționalitatea de superbolus în asistentul de buclă. Nu activați până nu înțelegeți ce face cu adevărat. DACĂ ESTE FOLOSIT ÎN NECUNOȘTINȚĂ DE CAUZĂ POATE DUCE LA SUPRADOZĂ DE INSULINĂ!Afișați indicatorii luminoși ai pompei pe ecranul de start
+ Prag de avertizare timp de utilizare canulă [h]
+ Prag critic timp de utilizare canulă [h]
+ Prag de avertizare vechime insulină [h]
+ Prag critic vechime insulină [h]
+ Prag de avertizare vechime senzor [h]
+ Prag critic vechime senzor [h]
+ Prag de avertizare nivel baterie [h]
+ Prag critic nivel baterie [h]Pragul de avertisment pentru insulina din rezervor [U]Pragul critic al nivelului insulinei în rezervor [U]
+ Pragul de avertizare nivel baterie [%]
+ Pragul critic al nivelului baterie [%]
+ PREDIOBCOB
- Firmware
- Ultima conexiune
- Status bluetooth
+ R_BAZ
+ DEV
+ ACT
+ ABS
+ DEVSLOPEDespreLipsesc permisiunile de SMSNu este acordată permisiunea de citire a stării telefonului
@@ -533,23 +474,15 @@
Adaugă BGI în linia de statusFără trimitere către NSToate trimiterile de date către NS sunt oprite. AAPS este conectat la NS dar nu se fac schimbări în NS
- Pas bazală
- Pas bolusRenunță la bolusul extinsVechime senzorVechime canulăVechime insulină
- ore
- Profil invalid!!!
+ Schimbă profilulVechime baterie pompă
- Schimbare baterie pompăOpțiuni alarmare
- Hiper urgent
- Hiper
- Hipo
- Hipo urgent
- Date învechite
- Date mult prea vechi
+ Creare notificări din alarmele NS
+ Creare notificări din anunţurile NSPrag vechime date [min]Prag date mult prea vechi [min]Interval pentru autosens [o]
@@ -566,7 +499,6 @@
Setări absorbțieTimp maxim absorbție masă [o]Timp în ore la care se presupune că toți carbohidrații sunt absorbiți
- Afișati bolusul extins ca %%VSVIVC
@@ -591,7 +523,6 @@
POMPĂDurată [min]OpenAPS SMB
- SMBActivează UAMActivează SMBFolosește SMB în locul bazalei temporare pentru reacție mai rapidă
@@ -603,22 +534,7 @@
Oref Insulină-UltraRapidăDIA din %1$f prea scurtă - se folosește %2$f în schimb!Activează profil
- DataINVALID
- Se așteaptă conectarea la pompă
- Conectare OK
- Conectare nereușită
- Niciun dispozitiv găsit până acum
- Rezervor gol
- Alertă măsurare glicemie
- Nivel insulină rămas
- DanaRS
- Dana
- Pompa selectată
- Conectare la pompă nouă
- Viteză bolusare
- Setare pas bazală la 0.01 U/o
- Număr serialProcentajDecalareȚinte-Temporare implicite
@@ -628,31 +544,18 @@
țintă activitatedurată țintățintă hipo
- Amorsare
- Se citește starea bolusului extins
- Se citește starea bolusului
- Se citește starea bazalei temporare
- Se citesc setările pompei
- Se citește ora pompeirefolosireControlare din ceasSetare Ținte-Temporare și se introduc Tratamente din ceas.
- Conectare eșuatăMâncareg
- min
- o]]>kJEnPrGrăsime]]>
- Se așteaptă terminarea bolusării. Mai sunt %1$d secunde.
- Se procesează activitatea
- Pornire livrare bolusSe execută comanda chiar acum
- S-a corectat driverul pompeiPompă indisponibilăLipsesc date glicemieSe folosesc notificările sistemului pentru alerte și notificări
@@ -660,23 +563,24 @@
Alarmează dacă nu se primesc glicemiiSe alertează dacă pompa este indisponibilăPrag pompă indisponibilă [min]
+ Alertează dacă sunt necesari carbohidrațiAlarmă urgentăINFO
- Bluetooth
- BT Watchdog
- Oprește bluetooth-ul telefonului pentru o secundă dacă nu se poate conecta la pompă. Aceasta poate ajuta în cazul telefoanelor cu bluetooth incompatitibil.Aplicația Eversense (modificată)Încarcă date glicemie în NSSetări înregistrare glicemieArată variație detaliatăArată variație cu încă o zecimală
+ Cât de des se vor administra SMB în min
+ SMB maxim minuteMax minute de bazală la care să se limiteze SMB
- Soft pompă incompatibil
+ UAM SMB maxim minute
+ Durata maxima (în minute) a bazalei pentru a limita SMB în cazul UAM
+ Numărul minim de carbohidrați solicitați în Sugestii
+ Numărul minim de carbohidrați pentru a afișa o alertă-sugestie. Sugestiile de carbohidrați mai jos acest număr nu vor declanșa o notificare.Trimite date glicemie la xDrip+Selectați 640g/Eversense ca sursă de date în xDrip+Glicemie NSClient
- Valoarea bazalei a fost înlocuită cu valoarea minimă posibilă: %1$s
- Valoarea bazalei a fost înlocuită cu valoarea maximă posibilă: %1$sCalcul glicemieCalcul IOB bolusCalcul IOB bazală
@@ -694,8 +598,6 @@
Mod buclă închisă activatIOB maxim configurat corectGlicemie disponibilă din sursa selectată
- Valori bazale nesincronizate cu ora: %1$s
- Profil invalid: %1$sSe programează pompa pentru livrare bolusReîncarcăStare
@@ -734,7 +636,8 @@
Eroare de livrare a bolusului extinsObiectivîn trecut
- %1$.2f h
+ Setați bazale temporare neutre
+ Dacă este activată, va anula o bazală temporară înainte de sfârșitul fiecărei ore. Aceasta metoda poate ajuta la oprirea vibrațiilor/bipurilor orare pe anumite pompe.Activează SMB întotdeaunaActivează SMB întotdeauna independent de bolusuri. Este posibil doar în cazul unei surse de glicemii filtrate, cum ar fi G5Activează SMB după carbohidrați
@@ -744,9 +647,7 @@
Activează SMB cu ținte temporareActivează SMB chiar atunci când este o țintă temporară activă (mâncare in curând, exerciții fizice)Activează SMB cu ținte temporare mari
- Activează SMB atunci când există o țintă temporară mare activă (exerciții fizice)
- Lasă să funcționeze bazala temporară
- Liniște
+ Activați SMB atunci când există o țintă temporară activă (exerciții fizice, peste 100mg/dl sau 5.5mmol/l)InsulinăCarbohidrațiButoane
@@ -756,11 +657,17 @@
Cantitatea de insulină de adăugat când se apasă butonulNu s-a putut deschide aplicația CGM. Asigurați-vă că este instalată.CGM
+ Ignorați 5min
+ Ignorați 15min
+ Ignorați 30min
+ reqVizualizare istoricNotifică despre SMBArată SMB pe ceas ca și un bolus standard.Crează anunțuri pentru erori
+ Crează anunțuri din alertele de cerere carbohidrațiCrează anunțuri în Nightscout pentru dialoguri de erori și alerte locale (vizibile și în Careportal - Tratamente)
+ Creează anunțuri Nightscout din alertele de cerere carbohidrațiArată previziunile pe ceas.PredicțiiAlegeri date
@@ -774,7 +681,7 @@
Nu bolusa, doar înregistreazăCategorieSubcategorie
- Bolusul se va înregistra doar
+ Bolusul va fi doar consemnat (nu va fi livrat de pompă)Autocompletează valorile glicemiei lipsă din NSSMB setat de pompăActivitate
@@ -788,7 +695,6 @@
Se folosește versiunea dev. Bucla închisă este dezactivată.Mod inginer activatModul inginer nu este activat și nu este în versiunea lansată
- %1$.2f U/hSe citește profilul bazalIstoricul pompei s-a schimbat după calcularea bolusului. Bolusul nu a fost livrat. Recalculați dacă mai este necesar un bolus.Bolus livrat, dar nu s-a reușit înregistrarea evenimentului. Aceasta se poate întâmpla când două bolusuri mici de aceeași valoare sunt livrate în mai puțin de două minute. Verificați istoricul pompei și înregistrările tratamentelor și folosiți Careportal pentru adăugarea intrărilor lipsă. Asigurați-vă că nu adăugați intrări duble.
@@ -811,15 +717,10 @@
SMB dezactivat în preferințeUAM dezactivat din setăriUAM dezactivat deoarece este bazat pe plugin-ul Oref1 pentru sensibilitate
- Se limitează maximul ratei bazale la %1$.2f U/o datorită %2$s
- limită pompă
- trebuie să fie o valoare pozitivămaximul multiplicatorului bazaleimaximul zilnic al multiplicatorului bazaleiS-a livrat un bolus în ultimele 3 minute, nu se livrează SMBBazala setată corect
- Se limitează procentul ratei maxime la %1$d%% datorită %2$s
- Se limitează bolusul la %1$.1f U datorită %2$sSe limitează bolusul extins la %1$.1f U datorită %2$sSe limitează max IOB la %1$.1f U datorită %2$sSe limitează carbohidrații %1$d g datorită %2$s
@@ -834,14 +735,13 @@
SMB nu este permis în mod buclă deschisăMâncareresetare
- Se așteaptă o sincronizare a timpului (%1$d s)Deconectat (%1$d min)Maximul total IOB peste care OpenAPS nu poate trece [U]Această valoare este denumită Max IOB în contextul OpenAPS,\nOpenAPS nu va adăuga mai multă insulină dacă IOB este mai mare ca această valoarePompă oprităPompă pornităPompă în pauză
- Timpul maxim de absorbție a mesei [o]
+ Timpul maxim de absorbție a mesei [h]Timpul în care orice mâncare se consideră absorbită. Carbohidrații rămași vor fi ignorați.TimpAfișează câmp pentru note în dialogurile de tratamente
@@ -850,7 +750,6 @@
Asistent de configurareTERMINAREAlegeți limba
- Solicitat: %1$.2fU Livrat: %2$.2fU Cod eroare: %3$sPrimul increment de insulinăAl doilea increment de insulinăAl treilea increment de insulină
@@ -873,7 +772,6 @@
Tipul pompei virtualeDefinirea pompeiBolus: Pas=%1$s\nBolus Extins: [Pas=%2$s, Durată=%3$smin-%4$sh]\nBazală: Pas=%5$s\nRBT: %6$s (cu %7$s), Durată=%8$smin-%9$sh\n%10$s
- * Doar valorile discrete, nu şi intervalele de valori sunt suportate ca şi incremente în pompa virtuală.Autocompletează glicemiile lipsăAsistent setăriCalcule incluse în rezultatul asistentului:
@@ -898,23 +796,12 @@
Începeți primul obiectivPermisiuneSolicitați permisiunea
- Aplicația necesită permisiune de localizare pentru scanarea prin BT
- Aplicația necesită permisiune de acces la mediul de stocare pentru a putea înregistra jurnalele
+ Aplicația are nevoie de permisiune la fereastra sistemului pentru a afișa notificări
+ Aplicația are nevoie sa acceseze locația pentru scanare Bluetooth și identificare WiFi
+ Aplicația are nevoie de permisiunea de a accesa unitatea de stocare pentru a scrie fișierele registru și pentru a exporta setărileCerințăConfigurați plugin insulinăIeșire
- Opțiunile utilizatorului
- Afișare a formatului timpului
- Buton derulare
- Sunet la apăsarea butonului
- Alarmă
- Sunet
- Vibrație
- Ambele
- Unități glicemie
- Salvați opțiunile în pompă
- Pornit
- OpritAfișare navigațieÎnchidere navigațiePreferințe plugin
@@ -928,15 +815,19 @@
= 100]]>Țintele temporare joase scad sensibilitatea
+ Rezistența la insulină poate coborî targetul
+ Când e detectata rezistență la insulină, coboară targetul
+ Sensibilitatea la insulină crește targetul
+ Când este detectată sensibilitate la insulină, crește targetulSetare pompă invalidă, verificați documentația și asigurați-vă că meniul Quick Info este denumit QUICK INFO, folosind aplicația 360 Configuration Software.Personalizat
- Diferență majoră de timp
- Diferență majoră de timp:\nOra din pompă este diferită cu mai multe de 1.5 ore.\nPotriviți manual ora din pompă și asigurați-vă că sincronizarea cu datele istorice din pompă nu va produce un comportament neașteptat.\nDacă este posibil, ștergeți istoricul pompei înaintea modificării orei și inactivați bucla închisă pentru un interval DIA după ultima intrare istorică cu timp greșit, dar minim o DIA de acum încolo.AndroidAPS pornit curatAu fost găsite setări stocateAtenție: Dacă activați și conectați o pompă fizică, AndroidAPS va copia setările bazalelor din profilurile din aplicație în pompă, suprascriindu-le pe cele existente deja în pompă. Asigurați-vă că aveți setările corecte ale bazalelor în AndroidAPS. Dacă aveți dubii sau nu doriți suprascrierea setărilor bazalelor existente în pompă, apăsați butonul de anulare și repetați acțiunea mai târziu.Date incomplete despre tratamentSetări de întreținere
+ Destinatar email
+ Criptează setările exportateNr de loguri de trimisMentenanțăMENTN
@@ -955,17 +846,10 @@
Modul APS preferatTotalCalc
- ÎmperechereTrimite înregistrările zilei de astăzi către dezvoltatori, împreună cu timpul curent. Situație neașteptată.
- Încălcare a valorii maxime a bolusului
- Eroare de comandă
- Eroare de viteză
- Încălcare a limitării cantităţii de insulinăCerere de schimbare minimală [%]Bucla deschisă va afișa o nouă cerere de schimbare doar dacă nou valoare este mai mare cu %. Valoarea implicită este 20%
- Vă rog să conectați pompa cu telefonul!Căutare dispozitive…
- Așteptați…Asociere reușităSunt identice codurile afișate aici și cele de pe pompă?Asociere Insight
@@ -985,6 +869,10 @@
Înregistrează alerteleActivează emularea RBTFolosește bolus extins în locul RBT pentru a trece de limita de 250%%
+ Dezactivează vibrațiile la livrarea manuală de bolus
+ Pentru bolus și bolus extins (valabil doar cu modelul Insight firmware 3.x)
+ Dezactivați vibrațiile la livrarea automată de bolus
+ Pentru SMB şi Bazale Temporare cu emulare de TBR (disponibil doar cu Insight firmware 3.x)Întârziere a deconectării [s]Număr de serieVersiunea de software
@@ -1054,7 +942,6 @@
este mai mare sau egală cueste mai mare canu este disponibilă
- necunoscutăGlicemia nu este disponibilăGlicemie %1$s %2$.0f %3$sGlicemie %1$s %2$.1f %3$s
@@ -1071,23 +958,10 @@
AutoAutomatizare== ∑ %1$s U
- U/o
- g/U
- /UÎnregistrează schimbarea senzorului în NSCrează eveniment ”Schimbare Senzor” în NS la pornirea senzoruluiTomato (MiaoMiao)Tomato
- secundă
- minut
- oră
- zi
- săptămână
- secunde
- minute
- ore
- zile
- săptămâniUtilizatorul Tidepool (de obicei adresa de email)Numele de utilizatorParola Tidepool
@@ -1103,6 +977,8 @@
Înregistrează bazalele temporareÎnregistrează schimbările de profil, țintele temporareÎnregistrează testările de glicemie
+ Schimbare oră vară/iarnă în mai puțin de 24h
+ Schimbare oră vară/iarnă în mai puțin de 3 ore - buclă închisă dezactivatărestricție de stocare internăEliberați cel puțin %1$d MB din spațiunl de stocare al telefonlui! Buclă dezactivată!Format greșit
@@ -1112,7 +988,6 @@
Timp recurentLa fiecareNiciodată
- %1$dminCondiție:Acțiune:IOB [U]:
@@ -1126,8 +1001,8 @@
S-a detectat rularea unei versiuni invalide. Buclă dezactivată!versiune vecheversiune foarte veche
- 2o
- %1$.2fU
+ O versiune nouă este disponibilă de cel puțin %1$d zile! Reveniți la LGS după %2$d zile, bucla închisă va fi dezactivată după %3$d zile
+ 2hAplicația Dexcom (modificată)DXCMPrimește valori glicemie de la aplicația Dexcom modificată.
@@ -1141,6 +1016,8 @@
existănu existăȚintă temporară %1$s
+ Conexiune Bluetooth cu dispozitivul %1$s %2$s
+ Conexiune la dispozitivul Bluetooth WiFi SSID %1$s %2$sAutosens %1$s %2$s %%Autosens %
@@ -1153,157 +1030,34 @@
Long:Dist [m]:Nume:
+ %1$s %2$s
+ Când
+ Când sunteți în interiorul zonei
+ Când sunteți în afara zonei
+ Când intrați în zona numită
+ Când părăsiți zona numităUltimul bolusUltimul bolus acum %1$s %2$s minCOBCOB %1$s %2$.0fNumele acțiuniiEDITARE
+ Selectați tipul de acțiune
+ Selectați un tip de factor declanșatorDeclanșatori:ȘTERGECondiții pre-existente:
-
- Operațiunea nu este suportată de către pompă și/sau driver.
- Operațiunea nu este ÎNCĂ suportată de către pompă.
-
- Pentru asocierea cu pompa Medtronic este necesar un dispozitiv RileyLink și un anumit model de pompă
-
- Număr serial pompă
- Tip pompă
- Frecvență pompă
- Întârziere până la pornirea bolusului (s)
- Bolusul maxim în pompă (U)
- Bazală maximă în pompă (U/o)
- Criptare Medtronic
- US & Canada (916 MHz)
- Globală (868 Mhz)
- Criptare software 4b6b
- Criptare hardware 4b6b
- Pornește și sincronizează
- Șterge blocajul de bolus
- Resetează configurația RileyLink
- Tipul bateriei (Afișare avansată)
- Fără selecție (Afișare simplificată)
- Alcalină (Afișare extinsă)
- Litiu (Afișare extinsă)
-
- SCAN
- STOP
- Selectat
- Scanare RileyLink
- BLE nu este suportat.
- Bluetooth-ul este dezactivat.
- Localizarae este dezactivată
- Pentru a putea căuta dispozitive Bluetooth noi, trebuie să activați localizarea. AAPS nu folosește datele dumneavoastră de localizare și acestea pot fi dezactivate după stabilirea conexiunii cu pompa.
- Activează
- Nu
- Scanează
- Scanare terminată
- Eroare la scanare: %1$d
-
- Setări
- Istoric
- Stare RileyLink
- Stare pompă
- Setări RileyLink
- RileyLink
- Adresă configurate
- Dispozitiv conectat
- Stare conexiune
- Eroare conexiune
- Dispozitiv
- Tip dispozitiv
- Model dispozitiv
- Ultima frecvență utilizată
- Ultima conexiune cu dispozitivul
- Firmware RL
-
- Se inițializează conexiunea Bluetooth…
- Eroare Bluetooth
- Conexiune Bluetooth pregătită
- Nepornit
- Se inițializează RileyLink…
- Eroare RileyLink
- Se îmbunătățește RileyLink și pompa
- Probleme la conectarea cu pompa
- Conectat
-
- Dispozitivul nu este RileyLink
- Nu se poate găsi RileyLink
- Bluetooth dezactivat
- Nu există un adaptor Bluetooth
- Conectare eșuată
- Pompă indisponibilă
- Nu se poate comunica cu pod-ul
- Nesetată
-
- Pompă Medtronic
- Omnipod
-
- Erori
- Număr serial nesetat.
- Număr serial invalid.
- Tipul pompei nesetat.
- Tip de pompă nesuportat.
- Frecvența pompei nesetată.
- Frecvența pompei nesuportată.
- Adresa RileyLink invalidă.
- Tipul de pompă detectat nu corespunde cu cel configurat.
- Tipul de profil bazal setat în pompă este incorect (trebuie să fie STD).
- Tip incorect de RBT setat în pompă (trebuie să fie Absolut).
- Bolus maxim setat incorect în pompă (trebuie să fie %1$.2f).
- Bazala maximă setată incorect în pompă (trebuie să fie %1$.2f).
- Operațiune imposibilă. \n\n Trebui să configurați mai întâi pompa Medtronic înainte de a face această operație.
- S-a solicitat o schimbare de oră mai mare de 24 de ore.
-
- Bazale
- Configurații
- Notificări
- Statistici
- Necunoscute
- Toate
- Istoric pompă Medtronic
-
- Niciodată contactată
- Se pornește
- Eroare de comunicație
- Comunicația nu a reușit la timp
- Pompă indisponibilă
- Configurație invalidă
- Activă
- În repaus
-
- Ați anulat un bolus după ce a fost deja transmis către pompă. Deoarece pompa Medtronic nu permite o anulare de bolus, va trebui să faceți acest lucru în mod manual, din pompă. Puneți pompa în modul Suspend și apoi Repornire (dacă totuși doriți să anulați bolusul). Aplicația se va sincroniza automat cu pompa la următoarea contactare a acesteia (în mai puțin de 5 minute).
- Nu a putut fi citită RBT.
- Nu a putut fi anulată RBT curentă. Se oprește operațiunea de anulare.
- Stabilirea profilului a eșuat deoarece, pe baza modelelor, aveți o rată bazală prea mare: %1$s
- Bolusul nu a putut fi livrat.
- Bolusul nu a putut fi livrat deoarece cantitatea de insulină din rezervor (%1$.2f) este mai mică decât cea necesară (%2$.2f).
- RBT nu a putut fi setată.
- Nu a putut fi anulată RBT curentă.
- Profilul bazal nu a putut fi stabilit.
- Profilul bazal existent deja este existent, nu va fi reintrodus.
- Preia istoricul - Pagina %1$d (%2$d/16)
- Preia istoricul - Pagina %1$d
- Preia timpul din pompă
- Preia setările
- Preia modelul de pompă
- Preia profilul bazalelor
- Setează profilul bazalelor
- Preia bazala temporară
- Setează bazala temporară
- Setează bolusulSchimbă profilul înSchimbă profilul la %1$sUltima conexiune la pompăUltima conexiune la pompă [minute în urmă]Ultima conexiune la pompă %1$s %2$s minute în urmăTrimite SMS: %1$s
+ Trimite SMS către toate numereleTrimite SMS cu text%2$+.2fU]]>Restricție de bolus aplicată: %2$.2fU la %3$.2fU]]>!!!!! A fost detectată o absorbție lentă a carbohidraților: %2$d%% din timp. Reverificați calculele. COB poate fi supraestimat, astfel că este posibilă administrarea de mai multă insulină !!!!!]]>
- %1$.0f / %2$d ULivrați doar partea aceasta din rezultatul sugerat de wizard [%]Wizard bolus face un calcul, dar numai o parte din insulina calculată este și livrată. Este mai eficient când se folosește cu algoritmul SMB.Se încarcă ...
@@ -1311,7 +1065,6 @@
Interval de timpTimpul este între %1$s și %2$sÎntre
- ÎnchideSe mărește valoarea bazalei maxime deoarece setarea este mai joasă decât bazala maximă din profilConținutul mesajului nu este valid%1$s ISF: %2$.1f
@@ -1320,6 +1073,228 @@
%1$d%%Asistent bolusaremin
+ Nume profil:
+ Selectat:
+ Unități
+ Doriți să schimbați profilul și să renunțați la modificările făcute profilului curent?%1$dg
+ Pornit
+ Oprit
+ Șterge starea \"Terminat\"
+ Șterge starea \"Început\"
+ Doriți să reîncepeți obiectivul? Vă puteți pierde progresul.
+ Schimbare oră și/sau fus orar în pompă
+ Nicio pompă selectată
+ Selectați unitățile în care doriți să afișați valorile
+ Transmiteți modificările profilului local către NS
+ DIA
+ IC
+ ISF
+ TARG
+ Clonează
+ Salvează sau resetează modificările curente mai întâi
+ Ştergeţi profilul curent?
+ Creați un profil local nou pe baza acestui profil?
+ Numele profilului conține puncte.\nAcest lucru nu este permis de NS.\nProfilul nu a fost înregistrat în NS.
+ Valoarea inferioară a intervalului țintă (doar afișare)
+ Valoarea superioară a intervalului țintă (doar afișare)
+ Reordonează
+ Vârstă:
+ Greutate:
+ ID:
+ Trimiteți
+ Cel mai frecvent profil:
+ Notă: Doar datele vizibile pe acest ecran vor fi încărcate în mod anonim. ID-ul este alocat acestei instalări de AndroidAPS. Puteți trimite date din nou dacă profilul dumneavoastră principal se modifică, dar lăsați-l să ruleze cel puțin o săptămână pentru ca rezultatul să fie vizibil în interval de timp. Ajutorul dvs. este binevenit.
+ Sondaj
+ Valoare vârstă invalidă
+ Valoare greutate invalidă
+ Intrare % invalidă
+ %1$s: Hipo: %2$02d%% Normal: %3$02d%% Hiper: %4$02d%%]]>
+ Medie
+ Timp în țintă
+ Monitorizare activitate
+ Doriți să resetați statisticile de activitate?
+ Statistici
+ Glicemie aleatoare
+ Generare glicemie aleator (doar mod Demo)
+ Glicemie
+ Instrumente
+ Arată calculul
+ Eveniment automatizare
+ Deja setat
+ Ștergeți coada? Toate datele din coadă vor fi pierdute!
+ Utilizarea unui bolus extins va opri modul buclă închisă pe timpul livrării bolusului extins. Sigur doriți acest lucru?
+ Bucla închisă dezactivată din cauza livrării bolusului extins
+ BE
+ \"Verificator de telefon\"
+ Meniu diagramă
+ AS
+ Timp solicitare SMB
+ Timp de execuţie SMB
+ Timp solicitare bazală temporară
+ Timpul de execuție al bazalei temporare
+ Alerte pompă Insight
+ de la aplicația Authenticator pentru: %1$s
+ Activare Authenticator
+ Autentificați comenzile folosind o parolă unica generată de Google Authenticator sau alte aplicații 2FA similare.
+ PIN adițional la sfârșitul token-ului
+ Cifre suplimentare care ar trebui să fie memorate și adăugate la sfârșitul fiecărei parole unice generate
+ Setare Authenticator
+ Parola unică pentru verificare:
+ Resetați Authenticatori
+ Resetați cheia pentru Authenticator
+ Sunteți sigur că vreți sa resetați cheia pentru Authenticator? Acest lucru va invalida toți Authenticatorii configurați și va trebui să ii setați din nou.
+ S-a generat o nouă cheie pentru Authenticator! Vă rugăm să utilizați QRCode actualizat pentru a configura autentificatori.
+ 1. Instalați Authenticator
+ 2. Scanați codul pentru a seta codurile unice pentru AndroidAPS
+ 3. Testați o parolă unică
+ Resetați Authenticatori
+ Pe fiecare telefon urmăritor instalați o aplicație de tip Authenticator care suporta tokens RFC 6238 TOTP. Asemenea aplicații gratuite populare sunt:\n • Authy\n • Google Authenticator\n • LastPass Authenticator\n • FreeOTP Authenticator
+ NU DISTRIBUIȚI acest cod online!\nUtilizaţi-l doar pentru a seta aplicația Authenticator pe telefoanele urmăritoare.
+ Prin resetarea autentificatorului invalidați toți autentificatorii existenți. Va trebui să îi configurați din nou!
+ La conectare
+ La deconectare
+ Predicții
+ Panta deviaţiei
+ Autorizarea a eșuat
+ Insulină totală
+ Parola master (principală) este folosită pentru criptarea copiilor de rezervă și pentru a suprascrie securitatea în aplicație. Rețineți-o sau păstrați-o într-un loc sigur.
+ Parolele nu coincid
+ Parola principală curentă
+ Lumini de stare
+ Copiați setările din NS
+ Copiaţi setările NS (dacă există)?
+ Tema originală
+ Butoanele sunt afișate întotdeauna în partea de jos a ecranului
+ Display mare
+ Tema
+
+ Niciodată contactată
+ Se pornește
+ Eroare de comunicație
+ Comunicația nu a reușit la timp
+ Pompă indisponibilă
+ Configurație invalidă
+ Activă
+ În repaus
+
+
+ Integrare pompa pentru Omnipod, necesită dispozitivul RileyLink (cu versiune firmware de cel puțin 2.0).
+
+ Bip pentru Bolus Activat
+ Bip pentru Bazală Activat
+ Bip pentru SMB Activat
+ Bip pentru TBR Activat
+ Opțiuni de depanare Pod Activate
+ Detectare DST/fus orar activată
+
+ Pod Mgmt
+ Status Pod
+ %1$.2f U rămase
+ Peste 50 U
+ Adresă Pod
+ Pod-ul expiră
+ Nu există informații
+ Niciun Pod conectat
+ Neiniţializat
+ Alerte pod active
+ Alerte de confirmare
+
+ Omnipod (433.91 MHz)
+
+ Operațiunea nu este posibilă.\n\nTrebuie să configuraţi Omnipod înainte de a putea efectua această operațiune.
+ Operaţiunea nu este posibilă.\n\n Trebuie să aşteptaţi câteva minute până când AAPS încearcă să seteze profilul pentru prima dată.
+ Acțiune PodInitActionType ilegala: %1$s
+ Niciun Pod activ.
+ Verificarea comenzii a eşuat.
+ A apărut o eroare neașteptată. Vă rugăm să o raportați! (tip: %1$s).
+ Comunicarea a eșuat: s-au primit parametri de intrare incorecți.
+ Comunicarea a eșuat: timpul a expirat.
+ Comunicarea a eşuat: a apărut o eroare neaşteptată. Vă rugăm să o raportaţi!
+ Comunicarea a eşuat: verificarea integrităţii mesajului a eşuat.
+ Comunicarea a eşuat: a fost primit un pachet invalid de la Pod.
+ Comunicarea a eșuat: Pod-ul este într-o stare incorectă.
+ Comunicarea a eșuat: s-a primit un răspuns incorect de la Pod.
+ Comunicarea a eșuat: s-a primit un mesaj cu un număr de secvență invalid de la Pod.
+ Comunicarea a eșuat: s-a primit un mesaj cu o adresă invalidă de la Pod.
+ Comunicarea a eșuat: nu s-a reușit decodarea mesajului de la Pod.
+ Comunicarea a eșuat: resincronizarea nonce nu a reușit.
+ Comunicarea a eșuat: nonce nu poate fi sincronizată.
+ Comunicarea a eşuat: nu s-au primit suficiente date de la Pod.
+ A fost detectată o eroare a Pod-ului (%1$03d %2$s). Vă rugăm să îl dezactivați pe acesta și să porniți unul nou.
+ Comunicarea a eșuat: Pod-ul a returnat un răspuns de eroare.
+
+ Gestionare Pod
+ Inițializare Pod
+ Dezactivare Pod
+ Resetare Pod
+ Istoric Pod
+ Setează bolusul
+ Anulați Bolus
+ Setează bazala temporară
+ Anulați bazală temporară (la nivel intern de către driver)
+ Anulați bazală temporară (impus de către utilizator)
+ Programați ratele bazale
+ Obțineți Status Pod
+ Obțineți Informații Pod
+ Setare timp
+ Configurare alerte
+ Confirmare alerte
+ Suspendați Livrarea
+ Reluați livrarea
+ Intrare necunoscută
+ %1$.1f U
+ %1$.1f U, CH=%2$.1f g
+ Rata: %1$.1f U, Durata: %2$d min
+ Dacă apăsați OK, statusul Pod-ului va fi resetat forțat şi nu veți mai putea comunica cu Pod-ul. Faceți acest lucru numai dacă nu mai puteți comunica deloc cu Pod-ul. Daca mai puteți comunica cu Pod-ul, va rugam sa folosiți opțiunea Dezactivare Pod.
+ Istoricul Pod-ului nu este disponibil momentan.
+ Umpleţi Pod-ul
+ \nUmpleți noul Pod cu suficientă insulină pentru 3 zile.\n\nAr trebui sa auziți două bipuri de la Pod în timpul procesului de umplere. Acestea indică faptul că, cantitatea minimă de 85U a fost introdusă. Asigurați-vă ca ați golit complet seringa de umplere, chiar și după ce ați auzit două bipuri.\n\nDupă umplerea Pod-ului, vă rugăm să apăsați Următorul.\n\nNotă: Nu scoateți capacul transparent al acului in acest moment.
+ Amorsare
+ Încercare de împerechere cu noul Pod și amorsare.\n\nAtunci când toate etapele sunt gata, puteți apăsa Următorul.\n\nNotă: vă rugăm să țineți Pod-ul foarte aproape de RileyLink în timpul procesului.
+ Atașați Pod-ul
+ \nPregătiți setul de infuzie. Scoateți capacul acului și suport adeziv și atașați Pod-ul la locul de infuzie.\n\nDacă, canula pare in neregulă, apăsați Anulare și aruncați Pod-ul.\n\nApăsați Următorul pentru a introduce canula și a începe livrarea bazalei.
+ Inserare canulă
+ Încercare de programare inițială a ratelor bazale si de insertie a canulei.\n\nCând toate elementele sunt gata, puteți apăsa Următorul.
+ Informații Pod
+ \nPod-ul este acum activ.\n\nRatele bazale au fost programate și canula a fost introdusă.\n\nVă rugăm să verificați că acul a fost introdus corect. Dacă considerați ca nu, înlocuiți Pod-ul.
+ Dezactivare Pod
+ \nApăsați Următorul pentru a dezactiva Pod-ul.\n\nNotă: Acest lucru va suspenda orice livrare de insulină și va dezactiva Pod-ul.
+ Dezactivare Pod
+ Dezactivare Pod.\n\nAtunci când toate elementele sunt gata, puteți apăsa Următorul.\n\nNotă: Dacă dezactivarea eșuează continuu, vă rugăm să apăsați Anulează și folosiți opțiunea Resetare Pod pentru a forța resetarea Pod-ului.
+ Pod dezactivat.\n\nScoateți Pod-ul și aruncați-l.
+ Împerechere Pod
+ Amorsare Pod
+ Umplere Canulă
+ Setează profilul bazalelor
+ Anulare livrare
+ Dezactivare Pod
+
+
+ Integrare cu pompa pentru Omnipod Dash.
+ Finalizare memento împerechere
+ Finalizare memento setare
+ Pod-ul va expira în curând
+ Pod-ul va expira în curând
+ Oprirea este iminentă
+ Nivel rezervor scăzut
+ Alertă necunoscută
+ Setarea ratelor bazale s-ar putea să fi eșuat. Livrarea ar putea fi suspendată! Vă rugăm să reactualizați starea Pod-ului.
+ Setarea ratelor bazale temporare s-ar putea să fi eșuat. Dacă a existat o bazală temporară în livrare, aceasta ar putea fi fost anulată! Vă rugăm să reactualizați starea Pod-ului.
+ Setarea datei și orei s-ar putea să fi eșuat. Livrarea ar putea fi suspendată! Vă rugăm să reactualizați starea Pod-ului.
+ Nu se poate verifica dacă bolusul a reușit. Verificați dacă Pod livrează ceva sau anulați bolusul.
+ Statistici RL
+ Jurnal Puls
+ Compară profilurile
+ Ajutor profil
+ Profil implicit
+ Profil curent
+ Profil disponibil
+ Tip profil
+ Vârstă: %1$.0f TDD: %2$.0f kg
+ Vârstă: %1$.0f TDD: %2$.0f U %3$d%%
+ Vârstă: %1$.0f Greutate: %2$.0f kg
+ % din bazală
+ Profil implicit DPV
diff --git a/app/src/main/res/values-ru-rRU/exam.xml b/app/src/main/res/values-ru-rRU/exam.xml
index 61c1650a5b..732da76770 100644
--- a/app/src/main/res/values-ru-rRU/exam.xml
+++ b/app/src/main/res/values-ru-rRU/exam.xml
@@ -1,7 +1,7 @@
Что верно о длительности работы инсулина DIA?
- Тема: продолжительность действия инсулина DIA
+ Тема: продолжительность действия инсулина DIAМинимальное значение 3 часа.Минимальное значение 5 часов.https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html?#insulin
@@ -124,7 +124,7 @@ Context | Edit Context
Приложения Loop на iPhone.Приложения Spike на iPhone.https://androidaps.readthedocs.io/en/latest/EN/Children/Children.html
- Тема: Коэффициент чувствительности к инсулину
+ Тема: Коэффициент чувствительности к инсулинуБолее высокие значения ISF приводят к меньшей подаче инсулина, когда AAPS исправляет высокую ГК.Более низкие значения ISF приводят к меньшей подаче инсулина, когда AAPS исправляет высокую ГК.Изменение значений ISF никак не влияет на количество инсулина, подаваемого AAPS при коррекции высокой ГК.
@@ -132,7 +132,7 @@ Context | Edit Context
Изменение значения ISF в профиле достаточно для применения изменений.https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#insulin-sensitivity-factor-isf-mmol-l-u-or-mg-dl-uhttps://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html
- Тема: Сотношение инсулин-углеводы IC
+ Тема: Соотношение инсулин-углеводы ICБолее высокие коэффициенты инсулин-углеводы IC приводят к уменьшению инсулина на данное количество углеводов.Более низкие коэффициенты инсулин-углеводы IC приводят к уменьшению инсулина на данное количество углеводов.Если у вас 0 активных углеводов COB, изменение соотношения инсулин-углеводы IC приведет к иному количеству инсулина на коррекцию данной ГК.
diff --git a/app/src/main/res/values-ru-rRU/protection.xml b/app/src/main/res/values-ru-rRU/protection.xml
index 6198bca5d9..ebc9b10c25 100644
--- a/app/src/main/res/values-ru-rRU/protection.xml
+++ b/app/src/main/res/values-ru-rRU/protection.xml
@@ -15,6 +15,8 @@
Без защитыЗащитаНе задан главный пароль!\n\nЗадайте главный пароль в настройках (%1$s → %2$s)
+ Небезопасный резервный вход
+ Биометрической защите требуется главный пароль для безопасности.\n\n Установите главный пароль!Пароль задан!Пароль не заданПароль не был изменён
diff --git a/app/src/main/res/values-ru-rRU/strings.xml b/app/src/main/res/values-ru-rRU/strings.xml
index dc101ab364..2926425650 100644
--- a/app/src/main/res/values-ru-rRU/strings.xml
+++ b/app/src/main/res/values-ru-rRU/strings.xml
@@ -6,19 +6,16 @@
Безопасность терапииМакс разрешенный болюс [U] ед.
- макс разрешенные углеводы (г)
- опции
+ Макс разрешенные углеводы (г)
+ НастройкиСинхронизировать назначения с NSобнулить базыВы действительно хотите обнулить базы данных?Выход
- Для величин >200%% пользуйтесь пролонгированным болюсом
- устройство блутус danaRВсегда пользуйтесь абсолютными величинами для базалаПожалуйста перезагрузите телефон или перезапустите AndroidAPS из системных настроек \иначе AndroidAPS не будет вести лог (важно для отслеживания и проверки алгоритмов)!Это устройство не поддерживает меню оптимизации батареи - могут быть проблемы с производительностью.Кнопки быстрого доступа к некоторым распространенным настройкам
- Введите дополнительные записи логов.Применяется для настройки активных плагиновОбучающая программаПоказывает предварительные настройки приема пищи из Nightscout
@@ -36,10 +33,6 @@
Содержит профиль, заданный в NightscoutОпределите профиль только в одном блоке времени.Интеграция с помпой Accu-Chek Combo, требует наличия установленного алгоритма
- Интеграция с помпой DANA Diabetcare R
- Интеграция с отечественной помпой DANA Diabetcare R
- Интеграция с помпой Dana Diabetcare R с обновленной прошивкой
- Интеграция с помпой DANA Diabetcare RSИнтеграция с помпой для тех, кто делает многочисленные подколки для компенсации диабетаИнтеграция с помпами, еще не имеющими драйвера (незамкнутый цикл)Чувствительность вычисляется аналогично алгоритму oref0, но можно включить период прошлого. Минимальное усвоение углеводов вычисляется на основе макс усвоения из настроек.
@@ -54,13 +47,6 @@
Мониторить и контролировать AndroidAPS при помощи часов WearOS.Показать информацию о работе алгоритма ИПЖ на экране смарт-часов xDrip+.Дистанционное управление AndroidAPS при помощи команд SMS.
- единицы
- DIA (время действия инсулина)
- IC (инсулин/углеводы):
- ISF (чувствительность к инсулину)
- базал
- Целевое значение СК:
- ПРОФИЛЬ НЕ ЗАДАНинсулин:углеводы:IOB: активн инс
@@ -76,15 +62,9 @@
TTуглеводыкоррекция
- едболюс IOBвыполнить сейчасВИРТУАЛЬНАЯ ПОМПА
- базовая величина базала
- врем базал
- продленный болюс
- батарея
- резервуарOKпоследнее выполненноепараметры ввода
@@ -96,16 +76,11 @@
результатРезультат: %1$s %2$sданные гликемии недоступны
- изменения не запрошенызапрос
- Базал
- продолжительность
- основаниегликемияизменениедельта:конфигуратор
- Целиначалопрофиль NSпростой профиль
@@ -123,7 +98,6 @@
ОбщееЭто некоторые общепринятые плагины которые могут пригодиться.Какие ограничения применяются?
- днейограничениязамкнутый циклзамкнутый цикл
@@ -132,25 +106,19 @@
после наложенных ограниченийВременный базал определяется помпойПоследнее предпринятое
- OK
- ОтменитьAPS не выбрана или не выдала результатбезопасностьмодуль не активенограничение нарушеноОшибка подачи болюса
- Ошибка подачи врем базалаВеличина базала [%]принять новый врем базал:болюскалькуляторприменено ограничение!
- подтверждение
- болюсболюс:базалбазал:
- углеводыизмените введенные данныеисточник СКОткуда должен получать данные AndroidAPS?
@@ -158,34 +126,17 @@
режим APSзамкнутый циклоткрытый цикл
+ Приостановка помпы на низкой ГКцикличность неактивированаДеактивировать цикличностьАктивировать цикличностьесть новое предложение
+ Предложены углеводыНеподдерживаемая версия NightscoutЗЦ ОТМЕНЕН ОГРАНИЧЕНИЯМИбазал IOBприменено ограничение болюсаприменено ограничение углеводов
- проверка СК
- оповещение
- заметка
- вопрос
- нагрузка
- смена места катетера помпы
- Установка сенсора мониторинга глюкозы
- старт сенсора
- замена картриджа инсулина
- Смена профиля
- болюс на перекус
- болюс на еду
- болюс на коррекцию
- комбинированный болюс
- начало действия врем базала
- оконч действия врем базала
- корректировка углеводов
- OpenAPS офлайн
- тип событиядругоеглюкометрсенсор
@@ -213,15 +164,17 @@
файл не найденэкспорт настроекимпорт настроек
- макс разрешенный врем базал Е/ч
+ Максимальное значение ед./ч для скорости временного базалав контексте OpenAPS называется макс базалмакс базал активн инс подаваемый с OpenAPS (ед)Эта величина называется Max IOB (макс активн инс) в OpenAPS\n. Это макс кол-во инсулина в ед. [U] которое APS может подать единовременно.
- отклонитьБудет предложено ввести главный пароль, который будет использоваться для шифрования экспортированных параметров.Вам будет предложено ввести главный пароль, необходимый для расшифровки импортированных настроек.Экспорт отменен! Настройки НЕ экспортированы!Импорт отменен! Настройки не импортированы!
+ Не удается импортировать настройки!
+ Вернитесь на главный экран и повторите попытку.
+ Выберите файл для импортаПроверьте настройки перед импортом:Не удается импортировать настройки!Не следует импортировать настройки!
@@ -234,6 +187,8 @@
Вы используете устаревший формат из старых версий AAPS, который не безопасен! Используйте его только в крайнем случае, если у вас нет экспорта в текущем формате JSON.Импортируемым параметрам уже %1$s дней! Может быть у вас есть более актуальные параметры или вы выбрали неправильный файл? Не забудьте регулярно экспортировать параметры!Недопустимый формат даты и времени!
+ Параметры из другой вспомогательной версии приложения. Если импортируете после обновления, это нормально но после импорта проверьте, все ли предпочтения по-прежнему верны!
+ Параметры из другой основной версии приложения. Основные версии существенно различаются и могут иметь несовместимые настройки! После импорта убедитесь, что параметры все еще верны!Формат файлаДата созданияВерсия AAPS
@@ -256,34 +211,17 @@
Ошибка расшифровки, указан недопустимый пароль или файл параметров изменен! Возможно, импортированный файл был экспортирован с использованием другого главного пароля.Отсутствует конфигурация шифрования, формат параметров недопустим!Неподдерживаемый или не прописанный алгоритм шифрования!
- DanaR
- соединение устанавливается
- соединение установлено
- Разъединено
- Настройки помпы DanaR
+ экспортировано сегодня
+ экспортировано %1$s назад
+ экспортировано в %1$s
+ экспортировано менее часа назад
+ в каталоге: %1$sлицензионное соглашение с пользователемНЕ ДОЛЖНО ИСПОЛЬЗОВАТЬСЯ ДЛЯ ПРИНЯТИЯ МЕДИЦИНСКИХ РЕШЕНИЙ. ПРОГРАММА НЕ ДАЕТ ГАРАНТИЙ В РАМКАХ СУЩЕСТВУЮЩЕГО ЗАКОНОДАТЕЛЬСТВА. ПРЕДОСТАВЛЯЕТСЯ \"КАК ЕСТЬ\" БЕЗ ЯВНЫХ ИЛИ СКРЫТЫХ ГАРАНТИЙ ВКЛЮЧАЯ НО НЕ ОГРАНИЧИВАЯСЬ ВОЗМОЖНОСТЬЮ КОММЕРЧЕСКОГО ИСПОЛЬЗОВАНИ ИЛИ СООТВЕТСТВИЯ КАКИМ-ЛИБО ЦЕЛЯМ. ВСЕ РИСКИ ЛОЖАТСЯ НА ВАС. В СЛУЧАЕ НЕРАБОТОСПОСОБНОСТИ ПРОГРАММЫ ВЫ НЕСЕТЕ ВСЕ РАСХОДЫ СВЯЗАННЫЕ С ОБСЛУЖИВАНИЕМ РЕМОНТОМ ИЛИ КОРРЕКТИРОВКОЙ. я понимаю и принимаюсохранить
- адаптер блутус не найден
- выбранное устройство не найдено
- ошибка соединения
- активный инсулин на помпе
- суточные единицы
- предыдущий болюс
- %1$.1fч назад
- введенные данные неверны
- величина не задана должным образомобновить профиль
- просмотр профиля
- выполнено
- комментарий
- успех
- процент
- абсолют
- отмена врем базалаSMS коммуникатор
- ожидание результата от помпыразрешенные телефонные номера+ XXXXXXXXXX; + YYYYYYYYYYЧтобы подать болюс %1$.2fU ответьте кодом %2$s
@@ -304,60 +242,24 @@
Цель %1$s на %2$d минутЦель %1$s на %2$d минут установлена успешноВременная цель успешно отменена
- Подается болюс %1$.2fед.разрешить команды через смс
- палец
- сенсор
- вручную
- Временные целевые значения
- Отмена времнной целинастройки профиля DanaRвремя действия инсулина (ч.):Продолжительность активности инсулина
- не удалось обновить базальный профиль
- Перезагрузка историипередача данных
- Болюс E (удлиненный)
- Болюс DS (комбинированный стандартный)
- Болюс DE (комбинированный расширенный)
- ошибка
- дозаправка
- почасовой базал
- гликемия
- углеводы
- внимание!
- Всего передано %1$d записей
- болюс S
- оповещения об опасности
- почасовые базалы
- болюсы
- углеводы
- суточный инсулин
- ошибки
- гликемия
- Перезаправка
- Останов
- Попытка установить связь: %1$d сек
- пароль помпы
- неверный пароль помпы
- помпа занята
- Болюс подан
- остановленоБолюс остановленОстановка болюса
- закупорка
- стоп
- нажат стоп
- ожидание помпы
- Начинается подача болюса %1$.2fед.
- разрешенный предел достигнут
- профиль не выбранзцикл был деактивированзцикл был активированзцикл не работаетзцикл работает%1$.2f ограничено до %2$.2fВеличина %1$s недопустима
+ Чтобы подсоединить помпу ответьте кодом %1$s
+ Ошибка подключения к помпе
+ Для разъединения с помпой на %1d мин ответьте кодом %2$s
+ Помпа отключена
+ Связь с помпой возобновленаудаленная команда не разрешенаУдаленный болюс недоступен, повторите попытку позже.Чтобы подать базал %1$.2fед./ч в течение %2$d мин. ответьте кодом %3$s
@@ -366,6 +268,9 @@
Чтобы ввести %1$d г в %2$s ответьте кодом %3$sДля начала подачи базала %1$d%% на %2$d мин. ответьте кодом %3$sдля приостановки цикла на %1$d мин ответьте кодом %2$s
+ Чтобы возобновить цикл ответьте кодом %1$s
+ Чтобы включить цикл ответьте кодом %1$s
+ Чтобы отключить цикл ответьте кодом %1$sврем базал %1$.2fU/h на %2$d мин начат успешноПролонгированный болюс %1$.2fед. на %2$d мин. начат успешноУглеводы %1$d г введены успешно
@@ -391,22 +296,18 @@
болюс на едукоррекциядействия
- AndroidAPS запущентолько передача в NS (синхронизация отсутствует)только передача в NS. работает в SGV только если выбран местный источник вроде xdrip. не работает в профилях при действующем профиле NSпомпа не инициализирована
- помпа не инициализирована, профиль не установленпрайм/заполнениеубедитесь что количество соответствует характеристикам вашей инфузионной системыдругое
- заполнить стандартное количество инсулина
+ Заполнить стандартное количество инсулинакнопка 1кнопка 2кнопка 3Единицы:Единицы
- мг/дл
- ммоль/лВремя действия инсулина DIAцелевой диапазондиапазон для визуализации
@@ -416,17 +317,7 @@
Смарт-часы Wearповторить отправку всех данныхОткрыть настройки на Wear
- ошибка помпы
- низкий заряд батареи
- Выключение помпы
- батарея помпы разряжена
- DanaR КореяШаг базала:
- настройка базального профиля не состоялась
- базальный профиль помпы обновлен
- отключить режим EasyUI в помпе
- Активировать удлиненные болюсы на помпе
- замена режима с U/d на U/h на помпезначение базала ниже минимума. профиль не создан!гликемия:прошлый СК:
@@ -434,7 +325,6 @@
MM640gтекущие уведомлениястарые данные
- %1$d мин. назад%1$d мин. назадлокальный профильПомощник болюса OpenAPS AMA
@@ -450,41 +340,22 @@
ГипоНагрузкаУдалить запись
- статистика DanaR
- накопительные TDD
- экспоненциально взвешенные TDD
- базал
- болюс
- общая суточная доза
- дата
- коэффициент
- количество дней
- вес
- возможны неточности если болюсы использовались для заполнения
- старые данные. нажмите \"перезагрузка\"
- общий базал
- общий базал*2
- инициализация...ДЕЙСТВКОНФЗЦППOAPSЛП
- ДАНАНАЧАЛОВиртПомпапрофильNSНАЗНАЧ
- ПОРТЛЕЧЦЕЛИWEARSMSсокращенные имена табулвсегда используйте укороченное среднее приращение вместо простогополезно когда данные из нефильтруемых источников вроде Xdrip зашумляются
- расширенные настройки
- модель: %1$02X протокол: %2$02X код: %3$02Xпрофильзначение по умолчанию:3 Это ключевой ограничитель безопасности OpenAPS. Он ограничивает величину вашего базала максимум до 3x максимума. Вам вероятно не понадобится менять эту величину но вам следует понимать, что она входит в формулу дуэта \"максимум 3x ежедневное; 4x текущее\"значение по умолчанию: 4 . Это вторая половина обеспечения безопасности OpenAPS из дуэта \"максимум 3x ежедневное; 4x текущее\" Означает что ваша база независимо от установок помпы не может быть выше чем это число умноженное на текущее значение базала. Ограничение для того, чтобы предотвратить вторжение в опасную зону из-за высокого уровня установленных значений базы без понимания алгоритма работы приложения. Большинству людей никогда не потребуется изменять это значение, скорее всего нужно поменять другие настройки если вы чувствуете, что вам мешает это ограничение.
@@ -503,18 +374,9 @@
калибровка отправлена. в xdrip должен быть активирован приемxdrip не получает калибровокРабота помпы остановлена
- получение статуса помпы
- установка врем базала
- остановка врем базала
- Настройка удлиненного болюса
- Остановка удлиненного болюса
- обновление значений базала
- разъединениевыполнениенастройки вирт помпыстатус передачи данных в NS
- неверный пароль
- приближается суточный лимит инсулинаклиент NSКЛNSАдрес URL:
@@ -538,7 +400,7 @@
показать IOB подробноразбивка IOB на болюсный и базальный IOB на циферблате смарт-часовнеудача - проверьте телефон
- недоступно
+ н/дВозраст пациентаребенокподросток
@@ -574,8 +436,6 @@
суперболюсначать работу с NSвыход из приложения для применения настроек
- DanaRv2
- инсулинКакой тип инсулина вы используете?быстродействующий инсулинNovorapid, Novolog, Humalog
@@ -596,11 +456,14 @@
Порог критического уровня наполненности резервуара [U]Порог предупреждения о разрядке батареи [%]Порог предупреждения о критическом уровне разрядки батареи [%]
+ ОЖИДIOB акт инсакт углев
- прошивка
- прошлое соединение
- статус блутус
+ БАЗ
+ ОТКЛН
+ НАГР
+ НАДО
+ ЛИНОТКЛНо приложенииотсутствует смс подтверждениеОтсутствует разрешение телефона
@@ -611,24 +474,15 @@
добавить BGI в строку состоянияданные не передаются в NSданные передаваемые в NS не доходят. AAPS соединяется с NS но изменения туда не вносятся
- шаг базала
- шаг болюсаОтмена удлиненного болюсасенсор пропаботалКатетер помпы проработалИнсулин проработал
- час
- Неверный профиль !!!Переключить профильБатарея помпы работает
- замена батареи помпыопции оповещения
- Тревога выс
- Высокий
- Низкий
- Тревога низкий
- Устаревшие данные
- Тревога! устаревшие данные
+ Создать уведомления из оповещений NS
+ Создать уведомления из оповещений NSПорог оповещения об устаревших данных [min] (мин)Порог тревоги об устаревших данных [min] (мин)Интервал для autosens [h] (ч)
@@ -645,7 +499,6 @@
Настройки усваиваемостиМаксимальное время усваимости пищи [h] (час)Ожидаемое время усваивания всех углеводов пищи в часах
- Показать пролонгированный болюс в %%ВОЗРСенсВозрИнсВозрКан
@@ -670,7 +523,6 @@
ПОМПАДлительность (мин)Супер микро болюс OpenAPS
- Супер микро болюс SMBВключить непредвиденный прием пищи UAMВключить супер микро болюс SMBДля ускорения действия используйте супер микро болюсы SMB вместо временного базала
@@ -682,23 +534,7 @@
Сверхбыстрый OrefЗначение длительности работы инс %1$f слишком мало - применено %2$f!АКТИВИРОВАТЬ ПРОФИЛЬ
- датаНЕВЕРНО
- Ожидание соединения на помпе
- Соединение OK
- Истекло время ожидания соединения
- Сопряжение
- Устройства пока не найдены
- Резервуар пуст
- Предупреждение при измерении уровня СК
- Уровень оставшегося инсулина
- DanaRS
- Dana
- Выбранная помпа
- Соединиться с другой помпой
- Скорость подачи болюса
- Установить шаг базала 0.01 ед/ч
- Серийный номерПроцентСдвиг по времениВременные цели по умолчанию
@@ -708,32 +544,18 @@
целевое значение СК при физической нагрузкедлительность гипоцелевое значение СК при гипо
- Заполнить перед работой
- Получение статуса удлиненного болюса
- Получение статуса болюса
- Получение статуса временного базала
- Получение настроек помпы
- Получение времени помпыповторное использованиеКонтроль с часовСтавить временные цели и вводить назначения с часов.
- Истекло время ожидания соединенияЕдаграмм
- минут
- ч
- дн]]>кДжЭнергияБелкиЖиры]]>
- Ожидание окончания болюса. Оставшиеся %1$d сек.
- Обработка события
- Начало подачи болюсаКоманда сейчас выполняется
- Драйвер помпы откорректированПомпа недоступнаПропущенные данные СКИспользовать системные уведомления для предупреждений и уведомлений
@@ -741,11 +563,9 @@
Оповещать при отсутствии данных СКОповещать в случае недоступности помпыПорог недоступности помпы [min]
+ Оповещать если требуются углеводыСигнал тревогиИНФОРМАЦИЯ
- Bluetooth
- Дежурный режим Watchdog
- Выключает bluetooth телефона на одну секунду, если подключение к помпе невозможно. Это помогает на тех телефонах, где зависает модуль bluetooth.Приложение Eversense (пропатченное)Загрузить данные СК в NightscoutПараметры загрузки СК
@@ -756,14 +576,11 @@
Верхний лимит минут базала на SMBМаксимум минут микроболюса SMB для непредвиденного приема пищи UAMМаксимум минут базала ограничивающего микроболюсы SMB на непредвиденный прием пищи UAM
- Порог предлагаемых углеводов
- Когда предлагаются углеводы, какое количество инициирует уведомление
- Неподдерживаемая версия прошивки помпы
+ Минимальный порог для напоминания о необходимых углеводах
+ Минимум граммов для активации предложения углеводов. Предложения ниже этой величины не будут инициировать уведомление.Отправить данные СК на xDrip+В xDrip + выберите источник данных 640g/EversenseСК с клиента Nightscout
- Значение базала заменено минимальной поддерживаемой величиной: %1$s
- Значение базала заменено максимальной поддерживаемой величиной: %1$sВычисление СКРасчет болюсного активного инсулина IOBРасчет базального активного инсулина IOB
@@ -781,8 +598,6 @@
Режим замкнутого цикла включенМаксимум активного инсулина IOB установлен правильноСК доступны из выбранного источника
- Базальные значения не выровнены по часам: %1$s
- Недопустимый профиль: %1$sПомпа программируется для болюсаОбновитьСостояние
@@ -803,7 +618,6 @@
Болюс с таким же количеством единиц был запрошен за последние две минуты. Для предотвращения случайных двойных болюсов и сбоев операция отменена.СейчасЧтение истории помпы
- Журнал помпыУстановка базального профиляНизкий уровень инсулина в картридже помпыНизкий заряд батареи помпы
@@ -822,9 +636,8 @@
Подача пролонгированного болюса не состояласьПоле обзоратому назад
- %1$.2f ч
- %1$d мин
- %1$dm
+ Установить нейтральные временные базалы
+ Если эта опция включена, то она отменяет временный базал до конца каждого часа. Такой метод помогает прекратить почасовую вибрацию некоторых помп.Всегда включать супер микро болюс SMBВсегда включать супер микро болюс SMB независимо от болюсов. Возможно только для источников СК с хорошей фильтрацией данных вроде G5Активировать супер микро болюс SMB после углеводов
@@ -834,9 +647,7 @@
Включить супер микро болюс SMB с временными целямиВключить супер микро болюс SMB при активной временной цели (близкий прием пищи, нагрузка)Включить супер микро болюс SMB с высокими значениями временных целей
- Включить супер микро болюс SMB при высоком значении действующей временной цели (нагрузка)
- Оставить временный базал работающим
- Отключить звук
+ Включить микроболюс SMB, когда активна высока временная цель (нагрузка, выше 100 мг/дл или 5,5 ммоль/л)ИнсулинКол-во углеводовКнопки
@@ -846,11 +657,17 @@
Количество инсулина, вводимого при нажатии кнопкиНе удалось запустить приложения мониторинга СК. Убедитесь, что оно установлено.Мониторинг СК
+ Игнорировать 5 м
+ Игнорировать 15 м
+ Игнорировать 30 м
+ надоИсторияСообщить о супер микро болюсе SMBПоказывать супер микро болюс SMB на часах как стандартный болюс.Создавать оповещение на основе названия ошибки
+ Создавать оповещения из напоминаний о необходимых углеводахСоздать оповещение NS с диалогом об ошибке и оповещения на месте (также видимые в портале назначений в разделе лечение)
+ Создавать оповещения Nightscout из напоминаний о необходимых углеводахПоказывать линию тренда на смарт-часах.ПрогнозированиеОтбор данных
@@ -864,7 +681,7 @@
Не подавать болюс, только внести записьКатегорияПодкатегория
- Болюс будет только записан
+ Болюс будет только протоколироваться (не подаваться помпой)Заполнять пропущенные данные из NSСупер микро болюс SMB задан помпойНагрузка
@@ -878,7 +695,6 @@
Работает версия разработчика. Замкнутый цикл отключен.Режим отладки включенРежим отладки не задействован и отсутствует на ветке релиза
- %1$.2f ед/часЧтение базального профиляИстория событий помпы изменилась с момента вычисления болюса. Болюс не подан. Пожалуйста пересчитайте потребность в болюсе.Болюс подан успешно, но запись о назначении не сделана. Это может быть вызвано тем, что за последние две минуты назначено два болюса одного объема. Пожалуйста проверьте историю событий помпы и записи о назначениях и добавьте пропущенные записи из Портала назначений. Не добавляйте записи с одним и тем же временем и одинаковым объемом.
@@ -901,15 +717,10 @@
Супер микро болюс SMB отключен в настройкахНезапланированный прием пищи UAM отключен в настройкахНезапланированный прием пищи UAM отключен, поскольку он основывается на плагине чувствительности из Oref1
- Макс базальный уровень ограничен до %1$.2f ед/ч вследствие %2$s
- лимит помпы
- величина должна быть положительноймножитель макс базаламножитель макс суточного базалаБолюс был подан в течение последних трех минут, минуя супер микро болюс SMBБазал задан корректно
- Макс процент базала ограничен до %1$d%% ед/ч вследствие %2$s
- Макс уровень болюса ограничен до %1$.1f ед вследствие %2$sОграничение расширенного болюса до %1$.1f U из-за %2$sОграничение максимума активного инсулина IOB до %1$.1f U из-за %2$sОграничение максимума углеводов до %1$d грамм из-за %2$s
@@ -924,7 +735,6 @@
В режиме незамкнутого цикла open loop супер микро болюс SMB не допускаетсяЕдасброс
- Ожидание синхронизации времени (%1$d сек)Разъединен (%1$d м)Предел суммарного активного инсулина IOB для OpenAPS [U]Эта величина называется Max IOB в OpenAPS context\nOpenAPS не будет добавлять инсулин если текущий активный инсулин ее превысит
@@ -940,7 +750,6 @@
Мастер настройкиГОТОВОВыберите Ваш язык
- Запрошено: %1$.2f ед. Подано: %2$.2f ед. Код ошибки: %3$sПервый шаг увеличения инсулинаВторой шаг увеличения инсулинаТретий шаг увеличения инсулина
@@ -963,7 +772,6 @@
Тип виртуальной помпыОпределение помпыБолюс: Шаг =%1$s\nПродленный Болюс: [Шаг =%2$s, Длительность =%3$sмин -%4$sh] \nБазал: Шаг =%5$s\ nTBR: %6$s (на %7$s), Длительность =%8$sмин -%9$sh\n%10$s
- * В виртуальной помпе поддерживаются только дискретные величины для обработки базала/болюса.Автозаполнение пропущенных данных СКПараметры мастера настройки смарт-часов wearРасчеты, включены в результат мастера настройки смарт-часов wear:
@@ -991,27 +799,11 @@ Context | Edit Context
Права доступаЗапросить права доступаПриложению требуется разрешение системного окна для уведомлений
- Приложение нуждается в разрешении на доступ к определению местоположения для сканирования bluetooth
- Приложение нуждается в разрешении доступа к хранению данных для хранения лог-файлов
+ Приложению требуется разрешение на доступ к местоположению для сканирования BT и идентификации WiFi
+ Приложение требует разрешения на доступ к записи в память, чтобы хранить файлы журналов и настройки экспортаЗапросНастроить плагин инсулинаВыход
- Параметры пользователя
- Формат отображения времени
- Кнопка прокрутки
- Звуковой сигнал при нажатии кнопки
- Оповещение об опасности
- Звуковой сигнал
- Вибросигнал
- Оба
- Время LCD экрана [seconds]
- Время подсветки [seconds]
- Единиц глюкозы
- Выключение через [hours]
- В резервуаре мало инсулина [Units]
- Сохранить параметры в помпе
- Вкл.
- Выкл.Показать панель навигацииCкрыть панель навигацииНастройки расширений
@@ -1031,8 +823,6 @@ Context | Edit Context
При обнаружении чувствительности целевой уровень глюкозы повышаетсяНедопустимые установки помпы, проверьте документацию и убедитесь, что меню Quick Info называется QUICK INFO, используя приложение 360 для конфигурации помпы.Пользовательские
- Большая разница во времени
- Большая разница во времени: \n Время в помпе расходится более чем 1,5 ч. \n. Пожалуйста установите время на помпе вручную и убедитесь, что чтение истории помпы не вызывает неожиданное поведение.\n если возможно, удалите историю из помпы перед изменением времени или отключите замкнутый цикл на один DIA после последней неверной записи в журнале, как минимум на один DIA с настоящего момента.AndroidAPS перезапущенНайдены сохраненные параметрыВнимание: Если вы активируете подключение к невиртуальной помпе, AndroidAPS скопирует настройки базала в профиль помпы, перезаписывая существующие настройки, хранящиеся в ней. Убедитесь, что настройки базала в AndroidAPS корректны. Если вы не уверены или не хотите перезаписать настройки базала на помпу, нажмите отменить и повторите подключение в другое время.
@@ -1058,17 +848,10 @@ Context | Edit Context
Предпочитаемый режим APSИтогоКальк
- Подтверждение связиОтправьте файлы сегодняшнего лога разработчикам наряду с этим. Непредвиденная ситуация.
- Макс нарушение болюса
- Ошибка в команде
- Ошибка в скорости
- Нарушение ограничения инсулинаМинимальный запрос на изменения [%]Алгоритм ИПЖ выдаст всплывающее окно с запросом на новые изменения, только если изменение больше, чем это значение в %. Значение по умолчанию — 20%
- Выполните сопряжение помпы с телефоном!Поиск устройств…
- Подождите…Сопряжение выполненоКоды на этом устройстве и на вашей помпе совпадают?Сопряжение с Insight
@@ -1088,6 +871,10 @@ Context | Edit Context
Журнал оповещенийВключить эмуляцию TBRИспользовать пролонгированные болюсы вместо временных базалов TBR чтобы обойти лимит в 250%%
+ Отключение вибраций при ручном болюсе
+ Для болюса и пролонгированного болюса (доступно только для Insight прошивки 3.х)
+ Отключение вибрации при ручном болюсе
+ Для микроболюсов SMB и временных базалов с эмуляцией TBR (доступно только для Insight с прошивкой версии 3.x)Задержка разъединения [s]Серийный номерВерсия ПО
@@ -1157,7 +944,6 @@ Context | Edit Context
равно или больше чембольше чемнедоступно
- неизвестноГК недоступнаГк %1$s %2$.0f %3$sГк %1$s %2$.1f %3$s
@@ -1174,23 +960,10 @@ Context | Edit Context
АвтоАвтоматизация== ∑ %1$s ед
- ед/ч
- г/ед
- /едВнести замену сенсора в лог NSАвтоматически создать событие \"Замена сенсора\" в NS при запуске сенсораТомато (MiaoMiao)Томато
- сек
- мин
- час
- дн
- нед
- сек
- мин
- час
- дн
- недИмя пользователя Tidepool, обычно ваш адрес электронной почтыИмя пользователяВаш пароль для входа в Tidepool
@@ -1217,7 +990,6 @@ Context | Edit Context
Время повторенияРаз вНикогда
- %1$d минУсловие:Действие:Акт инс IOB [U]:
@@ -1233,7 +1005,6 @@ Context | Edit Context
очень старая версияНовая версия доступна уже %1$d дней! По истечении %2$d дн алгоритм переходит в режим работы только с остановкой при низкой гликемии LGS, замкнутый цикл будет отключен через %3$d дн2ч
- %1$.2f едПриложение Dexcom (модифицированное)DXCMПолучать данные ГК от модифицированного приложения Dexcom.
@@ -1278,142 +1049,6 @@ Context | Edit Context
Триггеры:УДАЛИТЬПредусловия:
-
- Операция не поддерживается помпой и/или драйвером.
- Операция ЕЩЕ не поддерживается помпой.
-
- Интеграция с помпой Medtronic требует устройства RileyLink и специфическую модель помпы
-
- Серийный номер помы
- Тип помпы
- Частота помпы
- Задержка перед подачей болюса (с) начата
- Макс. болюс на помпе (ед)
- Макс. базал на помпе (ед/ч)
- Кодировка Medtronic
- US & Canada (916 MHz)
- Глобальн (868 Мгц)
- Программное 4b6b кодирование
- Аппаратное кодирование 4b6b
- Пробудить и настроить
- Очистить блок болюса
- Сбросить конфигурацию RileyLink
- Тип батареи (по мощности)
- Не выбрано (Простой вид)
- Щелочная (Подробный вид)
- Литиевая (Подробный вид)
- NiZn (Подробный вид)
- Никель-металлогидридная (подробно)
- Отладка Болюс/Назначения
-
- СКАН
- СТОП
- Выбрано
- Сканирование RileyLink
- Bluetooth Low Energy не поддерживается.
- Bluetooth не включен.
- Геолокация не включена
- Для обнаружения Bluetooth на новых устройствах необходимо включить геолокацию. AAPS не отслеживает ваше местоположение и может быть отключен после успешного подключения.
- Включить
- Нет
- Сканирование
- Сканирование завершено
- Ошибка сканирования: %1$d
- Никогда
-
- Настройки
- История
- Статус RileyLink
- Статус помпы
- Настройки RileyLink
- RileyLink
- Настроенный адрес
- Подключенное устройство
- Статус подключения
- Ошибка подключения
- Устройство
- Тип устройства
- Модель устройства
- Последняя использованная частота
- Контакт последнего устройства
- Прошивка RileyLink
-
- Инициализация Bluetooth…
- Ошибка Bluetooth
- Bluetooth готов
- Не запущено
- Инициализация RileyLink…
- Ошибка RileyLink
- Настройка RileyLink и помпы
- Проблема подключения к помпе
- Соединение установлено
-
- Устройство не является RileyLink
- RileyLink недоступен
- Bluetooth выключен
- Нет Bluetooth-адаптера
- Ошибка TuneUp
- Помпа недоступна
- POD недоступен
- Не выбрано
-
- Помпа Medtronic
- Omnipod
-
- Ошибки
- Серийный # не задан.
- Серийный # неверный.
- Тип помпы не задан.
- Тип помпы не поддерживается.
- Частота помпы не задана.
- Частота помпы не поддерживается.
- Недопустимый адрес RileyLink.
- Обнаруженный тип помпы не соответствует настроенному.
- Базальные профили/настройки шаблонов не включены в помпе. Включите их на помпе.
- Базовый профиль на помпе неверный (должен быть STD).
- Неверный тип временной скорости базала TBR на помпе (должен быть Absolute).
- На помпе задан неверный макс болюс (должен быть %1$.2f).
- На помпе задан неверный макс базал (должен быть %1$.2f).
- Операция невозможна.\n\n Сначала нужно настроить помпу Medtronic.
- Запрошено изменение времени свыше 24 часов.
-
- Базалы
- Конфигурация
- Уведомления
- Статистика
- Неизвестно
- Все
- История с помпы Medtronic
-
- Никогда не подключалось
- Пробуждение
- Ошибка связи
- Таймаут связи
- Помпа недоступна
- Недопустимая конфигурация
- Активно
- Сон
-
- Вы отменили болюс после того как он был задан на помпе. Поскольку помпа Medtronic не поддерживает отмену, нужно отменить его вручную. Переведите помпу в режим приостановки и затем сделайте Resume (если все еще хотите отменить). Приложение примет изменения при следующем обновлении (менее чем через 5 минут).
- Не удалось прочитать текущий врем. базал TBR.
- Не удалось отменить текущий врем базал TBR. Остановка операции.
- Не удалось установить профиль потому что следующие шаблоны имеют слишком большой базал %1$s
- Болюс не подан.
- Болюс не подан т.к. доступное количество инсулина (%1$.2f) меньше, чем требуемый болюс (%2$.2f).
- Врем базал TBR не задан.
- Не удалось отменить текущий врем базал TBR.
- Профиль базала не установлен.
- Базовый профиль идентичен, он не будет задан повторно.
- Получить историю - страница %1$d (%2$d/16)
- Получить историю - страница %1$d
- Получить время с помпы
- Получить настройки
- Получить модель помпы
- Получить профиль базала
- Установить профиль базала
- Получить временный базал
- Установить временный базал
- Настроить болюсИзменить профиль наИзменить профиль на %1$sПоследнее соединение с помпой
@@ -1425,7 +1060,6 @@ Context | Edit Context
%2$+.2fед]]>Применено ограничение на болюс: %2$.2fед до %3$.2fед]]>!!!!! Обнаружено медленное всасывание углеводов: %2$d%% времени. Еще раз проверьте свои расчеты. Возможно акт углеводы COB вне диапазона и может быть подано больше инсулина!!!!!]]>
- %1$.0f/%2$d едПодать эту часть рекомендации мастера болюса [%]Мастер болюса выполняет расчет, но подана только эта часть рекомендуемого инсулина. Полезно с алгоритмом SMB.Загрузка...
@@ -1433,7 +1067,6 @@ Context | Edit Context
Диапазон времениВремя между %1$s и %2$sМежду
- ЗакрытьПовышаю максимальное значение базы т. к. оно меньше, чем максимальное значение в профилеНедопустимое тело сообщения%1$s ISF: %2$.1f
@@ -1451,7 +1084,6 @@ Context | Edit Context
Выкл.Очистить завершенныеОчистить начатые
- Определение времениХотите сбросить начатую цель? Можете потерять уже достигнутое.Изменение времени и/или часового пояса на помпеПомпа не выбрана
@@ -1470,7 +1102,7 @@ Context | Edit Context
Большее значение диапазона целевых значений (только для дисплея)Повторный заказВозраст:
- Вес:
+ Вес:Идентификатор:ОтправитьНаиболее часто применяемый профиль:
@@ -1478,10 +1110,9 @@ Context | Edit Context
ОпросНекорректное значение возрастНекорректное значение вес
- %1$s: ∑: %2$.2f Bol: %3$.2f Bas: %4$.2f]]>
+ Некорректный ввод %%1$s: Низкий: %2$02d%% В целевом диапазоне: %3$02d%% Высокий: %4$02d%%]]>Средний
- TDD/общая суточная дозаВремя в целевом диапазоне TIRМонитор активностиХотите сбросить статистику активности?
@@ -1491,12 +1122,8 @@ Context | Edit Context
BG/ГКИнструментарийПоказать расчет
- Ошибка
- 12 ч
- 24 чАвтоматизированное событиеУже установлено
- СообщениеОчистить очередь? Все данные в очереди будут потеряны!Функция Пролонгированный Болюс остановит режим замкнутого цикла на время действия пролонгированного болюса. Подтверждаете выбор?Замкнутый цикл отключен из-за работы Пролонгированного Болюса
@@ -1540,4 +1167,136 @@ Context | Edit Context
Индикаторы состоянияКопировать параметры из NSКопировать настройки NS (если есть)?
+ Исходная тема оформления
+ Кнопки всегда отображаются в нижней части экрана
+ Большой дисплей
+ Тема оформления
+
+ Никогда не подключалось
+ Пробуждение
+ Ошибка связи
+ Таймаут связи
+ Помпа недоступна
+ Недопустимая конфигурация
+ Активно
+ Сон
+
+
+ Для интеграции с помпой Omnipod требуется устройство RileyLink (с прошивкой 2.0 и выше).
+
+ Звуковой сигнал болюса включен
+ Звуковой сигнал базала включен
+ Звуковой сигнал микроболюса SMB включен
+ Звуковой сигнал временного базала TBR включен
+ Опции Отладки Пода Включены
+ Включено обнаружение часового пояса
+
+ Управление помпой
+ Статус помпы
+ %1$.2f ед. осталось
+ Более 50 ед.
+ Адрес Пода
+ Срок действия Пода истекает
+ Нет информации.
+ Нет подключения к помпе
+ Нет инициализации
+ Активные оповещения помпы
+ Оповещения помпы
+
+ Omnipod (433.91 МГц)
+
+ Операция невозможна.\n\n Сначала нужно настроить помпу Omnipod.
+ Операция невозможна.\n\n Подождите несколько минут, пока AAPS пытается задать профиль.
+ Недопустимый тип инициализации: %1$s
+ Активная помпа не выбрана.
+ Командная верификация не состоялась.
+ Произошла непредвиденная ошибка. Пожалуйста, сообщите об ошибке! (сообщить:: %1$s).
+ Ошибка связи: недопустимые входные параметры.
+ Ошибка связи: время ожидания истекло.
+ Ошибка связи: возникла непредвиденная ошибка. Пожалуйста, сообщите!
+ Ошибка связи: проверка целостности сообщения завершилась неудачно.
+ Ошибка связи: недопустимые входные параметры.
+ Ошибка связи: Pod находится в неверном состоянии.
+ Ошибка связи: недопустимый ответ от помпы.
+ Ошибка связи: получено сообщение с недопустимым порядковым номером от Pod.
+ Ошибка связи: получено сообщение с некорректным адресом от Pod.
+ Ошибка связи: не удалось декодировать сообщение от Pod.
+ Ошибка соединения: не удалось выполнить синхронизацию nonce resync.
+ Ошибка соединения: вне синхронизации.
+ Ошибка связи: недостаточно данных от Pod.
+ Обнаружена ошибка Pod (%1$03d %2$s). Деактивируйте Pod и запустите новый.
+ Ошибка связи: Pod ответил ошибкой.
+
+ Управление помпой Omnipod
+ Инициализировать Pod
+ Деактивировать Pod
+ Сброс помпы
+ Журнал помпы
+ Настроить болюс
+ Отменить болюс
+ Установить временный базал
+ Отменить временный базал (внутренний драйвер)
+ Отменить временный базал (принудительно пользователем)
+ Задать расписание базала
+ Получить состояние Pod
+ Получить информацию о Pod
+ Установить Время
+ Сконфигурировать оповещения
+ Подтвердить оповещения
+ Приостановить подачу
+ Возобновить подачу
+ Неизвестная запись
+ %1$.1f ед
+ %1$.1f ед, CH=%2$.1f г
+ Скорость: %1$.1f ед, Продолжительность: %2$d мин
+ Если нажать OK, состояние Pod будет принудительно сброшено, и вы больше не сможете общаться с Pod. Сделайте это только в том случае, если вы не можете обмениваться с Pod. Если еще можно связаться с Pod, воспользуйтесь опцией Деактивировать Pod.
+ В настоящее время история помпы недоступна.
+ Заполнить Pod
+ \nЗаполните новый Pod запасом инсулина на 3 дня.\n\nПоступят два звуковых сигнала от помпы во время заправки. Это означает, что минимальное количество 85U заправлено. Не забудьте опустошить заправочный шприц даже после того, как услышите два звуковых сигнала.\n\nПосле заполнения Pod нажмите Next.\n\nПримечание: Пока не снимайте с помпы колпачок с иглой.
+ Первичное заполнение инфузионной секции пода
+ Попытка сопряжения с новым Podом и первичного заполнения инфузионного отсека..\n\n После проверки всех пунктов можно нажать Далее.\n\nПримечание: В это время Под должен находиться рядом с RileyLink.
+ Подключить Под
+ \nПодготовьте место инфузии. Удалите колпачок с иглы и защиту липкого слоя, Установите Pod на тело.\n\nесли канюля выступает, нажмите отменить и утилизируйте Pod.\n\Нажмите Далее чтобы вставить канюлю и начать подачу базала.
+ Установка канюли (катетера)
+ Определение графика подачи базала и установка канюли. \n\n Когда проверены все шаги, нажмите Далее.
+ Информация о Pod
+ \nПомпа сейчас активна.\n\nБазальный график запрограммирован и катетер установлен.\n\nУбедитесь в том, что канюля установлена правильно и замените Pod, если такой уверенности нет.
+ Деактивировать Pod
+ \nНажмите Далее для деактивации Пода\n\nПримечание: Это Приостановит всякую подачу инсулина и деактивирует помпу.
+ Деактивация помпы
+ Деактивация помпы.\n\n, Когда проверены все элементы, нажмите Далее.\n\nПримечание: Если деактивация постоянно завершается ошибкой, нажмите Отменить и примените Сброс помпы чтобы принудительно сбросить состояние Pod\'a.
+ Pod деактивирован.\n\nУдалите и утилизируйте Pod.
+ Сопряжение Pod
+ Заполнение инфузионной секции Pod\'a
+ Заполнение катетера
+ Задан профиль базала
+ Отмена подачи инсулина
+ Деактивировать Pod
+
+
+ Интеграция с помпой Omnompod Dash.
+ Напоминание о завершении сопряжения
+ Напоминание о завершении настройки
+ Срок работы Pod\'a истекает
+ Срок Pod\'a истекает в ближайшее время
+ Остановка неизбежна
+ В резервуаре мало инсулина
+ Неизвестное оповещение
+ Возможно, не удалось задать базовый профиль. Подача инсулина может быть приостановлена! Обновите состояние Pod.
+ Возможно, установка временного базала не удалась. Если временный базал уже работал, возможна его отмена! Обновите статус Pod\'a.
+ Возможно, не удалось задать время. Подача инсулина может быть приостановлена! Обновите состояние Pod.
+ Не удалось проверить правильность подачи болюса. Убедитесь, что Pod подает болюс или отмените его.
+ Статистика RL
+ Журнал Pulse
+ Сравнить профили
+ Помощник профиля
+ Профиль по умолчанию
+ Текущий профиль
+ Доступные профили
+ Тип профиля
+ Возраст: %1$.0f Суточная Потребность: %2$.0f ед
+ Возраст: %1$.0f Суточная Потребность: %2$.0f ед %3$d%%
+ Возраст: %1$.0f Вес: %2$.0f кг
+ % базального
+ Значение для профиля по умолчанию
diff --git a/app/src/main/res/values-sk-rSK/exam.xml b/app/src/main/res/values-sk-rSK/exam.xml
index 5ec0375bd5..07c257c64c 100644
--- a/app/src/main/res/values-sk-rSK/exam.xml
+++ b/app/src/main/res/values-sk-rSK/exam.xml
@@ -1,7 +1,7 @@
Čo je pravda o DIA?
- Téma: Doba trvania účinku inzulínu
+ Téma: Doba trvania účinku inzulínuMinimálna hodnota je 3 hodiny.Minimálna hodnota je 5 hodín.https://androidaps.readthedocs.io/en/latest/CROWDIN/cs/Configuration/Config-Builder.html#inzulin
@@ -122,7 +122,7 @@
Aplikácia Loop na iPhone.Aplikácia Spike na iPhone.https://androidaps.readthedocs.io/en/latest/CROWDIN/cs/Children/Children.html
- Téma: Citlivosť na inzulín
+ Téma: Citlivosť na inzulínVyššie hodnoty ISF vedú k menšej dávke inzulínu pri korigovaní vysokej glykémie.Nižšie hodnoty ISF vedú k menšej dávke inzulínu pri korigovaní vysokej glykémie.Zmena hodnoty ISF nemá vplyv na dávku inzulínu, keď AAPS koriguje vysokú glykémiu.
@@ -130,7 +130,7 @@
Zmena hodnoty citlivosti vo vašom profile stačí k tomu, aby se táto zmena použila.https://androidaps.readthedocs.io/en/latest/CROWDIN/cs/Getting-Started/FAQ.html#korekcni-faktor-citlivost-na-inzulin-isf-mmol-l-u-nebo-mg-dl-uhttps://androidaps.readthedocs.io/en/latest/CROWDIN/cs/Usage/Profiles.html
- Téma: Inzulíno-sacharidový pomer
+ Téma: Inzulínovo-sacharidový pomerVyššie hodnoty IC vedú k menšej dávke inzulínu ku rovnakému množstvu sacharidov.Nižšie hodnoty IC vedú k menšej dávke inzulínu ku rovnakému množstvu sacharidov.Pokiaľ máte 0 COB, zmena inzulíno-sacharidového pomeru povedie k inému množstvu inzulínu vydanému pre korekciu glykémie.
diff --git a/app/src/main/res/values-sk-rSK/protection.xml b/app/src/main/res/values-sk-rSK/protection.xml
index 99bcd7815b..18f88d1b9c 100644
--- a/app/src/main/res/values-sk-rSK/protection.xml
+++ b/app/src/main/res/values-sk-rSK/protection.xml
@@ -15,6 +15,8 @@
Bez ochranyOchranaHlavné heslo nie je nastavené!\n\nProsím nastavte svoje hlavné heslo v nastaveniach (%1$s → %2$s)
+ Nezabezpečené záložné riešenie
+ Aby bolo biometrické zabezpečenie účinné, je potrebné pre záložné riešenie nastaviť hlavné heslo.\n\nProsím nastavte hlavné heslo!Heslo nastavené!Heslo nie je nastavenéHeslo nezmenené
diff --git a/app/src/main/res/values-sk-rSK/strings.xml b/app/src/main/res/values-sk-rSK/strings.xml
index 572d405cf4..170a8051b7 100644
--- a/app/src/main/res/values-sk-rSK/strings.xml
+++ b/app/src/main/res/values-sk-rSK/strings.xml
@@ -12,13 +12,10 @@
Vymaž databázuNaozaj chcete vymazať databázu?Ukončiť
- Použiť predĺžené bolusy pre >200%%
- DanaR Bluetooth zariadenieVždy používaj absolútne hodnoty bazálovProsím reštartuj svoj telefón, alebo reštartuj AndroidAPS zo systémových nastavení, v opačnom prípade AndroidAPS nebude mocť zapisovať údaje (dôležité kvôli sledovaniu a overovaniu, že algoritmus pracuje správne)!Toto zariadenie zrejme neumožňuje vypnúť optimalizáciu batérie - môže dochádzať k problémom s výkonom.Niektoré tlačidlá na rýchly prístup do spoločných funkcií
- Zadávanie udalostí pre management diabetu.Používané na konfiguráciu aktívnych pluginovVýukový programZobrazenie prednastavených jedál, definovaných v Nightscoute
@@ -36,10 +33,6 @@
Použitie profilu, ktorý je definovaný v NightscouteDefinuj profil s iba jedným časovým pásmom.Ovládač pumpy pre Accu-Check Combo, vyžaduje nainštalovanú aplikáciu Ruffy
- Ovládač pumpy pre Dana Diabecare R
- Ovládač pumpy pre kórejskú verziu Dana Diabecare R
- Ovládač pumpy pre Dana Diabecare R s aktualizovaným firmvérom
- Ovládač pumpy pre Dana Diabecare RSOvládač pumpy pre užívateľov používajúcich k liečbe diabetu inzulínové peráOvládač pumpy pre užívateľov bez podporovanej pumpy (Otvorený okruh)Citlivosť je počítaná tým istým spôsobom ako v Oref0, ale je možné špecifikovať časové okno do minulosti. Minimálne vstrebávanie sacharidov je počítané dynamicky z maximálnej doby vstrebávania, definovanej v nastaveniach.
@@ -54,13 +47,6 @@
Zobrazovanie stavu a riadenie AndroidAPS z hodiniek s WearOS.Zobraz informácie o uzavretom okruhu na xDrip+ watchface.Ovládaj na diaľku AndroidAPS použitím SMS príkazov.
- Jednotky
- Doba pôsobenia inzulínu
- Inzulínovo-sacharidový pomer
- Citlivosť
- Bazál
- Cieľ
- Nenastavený žiadny profilInzulín:Sacharidy:IOB:
@@ -76,15 +62,9 @@
TTSacharidyKorekcia
- JIBolusový IOBSpustiť terazVirtuálna pumpa
- Základná hodnota bazálu
- Dočasný bazál
- Predĺžený bolus
- Batéria
- ZásobníkOKPosledné spustenieVstupné parametre
@@ -96,16 +76,11 @@
VýsledokVýsledok: %1$s %2$sNedostupné dáta o glykémiách
- Nepožadovaná žiadna zmenaPožiadavka
- Hodnota
- Trvanie
- ZdôvodnenieGlykémiaRozdielRozdiel:Konfigurácia
- CielePrehľadNS ProfilJednoduchý profil
@@ -123,7 +98,6 @@
VšeobecnéToto sú všeobecné moduly, ktoré môžu byť užitočné.Aké obmedzenia sú použité?
- dníObmedzeniaUzavretý okruhUzavretý okruh
@@ -132,25 +106,19 @@
Po spracovaní obmedzeníBazál nastavený pumpouNaposledy podané
- OK
- ZrušiťNEVYBRANÉ ŽIADNE APS, ALEBO NEVRÁTILO VÝSLEDOKBezpečnosťModul je deaktivovanýMimo povolený rozsahChyba podania bolusu
- Chyba podávania dočasného bazáluHodnota bazálu [%]Povoliť nový dočasný bazál:BolusKalkulačkaAplikované obmedzenie!
- Potvrdenie
- BolusBolus:BazálBazál:
- SacharidyZmeňte zadanie!Zdroj glykémieOdkiaľ má AndroidAPS získavať glykémie?
@@ -158,34 +126,17 @@
APS módUzavretý okruhOtvorený okruh
+ Pozastavenie pri nízkej glykémii (LGS)Uzavretý okruh deaktivovanýDeaktivovať uzavretý okruhAktivovať uzavretý okruhDostupné nové doporučenie
+ Návrh sacharidovNepodporovaná verzia NighscoutuUzavretý okruh deaktivovaný obmedzenímBazálny IOBAplikované obmedzenie bolusuAplikované obmedzenie sacharidov
- Kontrola glykémie
- Oznámenie
- Poznámka
- Otázka
- Pohyb
- Výmena setu
- Výmena senzora
- Spustenie senzora
- Výmena inzulínu
- Prepnutie profilu
- Bolus na desiatu/olovrant
- Bolus na jedlo
- Korekčný bolus
- Kombinovaný bolus
- Začiatok dočasného bazálu
- Koniec dočasného bazálu
- Prídavok sacharidov
- OpenAPS vypnuté
- Typ udalostiInéGlukomerSenzor
@@ -213,15 +164,17 @@
Súbor nenájdenýExportovať nastaveniaImportovať nastavenia
- Maximálny povolený dočasný bazál [JI/h]
+ Max. JI/h, ktoré je možné nastaviť pre dočas. bazálTáto hodnota je nazývaná v OpenAPS ako \"max basal\"Maximálny bazálny IOB, ktorý OpenAPS môže podať [JI]Táto hodnota je nazývaná v kontexte OpenAPS ako max IOB, je to maximálne množstvo inzulínu v [JI], ktoré APS môže naraz podať.
- POTVRDIŤBudete vyzvaný na zadanie hlavného hesla, ktoré bude použité na dešifrovanie exportovaných nastavení.Budete vyzvaný na zadanie hlavného hesla, ktoré bude použité na dešifrovanie importovaných nastavení.Export zrušený! Nastavenia neboli exportované!Import zrušený! Nastavenia neboli importované!
+ Nastavenia sa nedajú importovať!
+ Prosím, vráťte se späť na hlavnú obrazovku a skúste to znovu.
+ Vyberte súbor, ktorý chcete importovaťProsím skontrolujte nastavenia predtým, ako importujete:Nastavenia nemôžu byť importované!Nastavenia by nemali byť importované!
@@ -234,6 +187,8 @@
Používate zastaralý formát zo staršej verzie AAPS, čo nie je bezpečné! Používajte len ako poslednú možnosť, ak nemáte export v aktuálnom, JSON formáte.Importované nastavenia sú už %1$s dní staré! Možno máte viacero novších nastavení, alebo ste zvolili nesprávny súbor? Nezabúdajte pravidelne exportovať nastavenia!Nesprávny formát dátumu a času!
+ Nastavenie z odlišnej, nižšej verzie aplikácie. Je to v poriadku, pokiaľ importujete po aktualizácii, po importe však skontrolujte, či sú nastavenia stále správne!
+ Nastavenia z odlišnej hlavnej verzie aplikácie. Hlavná verzia sa výrazne líši a nemusia mať kompatibilné nastavenia. Po importe skontrolujte, či sú nastavenia stále správne!Formát súboruVytvorenéVerzia AAPS
@@ -256,34 +211,17 @@
Chyba dešifrovania, zadané heslo je neplatné, alebo bol súbor nastavení zmenený! Môže sa stať, že importovaný súbor bol exportovaný s iným hlavným heslom.Chýba konfigurácia šifrovania, formát nastavení je neplatný!Nepodporovaný alebo neurčený šifrovací algoritmus!
- DanaR
- Pripájanie
- Pripojené
- Odpojené
- Nastavenie pumpy Dana
+ exportované dnes
+ exportované pred %1$s
+ exportované v %1$s
+ exportované pred menej ako hodinou
+ v adresári: %1$sLicenčná zmluva s koncovým používateľomTento program nemôže byť použitý na medicínske rozhodnutia. Na program neexistuje žiadna záruka, alebo garantovaná podpora v akejkoľvek podobe. Keď už sa rozhodneš pre používanie, tak jeho kvalita a celkové schopnosti tohto projektu závisia len na Tebe samotnom. Ak by sa ukázalo, že je program chybný, preberáš všetky potrebné náklady na liečbu, prípadne náklady na iné servisné služby, opravy, alebo korekcie.ROZUMIEM A POTVRDZUJEMUložiť
- Bluetooth adaptér nenájdený
- Vybrané zariadenie nenájdené
- Chyba pripájania pumpy
- IOB z pumpy
- Jednotiek za deň
- Posledný bolus
- pred %1$.1fh
- Chybné vstupné dáta
- Hodnota nenastavená správneObnoviť profil
- Zobraziť profil
- Vykonané
- Komentár
- Úspešne
- Percent
- Absolútna
- Zrušiť dočasný bazálSMS komunikátor
- Čakanie na výsledokPovolené telefónne čísla+421XXXXXXXXX;+421YYYYYYYYYPre podanie bolusu %1$.2fJI odpovedz SMS kódom %2$s
@@ -304,60 +242,24 @@
Cieľ %1$s na %2$d minútCieľ %1$s na %2$d minút bol úspešne nastavenýDočasný cieľ úspešne zrušený
- Podávanie %1$.2fJIPovoliť príkazy na diaľku cez SMS
- Prst
- Senzor
- Iný
- Dočasný cieľ
- Zrušiť dočasný cieľDanaR nastavenie profiluDIA [h]Celková doba pôsobenia inzulínu
- Chyba pri aktualizovaní bazálneho profilu
- NačítaťNahrávanie
- E bolus
- DS bolus
- DE bolus
- chyba
- plnenie
- hodinový bazál
- glykémia
- sacharidy
- alarm
- Celkom nahraných %1$d záznamov
- S bolus
- Alarmy
- Hodinové bazály
- Bolusy
- Sacharidy
- Denný inzulín
- Chyby
- Glykémia
- Plnenie
- Pozastavenia
- Pripájanie %1$d sek
- Heslo do pumpy
- Nesprávne heslo do pumpy!
- Pumpa je zaneprázdnená
- Podané
- ZastavenéBolus zastavenýZastavenie bolusu
- Oklúzia
- Stop
- STLAČENÝ STOP
- Čakám na pumpu
- Podávanie %1$.2fJ inzulínu
- Dosiahnutý limit
- Nebol vybraný žiadny profilUzavretý okruh bol deaktivovanýUzavretý okruh bol aktivovanýUzavretý okruh je deaktivovanýUzavretý okruh je aktivovaný%1$.2f obmedzené na %2$.2fHodnota %1$s je mimo prednastavený rozsah
+ Ak chcete pripojiť pumpu, odpovedzte pomocou SMS s kódom %1$s
+ Pripojenie k pumpe zlyhalo
+ Ak chcete odpojiť pumpu na %1d minút, odpovedzte pomocou SMS s kódom %2$s
+ Pumpa odpojená
+ Pumpa bola znovu pripojenáPríkazy na diaľku nie sú povolenéDiaľkovo ovládaný bolus nie je momentálne povolený. Skúste to neskôr.Pre spustenie bazálu %1$.2fJI/h na %2$d min odpovedzte SMS s kódom %3$s
@@ -366,6 +268,9 @@
Pre zadanie %1$dg na %2$s odpovedz SMS kódom %3$sPre spustenie bazálu %1$d%% na %2$d min odpovedzte SMS s kódom %3$sPre pozastavenie uzavretého okruhu na %1$d minút odpovedaj SMS s kódom %2$s
+ Pre obnovenie uzavretého okruhu, odpovedzte SMS s kódom %1$s
+ Pre povolenie uzavretého okruhu, odpovedzte SMS s kódom %1$s
+ Pre zakázanie uzavretého okruhu, odpovedzte SMS s kódom %1$sDočasný bazál %1$.2fJI/h spustený na %2$d minútPredĺžený bolus %1$.2fJI na %2$d min úspešne spustenýSacharidy %1$dg zadané úspešne
@@ -391,22 +296,18 @@
BolusKorekciaAkcie
- AndroidAPS spustenýIba nahrávanie do NS (synchronizácia deaktivovaná)Iba nahrávanie dát do NS. Neúčinné pri hodnotách glykémie, pokiaľ nieje vybraný lokálny zdroj dát ako xDrip. Neúčinné pri profiloch, pokiaľ sa používajú NS profily.Pumpa nie je inicializovaná!
- Pumpa nie je inicializovaná, profil nenastavený!Plnenie/doplňovanieProsím uistite sa, že hodnota zodpovedá špecifikácií Vášho setu!Iné
- Štandardné hodnoty plnenia/doplňovania.
+ Štandardné množstvo inzulínu pre Plnenie/DoplňovanieTlačidlo 1Tlačidlo 2Tlačidlo 3Jednotky:Jednotky
- mg/dL
- mmol/LDIACieľový rozsah:Rozsah pre zobrazenie
@@ -416,17 +317,7 @@
WearVšetky dáta poslať znovaOtvoriť nastavenia na hodinkách
- Chyba pumpy
- Nízky stav batérie
- Vypnutie pumpy
- Batéria v pumpe vybitá
- Kórejská DanaRBazál:
- Nastavenie bazálneho profilu zlyhalo
- Bazálny profil v pumpe aktualizovaný
- Deaktivovať v pumpe režim EasyUI
- Aktivovať v pumpe predĺžené bolusy
- Zmeniť v pumpe režim z JI/d na JI/hHodnota bazálu pod povoleným minimom. Profil nenastavený!Glykémia:Posledná glykémia:
@@ -434,7 +325,6 @@
MM640gPriebežné notifikácieZASTARALÉ DÁTA
- pred %1$d minpred %1$d minLokálny profilOpenAPS AMA
@@ -450,47 +340,28 @@
HypoglykémiaAktivitaOdstrániť záznam
- DanaR štatistiky
- Kumulatívny TDD
- Exponenciálne vážený TDD
- Bazál
- Bolus
- TDD
- Dátum
- Pomer
- Dní
- Váha
- Pravdepodobne nepresné, ak bol použitý bolus na plnenie!
- Zastaralé dáta. Prosím načítajte ich znovu
- Celk. denný bazál
- TBB * 2
- Inicializácia ...AKCIAKONFOKRUHJPROOAPSLPRF
- DANAPREHVPUMPROFOŠET
- STARCIEĽWEARSMSKrátke názvy modulovVždy používať krátkodobý priemerný rozdiel glykémií, namiesto rozdielu posledných dvoch hodnôtZmysluplné, pokiaľ dáta z xDripu obsahujú veľký šum.
- Rozšírené nastavenia
- Model: %1$02X Protokol: %2$02X Kód: %3$02XProfilŠtandardná hodnota: 3 Toto je kľúčová hodnota zabezpečenia. Hovorí, že maximálny nastaviteľný bazál je trojnásobkom maximálneho denného bazálu. Spravidla to zrejme nebudete musieť meniť, prípadne si prečítate o téme \"3x max denný; 4x aktuálny\".Štandardná hodnota: 4 Toto je druhá kľúčová hodnota. Hovorí, že maximálna hodnota dočasného bazálu nikdy nebude väčšia, ako štvornásobok aktuálneho bazálu. Je to preto, aby se ľudia nedostali do nebezpečných hodnôt skôr, ako pochopia ako OpenAPS pracuje. Znovu, štandardná hodnota je 4 a väčšina ľudí ju nikdy nebude musieť meniť. Pokiaľ nestačí, obvykle je problém niekde inde.Štandardná hodnota: 1.2\nToto je bezpečnostné nastavenie pre detekciu citlivosti (a čoskoro autotune). Hovorí, že autosens môže zvýšiť bazály, znížiť ISF a znížiť cieľovú hodnotu glykémie o 20%%.Štandardná hodnota: 0.7\nToto je bezpečnostné nastavenie pre automatickú detekciu citlivosti. Hovorí, že automatická detekcia citlivosti môže znížiť bazály, zvýšiť ISF a zvýšiť cieľovú hodnotu glykémie na 70%.
- Úprava cieľovej glykémie pomocou automatickej detekcie citlivosti
+ Autosense takisto upravuje cieľovú glykémiuŠtandardná hodnota: zapnuté\nToto nastavenie hovorí, že automatická detekcia citlivosti môže meniť tiež cieľové hodnoty glykémií.Štandardná hodnota: 2\nToto nastavenie hovorí, po akú časť z hodnoty DIA uzavretý okruh po boluse čaká a nereaguje na zmeny glykémií (tu 3DIA/2 = 1,5h).Štandardná hodnota: 3.0 (AMA), alebo 8.0 (SMB) mg/dl/5min. Táto hodnota definuje minimálnu časť vstrebaných sacharidov za každých 5min. Táto hodnota ovplyvňuje výpočet COB.
@@ -503,18 +374,9 @@
Kalibrácia odoslaná. Príjem kalibrácií musí byť v xDripe povolený.xDrip neprijíma kalibráciePumpa pozastavená
- Načítavam stav pumpy
- Nastavujem dočasný bazál
- Zastavujem dočasný bazál
- Nastavujem predĺžený bolus
- Zastavujem predĺžený bolus
- Aktualizujem bazály
- OdpájanieVykonávamNastavenie virtuálnej pumpyNahrať stav do NS
- Nesprávne heslo
- Blíži sa denný limit inzulínuNSClientNSClAdresa URL:
@@ -538,7 +400,7 @@
Zobraziť detailný IOBRozpísať IOB na hodinkách do bolusového a bazálnehoNeúspešné - skontrolujte telefón
- Nedostupný
+ nie je k dispozíciiVek pacientaDieťaDospievajúci
@@ -574,8 +436,6 @@
SuperbolusZaznamenávať spustenie aplikácie do NSZatváram aplikáciu, aby sa aplikovali nové nastavenia.
- DanaRv2
- InzulínAký druh inzulínu používate?Rýchlo pôsobiaci inzulínNovorapid, Humalog
@@ -596,11 +456,14 @@
Prah kritickej úrovne hladiny zásobníka [JI]Prah upozornenia na úroveň batérie [%]Prah kritickej úrovne batérie [%]
+ PREDIOBCOB
- Firmware
- Posledné spojenie
- Stav Bluetooth
+ BAZ
+ DEV
+ AKT
+ ABS
+ DEVSLOPEO aplikáciiChýbajúce povolenie SMS príkazovChýba oprávnenia pre zisťovanie stavu telefónu
@@ -611,24 +474,15 @@
Pridať BGI do stavového riadkuZakázať nahrávanie do NSVšetky dáta odoslané do NS, budú zahodené. AAPS je pripojený k NS, ale nerobí v ňom žiadne zmeny
- Krok bazálu
- Krok bolusuZrušiť predĺžený bolusVek senzoraVek kanylyVek inzulínu
- hodín
- Chybný profil !!!Vykonajte zmenu profiluVek batérie v pumpe
- Výmena batérie v pumpeNastavenie alarmov
- Veľmi vysoká
- Vysoká
- Nízka
- Veľmi nízka
- Zastaralé dáta
- Veľmi zastaralé dáta
+ Vytvoriť oznámenia z alarmov NS
+ Vytvoriť oznámenia z upozornení NSHraničná hodnota pre zastaralé dáta [min]Vysoká hraničná hodnota pre zastaralé dáta [min]Interval pre automatickú detekciu citlivosti [h]
@@ -645,7 +499,6 @@
Nastavenie vstrebávania sacharidovMax. doba vstrebávania sacharidov [h]Čas v hodinách, počas ktorého predpokladáme, že všetky sacharidy budú vstrebané
- Zobrazovať predĺžený bolus v %%SENZINZKAN
@@ -670,7 +523,6 @@
PUMPATrvanie [min]OpenAPS SMB
- SMBPovoliť UAMPovoliť SMBPoužiť Super Mikro Bolusy namiesto dočasných bazálov, pre zrýchleniu účinku
@@ -682,23 +534,7 @@
Ultra rýchly - OrefDIA %1$f je príliš krátke - AAPS namiesto toho použilo %2$f !Aktivovať profil
- DátumNEPLATNÝ
- Čakanie na párovanie na pumpe
- Spárované
- Vypršal časový limit pre párovanie
- Párovanie
- Zatiaľ nenájdené žiadne zariadenie
- Prázdny zásobník
- Výstraha merania glykémie
- Zostávajúci inzulín
- DanaRS
- Dana
- Vybraná pumpa
- Párovanie novej pumpy
- Rýchlosť bolusu
- Nastavte bazálny krok 0.01JI/h
- Sériové číslo% zmenaPosun časuPredvolené nastavenie dočasných cieľov
@@ -708,32 +544,18 @@
Cieľ pri aktiviteTrvanie dočasného cieľa pri hypoglykémiiCieľová hodnota pri hypoglykémii
- Plnenie
- Získavam stav predĺžených bolusov
- Získavam stav bolusov
- Získavam stav dočasných bazálov
- Získavam nastavenia pumpy
- Získavam čas z pumpyZnovu použiťOvládanie z hodiniekNastavovanie dočasných cieľov a vkladanie ošetrení hodinkami.
- Vypršal čas na pripojenieJedlog
- m
- h
- d]]>kJEnPrTuk]]>
- Čakanie na koniec bolusu. Zostáva %1$d sek.
- Spracúvam udalosť
- Spúšťam podávanie bolusuPríkaz sa práve vykonáva
- Ovládač pumpy opravenýPumpa nedostupnáChýbajúce hodnoty glykémiePoužívať systémové notifikácie pre výstrahy a oznámenia
@@ -741,11 +563,9 @@
Výstraha pri nedostupných hodnotách glykémieVýstraha pri nedostupnej pumpeLimit pre nedostupnosť pumpy [min]
+ Výstraha, ak sú požadované sacharidyUrgentný alarmINFO
- Bluetooth
- Strážny pes BT
- Vypne na 1 sekundu Bluetooth v telefóne, pokiaľ se nedarí pripojiť k pumpe. Môže to pomôcť pri telefónoch, ktoré majú problémy s BT.Eversense aplikácia (upravená)Nahrávať glykémie do NSNastavenie nahrávania glykémie
@@ -756,14 +576,11 @@
Maximálny počet minút bazálu, ku ktorým se limituje SMBUAM SMB max. minútMaximální počet minút bazálu, ku ktorým sa limituje SMB pre UAM
- Prahová hodnota doporučenia sacharidov
- Po navrhnutí sacharidov, aké množstvo sacharidov vyvolá upozornenie
- Nepodporovaný firmware v pumpe
+ Minimálne množstvo sacharidov potrebných pre návrh
+ Minimálne množstvo sacharidov v gramoch, ktoré spustí upozornenie návrhu sacharidov. Množstvo sacharidov pod touto hodnotou nespustí oznámenie.Odosielať glykémie do xDrip+V xDrip+ vyberte zdroj dát 640g/EversenseGlykémie z NS
- Hodnota bazálu nahradená minimálnou možnou: %1$s
- Hodnota bazálu nahradená maximálnou možnou: %1$sVýpočet glykémieVýpočet bolusového IOBVýpočet bazálneho IOB
@@ -781,8 +598,6 @@
Uzavretý okruh povolenýMaximálne IOB nastavené správneGlykémie dostupné z vybraného zdroja
- Bazálne hodnoty nie sú zarovnané na celé hodiny: %1$s
- Chybný profil: %1$sProgramovanie pumpy pre bolusObnoviťStav
@@ -803,7 +618,6 @@
Rovnako veľký bolus už bol v priebehu poslednej minúty požadovaný. Ako preventívna ochrana pred zdvojeným bolusom a ako ochrana pred chybami bola operácia zakázaná.TerazNačítavam históriu z pumpy
- História pumpyNastavenie bazálneho profiluZásobník inzulínu v pumpe je takmer prázdnyBatéria v pumpe je takmer vybitá
@@ -822,9 +636,8 @@
Chyba pri podávaní predĺženého bolusuSightpred
- %1$.2f h
- %1$d min
- %1$dm
+ Nastaviť neutrálny dočasný bazál
+ Ak je povolená táto možnosť, zastaví sa dočasný bazál pred koncom každej hodiny. To môže u niektorých púmp pomôcť zastaviť pípanie/vibrácie na celú hodinu.Vždy povoliť SMBPovoliť SMB nezávisle na bolusoch. Možno iba zo zdrojom glykémií s dobrým filtrovaním dát, ako napr. G5Povoliť SMB po jedle
@@ -834,9 +647,7 @@
Povoliť SMB s dočasnými cieľmiPovoliť SMB, pokiaľ je aktívny dočasný cieľ (aktivita, blížiace sa jedlo)Povoliť SMB s vysokými dočasnými cieľmi
- Povoliť SMB, pokiaľ je aktívny vysoký dočasný cieľ (aktivita)
- Nechať bežať aktuálny dočasný bazál
- Stíšiť
+ Povoliť SMB, ak je aktívny vysoký cieľ (cvičenie, vyšší ako 5,5 mmol/l)InzulínSacharidyTlačidlá
@@ -846,11 +657,17 @@
Množstvo inzulínu, ktoré má byť pridané po stlačení tlačidlaNie je možné spustiť aplikáciu CGM. Uistite sa, že je nainštalovaná.CGM
+ Ignorovať 5m
+ Ignorovať 15m
+ Ignorovať 30m
+ pož.Prehliadač histórieOznámenie pri SMBUkazovať SMB na hodinkách ako normálny bolus.Vytvárať z chýb oznámenia
+ Vytvoriť oznámenie z výstrahy požadovaných sacharidovVytvárať oznámenia pre chyby a lokálne výstrahy v NS (zobraziteľné v starostlivosti pod ošetrením)
+ Pre výstrahy požadovaných sacharidov vytvoriť oznámenie v NightscouteZobrazovať predikcie na hodinkách.PredikciaMožnosti dát
@@ -864,7 +681,7 @@
Nepodať bolus, iba zaznamenaťKategóriaPodkategória
- Bolus bude iba zaznamenaný
+ Bolus bude iba zaznamenaný (nie pumpou vydaný)Automaticky doplňovať chýbajúcu glykémiu z NSSMB podané pumpouAktivita
@@ -878,7 +695,6 @@
Bežiaca vývojárska verzia. Uzavretý okruh je zakázaný.Vývojársky mód povolenýVývojársky mód nie je povolený a nebeží vydaná verzia
- %1$.2f JI/hNačítavam bazálny profilHistória v pumpe sa zmenila po spočítaní bolusu. Bolus nebol podaný. Prosím spočítajte ho znovu, pokiaľ je stále potrebný.Bolus úspešne podaný, ale zápis se nepodaril. To sa môže stať, pokiaľ sú podané bolusy rovnakej veľkosti v priebehu 2 minút. Skontrolujte históriu pumpy a zadajte chýbajúce položky do ošetrení. Uistite sa, že nezadávate rovnakú veľkosť v rámci 1 minúty.
@@ -901,15 +717,10 @@
SMB zakázané v nastaveniachUAM zakázané v nastaveniachUAM zakázané, pretože nie je povolený plug-in Oref1
- Max bazál obmedzený na %1$.2f JI/h: %2$s
- limit pumpy
- požadovaná kladná hodnotamaximálny násobok bazálumaximálny násobok najvyššieho bazáluPodaný bolus v priebehu posledných 3 minút, SMB preskočenéBazál nastavený správne
- Bazál obmedzený na %1$d%%: %2$s
- Bolus obmedzený na %1$.1f JI: %2$sPredĺžený bolus obmedzený na %1$.1f JI: %2$sMax IOB obmedzený na %1$.1f JI: %2$sSacharidy obmedzené na %1$d g: %2$s
@@ -924,7 +735,6 @@
SBM nie sú povolené pri otvorenom okruhuJedloResetovať
- Čakanie na synchronizáciu času (%1$d s)Odpojené (%1$d m)Maximálne celkové IOB, ktoré OpenAPS nemôže prekročiť [JI]Táto hodnota je v kontexte OpenAPS nazývaná Max IOB.\nOpenAPS nikdy nepridá inzulín, pokiaľ je súčasné IOB väčšie, ako táto hodnota
@@ -940,7 +750,6 @@
Sprievodca nastavenímDokončiťVyberte jazyk
- Požadované: %1$.2fJI Podané: %2$.2fJI Chyba: %3$sPrvý prídavok inzulínuDruhý prídavok inzulínuTretí prídavok inzulínu
@@ -963,7 +772,6 @@
Typ virtuálnej pumpyDefinícia pumpyBolus: Krok =%1$s\nPredl. bolus: [Krok=%2$s, Dĺžka=%3$smin-%4$sh]\nBazál: Krok=%5$s\nDoč. bazál: %6$s (%7$s), Dĺžka=%8$smin-%9$sh\n%10$s
- * Iba diskrétne hodnoty a nie rozsahy sú podporované pre bazál/bolus vo virtuálnej pumpe.Automatické doplňovanie glykémií z NSNastavenie wizarduKalkulácia použitá vo výsledku wizardu:
@@ -989,27 +797,11 @@
PovolenieVyžiadať si povolenieAplikácia vyžaduje pre oznámenia systémové oprávnenie
- Aplikácia vyžaduje povolenie \"polohy\", aby mohla vyhľadávať BT zariadenia
- Aplikácia vyžaduje prístup k úložisku, aby mohla ukladať logy
+ Aplikácia vyžaduje oprávnenie polohy, pre vyhľadávanie BT a identifikáciu WiFi
+ Aby bolo možné nahrávať logy a exportovať nastavenia, je nutné pre aplikáciu povoliť oprávnenie prístupu k úložiskuPožiadavkaNastavenie inzulínového moduluKoniec
- Užívateľské nastavenia
- Formát času
- Posun pri stlačení tlačidla
- Zvuk pri stlačení tlačidla
- Alarm
- Zvuk
- Vibrácie
- Oboje
- Čas pred vypnutím displeja [sekundy]
- Podsvietenie [sekundy]
- Jednotky
- Vypnutie [hodiny]
- Nízky stav zásobníka [Jednotky]
- Uložiť do pumpy
- ZAP
- VYPOtvoriť MenuZavrieť MenuNastavenie modulu
@@ -1029,8 +821,6 @@
Ak je zistená vyššia citlivosť, zvýši cieľovú hladinu glykémieChybné nastavenie pumpy. Prejdite si dokumentáciu a presvedčte sa, že menu Quick Info se nazýva QUICK INFO, s použitím 360° Configuration Software.Voliteľný
- Veľký rozdiel v čase
- Veľký rozdiel v čase:\nČas v pumpe sa líši minimálne o 1,5 h.\nProsím upravte čas v pumpe manuálne a vymažte históriu pumpy.\nPokiaľ je to potrebné, prípadne pozastavte uzavretý okruh aspoň na \"DIA\" hodín.Vymazať udalosti \"AndroidAPS reštartovaný\"Nájdené uložené nastaveniaPOZOR: Pokiaľ aktivujete a pripojíte skutočnú pumpu, AndroidAPS nakopíruje (a bude udržiavať) nastavenie bazálu z aktívneho profilu do pumpy. Nastavenie bazálu v pumpe bude prepísané. Pokiaľ si nieste istí, alebo nechcete prepísať bazály v pumpe, stlačte Zrušiť a opakujte prepnutie na inú pumpu neskôr.
@@ -1056,17 +846,10 @@
Preferovaný režim APSSpoluKalk
- OverovanieOdošlite dnešné súbory protokolov vývojárom spolu s týmto časom. Neočakávaná situácia.
- Prekročený maximálny bolus
- Chyba príkazu
- Chyba rýchlosti
- Prekročený limit inzulínuMinimálna požiadavka na zmenu [%]Otvorený okruh vytvorí novú žiadosť o zmenu iba v prípade, že zmena je väčšia ako táto hodnota v %. Štandardná hodnota je 20%
- Prosím spárujte pumpu s telefónom!Vyhľadávam zariadenia...
- Čakajte prosím...Párovanie dokončenéZhodujú sa kódy zobrazené na tomto zariadení a na pumpe?Párovanie Insight
@@ -1086,6 +869,10 @@
Zaznamenať výstrahyPovoliť emuláciu dočasných bazálovPoužívať predĺžené bolusy namiesto dočasných bázalov, aby sme sa vyhli 250%% limitu
+ Zakázať vibrácie pri ručnom podaní bolusu
+ Pre bolus a predĺžený bolus (dostupné iba s Insight firmware 3.x)
+ Zakázať vibrácie pri automatickom podaní bolusu
+ Pre SMB a Dočasný bazál s emuláciou TBR (k dispozícii iba s Insight firmware 3.x)Oneskorenie odpojenia [s]Sériové čísloVerzia softwaru
@@ -1155,7 +942,6 @@
je rovnaká, alebo väčšia akoje väčšia akonedostupný
- neznámyGlykémia nedostupnáGlykémia %1$s %2$.0f %3$sGlykémia %1$s %2$.1f %3$s
@@ -1172,23 +958,10 @@
AutoAutomatika== ∑ %1$s JI
- JI/h
- g/JI
- /JIUlož výmenu senzora do NSVytvoriť udalosť \"Výmena senzora\" v NS automaticky pri spustení senzoraTomato (MiaoMiao)Tomato
- sekunda
- minúta
- hodina
- deň
- týždeň
- sekúnd
- minút
- hodín
- dní
- týždňovVaše meno používateľa na Tidepoole, obvykle Vaša E-mailová adresaMeno používateľaHeslo na Tidepool
@@ -1215,7 +988,6 @@
Čas zotavovaniaKaždýchNikdy
- %1$dminútPodmienka:Akcia:IOB [JI]:
@@ -1231,7 +1003,6 @@
veľmi stará verziaNová verzia je dostupná minimálne %1$d dní! Prepnutie na ochranu pred nízkou glykémiou po %2$d dňoch, vypnutie uzavretého okruhu po %3$d dňoch2h
- %1$.2fJIDexcom aplikácia (upravená)DXCMPrijímaj hodnoty glykémie z upravenej Dexcom aplikácie.
@@ -1276,142 +1047,6 @@
Podmienky:VYMAZAŤPredpoklady:
-
- Operácia nepodporovaná pumpou a/alebo ovládačom.
- Operácia zatiaľ nepodporovaná pumpou.
-
- Integrácia pre pumpu Medtronic, požaduje sa RileyLink zariadenie a špecifický model pumpy.
-
- Sériové číslo pumpy
- Typ pumpy
- Frekvencia pumpy
- Oneskorenie pred podaním bolusu (s)
- Max. bolus v pumpe (U)
- Max. bazál v pumpe (U/h)
- Medtronic kódovanie
- US & Canada (916 MHz)
- Celosvetovo (868 MHz)
- Softvérové kódovanie 4b6b
- Hardvérové kódovanie 4b6b
- Prebudenie a prispôsobenie
- Odstránenie blokovania bolusu
- Resetovať konfiguráciu RileyLinku
- Typ batérie (Zobrazenie napájania)
- Nevybrané (jednoduché zobrazenie)
- Alkalické (rozšírené zobrazenie)
- Líthiové (rozšírené zobrazenie)
- NiZn (Rozšírené)
- NiMH (Rozšírené zobrazenie)
- Bolus/Ošetrenia ladenie
-
- VYHĽADAŤ
- ZASTAVIŤ
- Vybrané
- Vyhľadávanie RileyLinku
- Bluetooth Low Energy nie je podporované.
- Bluetooth je aktivovaný.
- Poloha nie je aktivovaná
- Pre vyhľadávanie Bluetooth na novších zariadeniach je potrebné zapnúť polohu. AAPS nezaznamenáva vašu polohu a po úspešnom spárovaní sa môže poloha vypnúť.
- Aktivovať
- Nie
- Vyhľadávanie
- Vyhľadávanie dokončené
- Chyba vyhľadávania: %1$d
- Nikdy
-
- Nastavenia
- História
- Stav RileyLinku
- Stav pumpy
- Nastavenie RileyLink
- RileyLink
- Nastavená adresa
- Pripojené zariadenie
- Stav pripojenia
- Chyba pripojenia
- Zariadenie
- Typ zariadenia
- Model zariadenia
- Posledná použitá frekvencia
- Posledné spojenie zo zariadením
- RL Firmware
-
- Inicializácia Bluetooth...
- Chyba Bluetooth
- Bluetooth pripravené
- Nespustené
- Inicializácia RileyLink...
- Chyba RileyLink
- Ladenie RileyLinku a pumpy
- Problém s pripojením k pumpe
- Pripojené
-
- Zariadenie nie je RileyLink
- RileyLink nedostupný
- Bluetooth je deaktivované
- Žiadny Bluetooth adaptér
- Ladenie zlyhalo
- Pumpa nedostupná
- Pod nedostupný
- Nenastavené
-
- Pumpa Medtronic
- Omnipod
-
- Chyby
- Sériové číslo nenastavené.
- Sériové číslo neplatné.
- Nenastavený typ pumpy.
- Nepodporovaný typ pumpy.
- Nenastavená frekvencia pumpy.
- Nepodporovaná frekvencia pumpy.
- Neplatná adresa RileyLinku.
- Rozpoznaná pumpa je iného typu než nakonfigurovaná.
- Nastavenie bazálnych profilov/vzorov nie je na pumpe povolené. Povoľte ich na pumpe.
- Bazálny profil na pumpe je chybný (musí byť STD).
- Chybný typ dočasného bazálu na pumpe (musí byť absolútny).
- Chybný max. bolus na pumpe (musí byť %1$.2f).
- Chybný max. bazál na pumpe (musí byť %1$.2f).
- Operácia nie je možná.\n\nNajskôr je nutné nakonfigurovať pumpu, než bude možné túto funkciu použiť.
- Požadovaná zmena času väčšia ako 24h.
-
- Bazály
- Konfigurácie
- Notifikácie
- Štatistiky
- Neznáme
- Všetko
- História Medtronic pumpy
-
- Nikdy nepripojené
- Prebúdzanie
- Chyba komunikácie
- Uplynul časový limit komunikácie
- Pumpa nedostupná
- Neplatná konfigurácia
- Aktívna
- Spiaca
-
- Zrušili ste bolus po tom, čo bol nastavený na pumpe. Pretože Medtronic nepodporuje zrušenie bolusu, musíte ho zrušiť ručne. Pozastavte pumpu a znovu spustite (pokiaľ naďalej trváte na zrušení). Aplikácia prevezme zmeny pri ďalšom pripojení (do 5 min).
- Nie je možné načítať aktuálny dočasný bazál.
- Nie je možné zastaviť aktuálny dočasný bazál. Ukončujem operáciu.
- Nastavenie profilu zlyhalo, pretože následujúce hodnoty bazálu, sú príliš vysoké: %1$s
- Bolus nemohol byť podaný.
- Bolus nebolo možné podať, pretože dostupné množstvo inzulínu (%1$.2f) je menšie než požadovaný bolus (%2$.2f).
- Dočasný bazál nemohol byť nastavený.
- Aktuálny dočasný bazál nemohol byť zrušený.
- Bazálny profil nemohol byť nastavený.
- Bazálny profil je rovnaký, takže nebude znovu nastavený.
- Načítanie histórie - Strana %1$d (%2$d/16)
- Načítanie histórie - Strana %1$d
- Načítanie času pumpy
- Načítanie nastavení
- Načítanie modelu pumpy
- Načítanie bazálneho profilu
- Nastavovanie bazálneho profilu
- Načítanie dočasného bazálu
- Nastavovanie dočasného bazálu
- Nastavovanie bolusuZmeniť profil naZmena profilu na %1$sPosledné spojenie s pumpou
@@ -1423,7 +1058,6 @@
%2$+.2fU]]>Aplikované obmedzenie bolusu: %2$.2fJI na %3$.2fJI]]>!!!!! Detekovaná pomalá absorbcia sacharidov: %2$d%% času. Prekontrolujte kalkuláciu. COB môže byť úplne iné, môže byť podaného viac inzulínu!!!!!]]>
- %1$.0f / %2$d JIPodaj túto časť z výsledku kalkulácie [%]Bolusová kalkulačka urobí výpočet, ale iba táto časť vypočítaného inzulínu je podaná. Pomáha pri SMB algoritme.Načítavanie...
@@ -1431,7 +1065,6 @@
Časový rozsahČas je medzi %1$s a %2$sMedzi
- ZavrieťZvýšenie maximálnej hodnoty bazálu, pretože nastavenie je nižšie, než je vaša maximálna hodnota bazálu v profileNeplatný obsah správy%1$s ISF: %2$.1f
@@ -1449,7 +1082,6 @@
VYPVymazanie dokončenéVymazanie začaté
- Detekcia časuChcete resetovať začiatok cieľa? Môžete prísť o svoj pokrok.Zmena času a/alebo časovej zóny na pumpeNie je vybraná žiadna pumpa
@@ -1462,13 +1094,13 @@
KlonovaťNajskôr uložte, alebo resetujte aktuálne zmenyZmazať aktuálny profil?
- Chcete vytvoriť nový lokálny profil z tohto prepnutia profilu?
+ Vytvoriť z tohoto profilu nový lokálny profil?Názov profilu obsahuje bodky.\nToto nie je podporované v NS.\nProfil nebude prenesený do NS.Spodná hodnota v oblasti cieľového rozsahu (iba zobrazovanie)Horná hodnota v oblasti cieľového rozsahu (iba zobrazovanie)Zmena poradiaVek:
- Váha:
+ Váha:ID:OdoslaťNajčastejšie používaný profil:
@@ -1476,10 +1108,9 @@
PrieskumNeplatný záznam vekuNeplatný záznam váhy
- %1$s: ∑: %2$.2f Bol: %3$.2f Baz: %4$.2f]]>
+ Neplatný vstup %%1$s: Pod: %2$02d%% V: %3$02d%% Nad: %4$02d%%]]>Priemer
- CDDČas v rozsahuMonitor aktivityChcete resetovať štatistiky aktivity?
@@ -1489,12 +1120,8 @@
GlykémiaNástrojeZobraziť kalkuláciu
- Chyba
- 12h
- 24hUdalosť automatikyUž nastavené
- SprávaVymazať frontu? Všetky dáta vo fronte budú stratené!Použitie funkcie rozloženého bolusu zastaví uzavretý okruh na dobu trvania rozloženého bolusu. Naozaj to chcete?Uzavretý okruh je zastavený kvôli prebiehajúcemu rozloženému bolusu
@@ -1538,4 +1165,136 @@
Indikátory stavuKopírovať nastavenia z NSSkopírovať nastavenia NS (ak existujú)?
+ Pôvodný vzhľad
+ Tlačidlá sú vždy zobrazené v spodnej časti obrazovky
+ Veľký displej
+ Vzhľad
+
+ Nikdy nepripojené
+ Prebúdzanie
+ Chyba komunikácie
+ Uplynul časový limit komunikácie
+ Pumpa nedostupná
+ Neplatná konfigurácia
+ Aktívna
+ Spiaca
+
+
+ Integrácia pumpy pre Omnipod, vyžaduje zariadenie RileyLink (s firmwarom aspoň 2.0).
+
+ Pípnutie pri boluse povolené
+ Pípnutie pri bazále povolené
+ Pípnutie pri SMB povolené
+ Pípnutie pri TBR povolené
+ Možnosti ladenia Podu povolené
+ Letný čas / Detekcia časového pásma povolená
+
+ Správa Podu
+ Stav Podu
+ Zostáva %1$.2f JI
+ Viac ako 50 JI
+ Adresa Podu
+ Expirácia Podu
+ Žiadne info
+ Žiadny Pod nie je pripojený
+ Nie je inicializovaný
+ Výstrahy aktívneho Podu
+ Potvrdiť výstrahu
+
+ Omnipod (433,91 MHz)
+
+ Operácia nie je možná.\n\nNajskôr je nutné nakonfigurovať Omnipod, kým bude možné túto funkciu použiť.
+ Operácia nie je možná.\n\n Je potrebné niekoľko minút počkať, pokiaľ sa AAPS nepokúsi prvý krát nastaviť profil.
+ Neplatný atribút PodInitActionType: %1$s
+ Žiadny aktívny Pod.
+ Overenie príkazu zlyhalo.
+ Došlo k neočakávanej chybe. Nahláste ju! (typ: %1$s).
+ Komunikácia zlyhala: boli prijaté neplatné vstupné parametre.
+ Komunikácia zlyhala: časový limit vypršal.
+ Komunikácia zlyhala: vyskytla sa neočakávaná chyba. Prosím, nahláste to!
+ Komunikácia zlyhala: overenie integrity správy zlyhalo.
+ Komunikácia zlyhala: boli prijaté neplatné pakety z Podu.
+ Komunikácia zlyhala: Pod je v chybnom stave.
+ Komunikácia zlyhala: bola prijatá neplatná odozva z Podu.
+ Komunikácia zlyhala: bola prijatá správa s neplatným poradovým číslom z Podu.
+ Komunikácia zlyhala: bola prijatá správa s neplatnou adresou z Podu.
+ Komunikácia zlyhala: nepodarilo se dekódovať správu z Podu.
+ Komunikácia zlyhala: opakovaná synchronizácia Nonce hodnoty zlyhala.
+ Komunikácia zlyhala: hodnota Nonce nebola synchronizovaná.
+ Komunikácia zlyhala: nedostatok dát prijatých z Podu.
+ Bola zistená chyba Podu (%1$03d %2$s). Deaktivujte Pod a spustite nový.
+ Komunikácia zlyhala: Pod vrátil chybovú odozvu.
+
+ Správa Podu
+ Inicializovať Pod
+ Deaktivovať Pod
+ Resetovať Pod
+ História Podu
+ Nastaviť bolus
+ Zrušiť bolus
+ Nastaviť dočasný bazál
+ Zrušiť dočasný bazál (interne ovládačom)
+ Zrušiť dočasný bazál (nútene užívateľom)
+ Nastaviť plán bazálu
+ Zistiť stav Podu
+ Zistiť informácie o Pode
+ Nastaviť čas
+ Nastaviť výstrahy
+ Potvrdiť výstrahy
+ Pozastaviť dodávanie inzulínu
+ Pokračovať v dodávaní inzulínu
+ Neznáma položka
+ %1$.1f JI
+ %1$.1f JI, CH=%2$.1f g
+ Rýchlosť: %1$.1f JI, Doba trvania: %2$d min
+ Keď stlačíš OK, bude pripojenie na Pod nútene prerušené a nebudete sa môcť k nemu už viac pripojiť. Urob tak iba vtedy, ak AAPS nemôže viac komunikovať s Podom. Ak stále môžete komunikovať s Podom, prosím použite možnosť Deaktivovať Pod.
+ História Podu momentálne nie je dostupná.
+ Naplňte Pod
+ \nNaplňte Pod dostatočným množstvom inzulínu na 3 dni.\n\nPočúvaj aj dve pípnutia počas plnenia. Tieto poukazujú na to, že Pod bol naplnený minimálnym množstvom 85 JI. Úplne vyprázdni striekačku, aj keď si počul dve pípnutia.\n\nKlikni <bĎalej</b> po tom, čo si naplnil Pod.\n\n<b>Poznámka:</b> Neodstraňuj ešte ochranu ihly na Pode.
+ Plnenie
+ Pokús sa spárovať s novým Podom a naplň ho.\n\nKeď sú všetky položky zaškrtnuté, môžete stlačiť Ďalej.\n\nPoznámka: prosím držte teraz Pod veľmi blízko RileyLinku.
+ Pripevni Pod
+ \nPripravte infúzny set. Odstráňte krytku ihly na Pode a ochranu samolepky a pripojte Pod k infúznemu setu. \n\nAk sa kanyla odlepí, prosím stlačte Zrušiť a zahoďte Váš Pod.\n\nStlačte Ďalšia na zavedenie kanyly a začiatok podávania bazálu.
+ Zavedenie kanyly
+ Pokúšam sa nastaviť počiatočnú bazálnu dávku a zaviesť kanylu.\n\nAk sú všetky položky označené, môžete stlačiť Ďalší.
+ Informácie o Pode
+ \nPod je teraz aktívny.\n\nVaša bazálna dávka je nastavená a kanyla bola zavedená.\n\nProsím skontrolujte, či bola kanyla zavedená správne a ak máte pocit, že nie, tak vymeňte Pod.
+ Deaktivovať Pod
+ \nStlačte Ďalej pre deaktiváciu Podu.\n\nPoznámka: Toto preruší celkovo podávanie inzulínu a deaktivuje Pod.
+ Deaktivácia Podu
+ Deaktivujem Pod.\n\nKeď sú všetky položky zaškrtnuté, môžete stlačiť Ďalej.\n\nPoznámka: Ak deaktivácia neustále zlyháva, stlačte prosím Zrušiť a použite možnosť Resetovať Pod, na nútené obnovenie stavu Podu.
+ Pod deaktivovaný.\n\nProsím odstráňte Pod z Vášho tela a zlikvidujte ho.
+ Spárujte Pod
+ Naplňte Pod
+ Naplňte kanylu
+ Nastavte bazálny profil
+ Zrušte podávanie
+ Deaktivujte Pod
+
+
+ Integrácia pumpy pre Omnipod Dash.
+ Pripomienka ukončenia párovania
+ Pripomienka ukončenia nastavenia
+ Pod čoskoro expiruje
+ Pod čoskoro expiruje
+ Vypnutie je bezprostredné
+ Nízka hladina zásobníka
+ Neznáma výstraha
+ Nastavenie bazálu mohlo zlyhať. Podávanie môže byť pozastavené! Prosím, obnovte stav Podu.
+ Nastavenie dočasného bazálu mohlo zlyhať. Ak už bol spustený dočasný bazál, mohol byť zrušený! Prosím, obnovte stav Podu.
+ Nastavenie času mohlo zlyhať. Podávanie môže byť pozastavené! Prosím, obnovte stav Podu.
+ Nie je možné overiť, či bolo podávanie bolusu úspešné. Prosím overte, že váš Pod podáva bolus, alebo zrušte bolus.
+ Štatistiky RL
+ Pulse Log
+ Porovnať profily
+ Pomocník s profilom
+ Predvolený profil
+ Aktuálny profil
+ Dostupný profil
+ Typ profilu
+ Vek: %1$.0f CDD: %2$.0f U
+ Vek: %1$.0f CDD: %2$.0f JI %3$d%%
+ Vek: %1$.0f Hmotnosť: %2$.0f kg
+ % bazálu
+ Predvolený DPV profil
diff --git a/app/src/main/res/values-sl-rSI/strings.xml b/app/src/main/res/values-sl-rSI/strings.xml
index f2c7564cc4..2578fce6a9 100644
--- a/app/src/main/res/values-sl-rSI/strings.xml
+++ b/app/src/main/res/values-sl-rSI/strings.xml
@@ -4,17 +4,15 @@
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values-sv-rSE/exam.xml b/app/src/main/res/values-sv-rSE/exam.xml
index 507b63f02f..10e769312a 100644
--- a/app/src/main/res/values-sv-rSE/exam.xml
+++ b/app/src/main/res/values-sv-rSE/exam.xml
@@ -1,7 +1,7 @@
Vad är sant om DIA?
- Ämne: Insulinduration
+ Ämne: InsulindurationMinimivärdet är 3 timmar.Minimivärdet är 5 timmar.https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html?#insulin
@@ -122,7 +122,7 @@
Appen Loop för iPhone.Appen Spike för iPhone.https://androidaps.readthedocs.io/en/latest/EN/Children/Children.html
- Ämne: Insulinkänslighetsfaktor (ISF)
+ Ämne: Insulinkänslighetsfaktor (ISF)Högre ISF-värden leder till mindre insulintillförsel när AAPS korrigerar för högt BG.Lägre ISF-värden leder till mindre insulintillförsel när AAPS korrigerar för högt BG.Ändringar av ISF-värden påverkar inte det insulin som levereras när AAPS korrigerar för högt BG.
@@ -130,7 +130,7 @@
Om du ändrar ISF-värdet i din profil är det tillräckligt för att tillämpa ändringen.https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#insulin-sensitivity-factor-isf-mmol-l-u-or-mg-dl-uhttps://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html
- Ämne: IC-kvoten
+ Ämne: KH-kvotHögre IC-kvot leder till mindre insulin som levereras för en given mängd kolhydrater.Lägre IC-kvot leder till mindre insulin som levereras för en given mängd kolhydrater.Om du har 0 COB, kommer en förändring av IC-kvoten leda till en annan mängd insulin för att korrigera din BG-nivå.
diff --git a/app/src/main/res/values-sv-rSE/protection.xml b/app/src/main/res/values-sv-rSE/protection.xml
index 2586a94122..a890fea8cf 100644
--- a/app/src/main/res/values-sv-rSE/protection.xml
+++ b/app/src/main/res/values-sv-rSE/protection.xml
@@ -15,6 +15,8 @@
Inget skyddSkyddHuvudlösenord har inte angetts.\n\nAnge huvudlösenord i Inställningar (%1$s → %2$s)
+ Osäker alternativ autentisering
+ Biometrisk verifiering kräver att huvudlösenordet är inställt (som reservlösning).\n\nVänligen sätt ett huvudlösenord!Lösenord sparat!Lösenord inte inställtLösenordet har inte ändrats
diff --git a/app/src/main/res/values-sv-rSE/strings.xml b/app/src/main/res/values-sv-rSE/strings.xml
index 7c4cc40f29..d1203af347 100644
--- a/app/src/main/res/values-sv-rSE/strings.xml
+++ b/app/src/main/res/values-sv-rSE/strings.xml
@@ -12,20 +12,17 @@
Återställ databasernaVill du verkligen återställa databaserna?Avsluta
- Använd förlängd bolus för att ange >200%% basal
- Dana R Bluetooth PumpAnvänd alltid absoluta värden i basalStarta om telefonen eller AndroidAPS från systeminställningar,\nannars kommer AndroidAPS inte kunna logga fel (viktigt att kunna spåra och verifiera att algoritmerna fungerar korrekt)!Denna enhet verkar inte ha stöd för vitlistning från batterioptimering. Du eventuellt råka ut för problem pga detta.Knappar för att snabbt komma åt vanliga funktioner
- Mata in avancerade poster i loggbokenAnvänds för att konfigurera de aktiva insticksprogrammenInlärningsprogramVisar förutbestämda inställningar för mat i NightscoutInsulininställning för vanliga direktverkande insuliner som Humalog, Lispro, Apidra och Novorapid/NovologInsulininställning för ultrasnabba insuliner, t ex FiaspLåter dig ställa in tidpunkten för toppen på insulinets aktivitet. Bör bara användas av avancerade användare
- Aktivera eller avaktivera implementationen som kör loopen.
+ Aktivera eller inaktivera implementationen som kör loopen.Synkroniserar dina data med NightscoutSå som algoritmen var definierad år 2016Så som algoritmen var definierad år 2017
@@ -36,10 +33,6 @@
Använder profiler från NightscoutDefiniera en insulinprofil som bara har ett enda tidsblock.Pumpintegration för Accu-Chek Combo. Kräver att Ruffy är installerat
- Pumpintegration för DANA Diabecare R
- Pumpintegration för DANA Diabecare R, koreansk version
- Pumpintegration för DANA Diabecare R med uppgraderad firmware
- Pumpintegration för DANA Diabecare RSIntegration för de som endast använder insulinpennorIntegration för pumpar som ännu inte stöds av AndroidAPS (Open loop)Känsligheten beräknas på samma sätt som i Oref0, men du kan specificera hur mycket av historiken som ska tas med i beräkningen. Minimalt upptag av kolhydrater beräknas utifrån maximal upptagstid för kolhydrater som angetts i Inställningar.
@@ -55,13 +48,6 @@ Eversense-appen.
Följ och kontrollera AndroidAPS med din Wear OS-klockaVisa AAPS-information på din xDrip-urtavlaFjärrstyr AndroidAPS med SMS-kommandon.
- Enheter
- DIA
- IC
- ISF
- Basal
- Målvärde
- INGEN PROFIL VALDInsulin:KH:IOB:
@@ -77,15 +63,9 @@ Eversense-appen.
TTKHKorrektion
- UBolus IOBUtför nuVirtuell pump
- Profilens basaldos
- Temp basal
- Förlängd bolus
- Batterinivå
- ReservoarOKSenaste beräkningAnge värden
@@ -97,16 +77,11 @@ Eversense-appen.
ResultatResultat: %1$s %2$sIngen BG-data tillänglig
- Ingen ändring behövsBeräknat behov
- Basaldos
- Duration
- OrsakGlukosDeltaDelta:Konfigurationsverktyg
- MålÖversiktNS-profilEnkel profil
@@ -124,7 +99,6 @@ Eversense-appen.
Generella inställningarDessa är några allmänna insticksprogram som kan vara användbara.Vilka begränsningar ska tillämpas?
- dagarBegränsningarLoopLoop
@@ -133,25 +107,19 @@ Eversense-appen.
Efter begränsningarTemp basal satt i pumpSenaste justering
- OK
- AvbrytINGEN APS VALDSäkerhet
- Insticksprogram avaktiverat
+ Insticksprogram inaktiveratBegränsning nåddFel vid bolusleverans
- Fel vid justering av temp basalBasaldos [%]Acceptera ny temp basal:BehandlingKalkylatorBegränsning nådd
- Bekräfta
- BolusBolus:BasalBasal:
- KHÄndra inmatningBG-källaVar ska AndroidAPS få sitt data ifrån?
@@ -159,34 +127,17 @@ Eversense-appen.
APS-lägeClosed LoopOpen Loop
- Loop avstängd
+ Stopp innan lågt
+ Loop inaktiveradInaktivera loopAktivera loopNy rekommendation tillgänglig
+ KH-förslagVersionen av Nightscout stöds inte
- LOOP STOPPAD PGA BEGRÄNSNINGAR
+ LOOP INAKTIVERAD PGA BEGRÄNSNINGARIOB från basalBolusspärr aktiveradKolhydratsspärr aktiverad
- BG-kontroll
- Meddelande
- Anteckning
- Fråga
- Träning
- Byte pumpkanyl
- Byte CGM-sensor
- Start CGM-sensor
- Byte insulinreservoar
- Profilbyte
- Mellanmålsbolus
- Måltidsbolus
- Korrektionsbolus
- Kombi-bolus
- Temp basal start
- Temp basal slut
- KH-korrektion
- OpenAPS Offline
- HändelsetypAnnatMätareSensor
@@ -214,15 +165,17 @@ Eversense-appen.
Hittade inte filenExportera inställningarImportera inställningar
- Max enheter per timme
+ Max enheter per timme som en temp basal kan sättas tillDetta värde kallas max basal inom OpenAPSMaximal basal IOB som OpenAPS kan ge [E]Detta värde kallas Max IOB i OpenAPS. Det är ställt till noll från start. Efter flera dagar till veckor, beroende på hur du känner, kan du välja att justera denna.
- TA BORTDu kommer att bli tillfrågad om huvudlösenordet som sedan kommer att användas för att kryptera exporterade inställningar.Du kommer att bli tillfrågad om huvudlösenordet som sedan kommer att användas för att avkryptera importerade inställningar.Exporten avbröts. Inställningarna har INTE exporterats!Importen avbröts. Inställningarna har inte importerats!
+ Kan inte importera inställningar!
+ Vänligen gå tillbaka till huvudskärmen och försök igen.
+ Välj fil att importeraVänligen kontrollera inställningarna innan du importerar:Inställningarna kan inte importeras!Inställningar bör inte importeras!
@@ -235,6 +188,8 @@ Eversense-appen.
Du använder det gamla formatet (från äldre versioner av AAPS) som inte är säkert. Använd det bara som en sista utväg om du inte har någon export i aktuellt format, JSON.Importerade inställningar är %1$s dagar gamla. Du kanske har mer aktuella inställningar eller väljer du fel fil? Kom ihåg att exportera dina inställningar regelbundet!Ogiltigt datumformat!
+ Inställningarna är sparade i en annan delversion av appen. Det är OK om du importerar efter uppgradering, men kontrollera att inställningarna fortfarande är korrekta efter import!
+ Inställningarna är sparade i en annan huvudversion av appen. Olika huvudversioner kan ha helt olika struktur vilket kan göra dem inkompatibla. Kontrollera inställningarna noggrant efter import!FilformatSkapadAAPS-version
@@ -257,41 +212,24 @@ Eversense-appen.
Dekrypteringsfel. Det angivna lösenordet är ogiltigt eller så har inställningsfilen ändrats. Filen verkar ha exporterats med ett annat lösenord.Krypteringskonfigurationen saknas. Inställningsformatet är ogiltigt!Ej stödd eller ej angiven krypteringsalgoritm!
- Dana R
- Ansluter
- Ansluten
- Frånkopplad
- Dana R pumpinställningar
+ exporterat idag
+ exporterades för %1$s sedan
+ exporterades %1$s
+ exporterades för mindre än timme sedan
+ i mappen: %1$sLicensavtal för slutanvändareFÅR INTE ANVÄNDAS FÖR ATT FATTA MEDICINSKA BESLUT. DET FINNS INGEN GARANTI FÖR PROGRAMMET I DEN UTSTRÄCKNING SOM TILLÅTS AV GÄLLANDE LAG. FÖRUTOM NÄR ANNAT ANGES SKRIFTLIGEN LEVERERAS APPLIKATIONEN SOM DEN ÄR HELT UTAN GARANTIER I NÅGON SOM HELST FORM, VARKEN UTTRYCKTA ELLER UNDERFÖRSTÅDDA, INKLUSIVE MEN INTE BEGRÄNSAT TILL SÄLJBARHET OCH LÄMPLIGHET FÖR ETT VISST ÄNDAMÅL. HELA RISKEN VAD GÄLLER KVALITET OCH PRESTANDA AV PROGRAMMET ÅLIGGER ANVÄNDAREN. OM PROGRAMMET VISAR SIG VARA DEFEKT ANTAR ANVÄNDAREN DEN FULLA FÖR KOSTNADEN FÖR ALL NÖDVÄNDIG SERVICE, REPARATION ELLER KORRIGERING.JAG FÖRSTÅR OCH GODKÄNNERSpara
- Ingen Bluetooth-adapter funnen
- Vald enhet kan inte nås
- Anslutningsfel
- Pumpens IOB
- Enheter per dag
- Senaste bolus
- %1$.1f tim sedan
- Fel på inmatning
- Misslyckades med inställningLadda om profil
- Visa profil
- Utförd
- Kommentar
- Lyckad
- Procent
- Absolut
- Avbryt temp basalSMS-tjänst
- Väntar på resultatGodkända telefonnummer+4670XXXXXXX; +4670YYYYYYYFör att ge bolus %1$.2f enheter, svara med kod %2$sFör att ge bolus %1$.2f enheter, svara med kod: %2$sFör att sätta ett temporärt mål på %1$s, svara med kod: %2$sFör att avbryta temporärt mål, svara med kod: %1$s
- För att avaktivera fjärrkommandon via SMS, svara med kod: %1$s \n\nTänk på att måste ha tillgång till huvudtelefonen för att kunna återaktivera.
+ För att inaktivera fjärrkommandon via SMS, svara med kod: %1$s \n\nTänk på att måste ha tillgång till huvudtelefonen för att kunna återaktivera.Fjärrkommandon via SMS stoppas. För att återaktivera detta, använd Konfigurationsverktyget på huvudtelefonen.För att skicka kalibrering %1$.2f, svara med kod %2$sBolus misslyckades
@@ -305,60 +243,24 @@ Eversense-appen.
Temporärt mål på %1$s är satt i %2$d minuterTemporärt mål på %1$s är satt i %2$d minuterTemporärt mål avbrutet
- Levererar %1$.2f enheterTillåt fjärrstyrning via SMS
- Finger
- Sensor
- Manuell
- Temp mål
- Avbryt temp målDana R profilinställningarDIA [tim]Insulinets verkningstid
- Lyckades inte uppdatera basalprofilen
- HämtaLaddar upp
- Förlängd bolus
- Standardbolus
- Kombibolus
- fel
- påfyllning
- basal tim
- glukos
- kolhydrat
- larm
- Laddade upp totalt %1$d värden
- S bolus
- Larm
- Basaltimmar
- Bolusar
- Kolhydrater
- Daglig insulinmängd
- Fel
- Glukos
- Påfyllning
- Stoppa
- Ansluter (%1$d s)
- Lösenord pump
- Fel lösenord för pump
- Pump upptagen
- Levererad
- StoppadBolus avbrutenAvbryter bolus
- Ocklusion
- Stopp
- Stopp nedtryckt
- Väntar på pump
- Kommer att leverera %1$.2f enheter
- Du har nått din tillåtna gräns
- Ingen profil vald
- Loop stängdes av.
- Loop aktiverades
- Loop är avstängd
+ Loop inaktiverad.
+ Loop aktiverad
+ Loop är inaktiveradLoop är aktiverad%1$.2f begränsat till %2$.2fVärdet %1$s är utanför hård begränsning
+ För att ansluta pumpen, svara med kod %1$s
+ Anslutning till pump misslyckades
+ För att koppla från pumpen i %1d minuter, svara med kod %2$s
+ Pump frånkopplad
+ Pump återanslutenOtillåtet fjärrkommandoFjärrbolus inte tillgängligt. Försök igen senare.För att starta temp basal %1$.2f enheter/tim i %2$d min, svara med kod %3$s
@@ -367,6 +269,9 @@ Eversense-appen.
Om du vill ange %1$dg kl. %2$s, svara med kod %3$sFör att starta temp basal %1$d%% i %2$d min, svara med kod %3$sFör att pausa loop i %1$d minuter, svara med kod %2$s
+ För att återuppta loopen, svara med kod %1$s
+ För att aktivera loopen, svara med kod %1$s
+ För att inaktivera loopen, svara med kod %1$sTemp basal %1$.2f enheter/tim i %2$d min startadFörlängd bolus %1$.2f enheter över %2$d min har startats%1$dg kolhydrater registrerat
@@ -381,8 +286,8 @@ Eversense-appen.
Misslyckades med att avbryta temp basalAvbryter förlängd bolusOkänt kommando eller fel svar
- Kalkylator
- Kalkylatorinställningar
+ Snabbsteg
+ Inställningar för snabbstegKnapptext:KH:Giltig:
@@ -392,22 +297,18 @@ Eversense-appen.
MåltidKorrektionÅtgärder
- AndroidAPS startadEndast uppladdning till NightscoutEndast uppladdning till Nightscout. Kommer inte få BG-data om inte lokal källa som xDrip används. Kommer heller inte att kunna hämta basalprofiler från Nightscout.Pump inte initierad
- Pump inte initierad, ingen profil vald.FörfyllningFörsäkra dig om att mängden motsvarar det som är specificerat för just ditt infusionsset.Övrigt
- Standardvärden för förfyllning av slang och kanyl.
+ Standardvärden för påfyllning/förfyllning Knapp 1Knapp 2Knapp 3Enheter:Enheter
- mg/dl
- mmol/lDurationMålområde:Gränsvärden för visualisering
@@ -417,17 +318,7 @@ Eversense-appen.
Klocka (Wear)Uppdatera klockans dataÖppna inställningar på klockan
- Pumpfel
- Svagt batteri
- Pump avstängd
- Pumpbatteri urladdat
- Dana R KoreaBasal:
- Lyckades inte sätta basalprofilen
- Basalprofilen uppdaterad i pumpen
- Avaktivera EasyUI-läget i pumpen
- Aktivera förlängd bolus i pumpen
- Ändra inställningen från E/d till E/tim i pumpenBasal understiger miniminivå. Profilen sattes inte.BG:Senaste BG:
@@ -435,7 +326,6 @@ Eversense-appen.
Minimed 640GKonstant avisering i telefonenAktuellt BG saknas!
- %1$d min sedan%1$d min sedanLokal profilOpenAPS AMA
@@ -451,41 +341,22 @@ Eversense-appen.
HypoTräningTa bort post
- Dana R statistik
- Kumulativ TDD
- Exponentiellt viktad TDD
- Basal
- Bolus
- TDD
- Datum
- Kvot
- Antal dagar
- Vikt
- Kan visa fel om man använder bolus för priming/fyllning!
- Gammal data. Tryck på Hämta.
- Total grundbasal
- TBB * 2
- Startar...ActKonfLoopEPOAPSLP
- DanaHemvPumpProfilBeh
- CPMålWearSMSFörkorta namnen på flikarnaAnvänd alltid kort medeldelta istället för enkel deltaAnvändbart när ofiltrerade källor som xDrip ger brusvärden
- Avancerade inställningar
- Modell: %1$02X Protokoll: %2$02X Kod: %3$02XProfilStandardvärde: 3 Detta är en grundsten i OpenAPS säkerhet. Detta begränsar dina temp basaler till maximalt 3x din största basaldos. Du behöver oftast inte ändra detta värde. Läs på och förstå skillnaden mellan 3x nuvarande och 3x daglig max som säkerhetsinställningar.Standardvärde: 4 Detta är en grundsten i OpenAPS säkerhet. Detta begränsar dina tempbasaler till maximalt 4 gånger din nuvarande basaldos, oberoende av din maximala basaldos. Detta för att undvika att man av misstag gör farliga inställningar. Om man når taket i denna inställning så kanske ändringar i andra inställningar behövs. De flesta behöver inte ändra denna inställning.
@@ -504,18 +375,9 @@ Eversense-appen.
Kalibrering skickad. Observera att xDrip måste vara inställd att ta emot kalibreringar.xDrip tar inte emot kalibreringarPump pausad
- Hämtar pumpstatus
- Ställer in temp basal
- Avbryter temp basal
- Ställer in förlängd bolus
- Avbryter förlängd bolus
- Uppdaterar basaldoser
- Kopplar frånUtförInställningar för Virtuell pumpLadda upp status till Nightscout
- Fel lösenord
- Maximal daglig dos snart nåddNS ClientNSClURL:
@@ -539,7 +401,7 @@ Eversense-appen.
Visa detaljerad IOBVisa IOB med bolus och basal på klockamisslyckat - kontrollera telefonen
- Ej tillgängligt
+ -Personens ålderBarnTonåring
@@ -568,15 +430,13 @@ Eversense-appen.
ÅterupptaÅteranslut PumpFel duration
- Loop pausad.
+ Loop pausadLoop återupptagen15 min trendCOBSuperbolusRapportera appstart till NightscoutAvslutar appen för att inställningarna ska läsas in.
- Dana R v2
- InsulinVilken typ av insulin använder du?Snabbverkande InsulinNovorapid, Novolog, Humalog, Apidra
@@ -585,15 +445,26 @@ Eversense-appen.
Aktivera superbolus i kalkylatornAktiverar superbolusfunktionen i kalkylatorn. Aktivera inte innan du förstått hur den fungerar. DEN KAN ORSAKA ÖVERDOSERING AV INSULIN OM INSIKT SAKNAS OM FUNKTIONEN!Visa \"statuslampor\" på hemskärmen
+ Kanylålder - varning: [h]
+ Kanylålder - akut varning: [h]
+ Insulinålder - varning: [h]
+ Insulinålder - akut varning: [h]
+ Sensorålder - varning: [h]
+ Sensorålder - akut varning: [h]
+ Batteriålder - varning: [h]
+ Batteriålder - akut varning: [h]Varningsnivå för reservoar [U]Akut varningsnivå för reservoar [U]Varningsnivå för batteri [%]Akut varningsnivå för batteri [%]
+ ProgIOBCOB
- Firmwareversion
- Senast ansluten
- Bluetoothstatus
+ Bas
+ Dev
+ Akt
+ Abs
+ DevslopeOmSaknar behörighet att skicka SMSBehörighet saknas
@@ -604,24 +475,15 @@ Eversense-appen.
Visa BGI i statusradenIngen uppladdning till NightscoutIngen data sänds till Nightscout. AndroidAPS ansluter till Nightscout men inga ändringar görs i Nightscout
- Basalsteg
- BolusstegStoppa förlängd bolusSensorålderKanylålderInsulinålder
- timmar
- Ogiltig profil!Genomför profilbytePumpbatteri ålder
- Byte pumpbatteriLarminställningar
- Akut hög
- Hög
- Låg
- Akut låg
- BG-data saknas
- BG-data saknas (akut larm)
+ Skapa aviseringar från NS-larm
+ Skapa aviseringar från NS-meddelandenFörsta varning efter [min]Akut varning efter [min]Intervall för autosens [tim]
@@ -638,7 +500,6 @@ Eversense-appen.
AbsorptionsinställningarMax absorptionstid för en måltid [tim]Tid i timmar när alla kolhydrater förväntas vara absorberade
- Visa förlängd bolus som %%SAGEIAGECAGE
@@ -663,7 +524,6 @@ Eversense-appen.
PUMPDuration [min]OpenAPS SMB
- SMBAktivera UAMAktivera SMBAnvänd Super Micro Bolusar istället för temp basal för snabbare resultat
@@ -675,23 +535,7 @@ Eversense-appen.
Ultra-Rapid Oref%1$f tim DIA är för kort. Använder %2$f istället!Aktivera profil
- DatumOGILTIG
- Väntar på parkoppling med pump
- Parkopplingen klar
- Parkopplingen tog för lång tid
- Parkoppling
- Ingen enhet funnen ännu
- Tom reservoar
- Varning om blodsockermätning
- Återstående mängd insulin
- Dana RS
- Dana
- Vald pump
- Parkoppla ny pump
- Bolushastighet
- Sätt basalsteg till 0.01 enheter per timme
- SerienummerProcentTidsförskjutningStandardmålvärden
@@ -701,32 +545,18 @@ Eversense-appen.
Mål vid träningHypo [min]Mål vid Hypo
- Förfyll
- Hämtar status för förlängd bolus
- Hämtar status för bolus
- Hämtar status för temp basal
- Hämtar pumpinställningar
- Hämtar tid och datum i pumpenåteranvändKontrollera från klockanSätt temp målvärde och ange behandlingar från klockan.
- Anslutningen tog för lång tidMatdatabasg
- min
- h
- d]]>kJEnPrFett]]>
- Slutför bolus (%1$d sek)
- Behandlar
- Påbörjar bolusKommando körs just nu
- Pumpdrivrutin justeradPumpen kan inte nåsBG-värden saknasSystemaviseringar för larm & info
@@ -734,11 +564,9 @@ Eversense-appen.
Varna om BG-data saknasVarna om pumpen inte går att nåPumpen ses som ej nåbar efter [min]
+ Varna om kolhydrater behövsAkut larmINFO
- Bluetooth
- Bluetooth-övervakare
- Startar om bluetooth på telefonen om anslutning till pumpen misslyckas. Detta hjälper på en del telefoner där bluetooth ibland hänger sig.Eversense App (modifierad)Ladda upp BG-data till NightscoutUppladdningsinställningar för BG
@@ -749,14 +577,11 @@ Eversense-appen.
Max antal minuter som kan bli SMBUAM SMB max minuterMax antal minuter basal som kan bli SMB vid UAM
- Min föreslagen mängd kolhydrater
- När kolhydrater rekommenderas som korrektion, ange minsta mängd KH som ger notifiering
- Pumpens firmware stöds inte
+ Minimigräns för KH-förslag
+ Gränsvärde för om systemet ska föreslå en KH-korrektion. Förslag som är mindre än detta värde kommer inte att visas som notis.Skicka BG-data till xDrip+Välj \"640G/Eversense\" som datakälla i xDrip+NSClient BG
- Basalvärdet ersatt med det lägsta tillåtna: %1$s
- Basalvärdet ersatt med det maximala tillåtna: %1$sAnvänd BGAnvänd bolus-IOBAnvänd basal-IOB
@@ -774,8 +599,6 @@ Eversense-appen.
Closed loop aktiveradMax IOB är korrekt angivetBG tillgängligt från vald källa
- Profilens basaler är inte satta på hel timme: %1$s
- Ogiltig profil: %1$sProgrammerar bolus i pumpUppdateraLäge
@@ -796,7 +619,6 @@ Eversense-appen.
En bolus med samma mängd efterfrågades inom den senaste minuten. För att förhindra att råka ge dubbla bolusar av misstag och ev programfel är detta inte tillåtet.NuLäser historik från pumpen
- PumphistorikSätter basalprofilLåg nivå i insulinreservoarenPumpbatteriet är svagt
@@ -815,9 +637,8 @@ Eversense-appen.
Förlängd bolus misslyckadSightsedan
- %1$.2f h
- %1$d min
- %1$dm
+ Sätt neutrala temp basaler
+ Om aktiverad, kommer en eventuell temporär basal automatiskt avbrytas före utgången av varje timme. Denna metod kan förhindra att vissa pumpar piper/vibrerar.Använd alltid SMBAnvänd alltid SMB oberoende av bolus. Endast möjligt med en bra filtrerad BG-källa, t ex Dexcom G5.Använd SMB efter kolhydrater
@@ -827,9 +648,7 @@ Eversense-appen.
Använd SMB vid temp målvärdeAnvänd SMB när temp mål är satt, t ex Äta snart eller TräningAnvänd SMB vid högt målvärde
- Använd SMB även när ett högt temp målvärde är satt (över 5,5 mmol)
- Låt temp basalen gå
- Tysta
+ Aktivera SMB när det finns högt temp mål aktivt (träning, över 100 mg/dl eller 5,5 mmol/l)InsulinKolhydraterKnappar
@@ -839,13 +658,19 @@ Eversense-appen.
Mängd insulin att lägga till när man trycker på knappenKunde inte starta CGM-appen. Kontrollera att den är installerad.CGM
+ Ignorera 5 min
+ Ignorera 15 min
+ Ignorera 30 min
+ behHistorikläsareSkicka notis vid SMBVisa SMB på klockan som en standardbolus.Skapa notiser vid fel
+ Skapa aviseringar för KH-förslagSkapa notiser i Nightscout vid fel eller lokala meddelanden (även synliga i Careportal/Behandlingar)
+ Skapa Nightscout-aviseringar för KH-förslagVisa BG-prognos på klockan.
- Prognos
+ BG-prognosDatavalUppladdning till FabricTillåt automatisk rapportering av appkrascher och användningsinformation till utvecklarna via fabric.io-tjänsten.
@@ -857,7 +682,7 @@ Eversense-appen.
Ge ingen bolus, logga baraKategoriUnderkategori
- Bolusen sparas bara i loggboken
+ Bolus kommer bara att loggas. Inte levereras av pumpenHämta saknad BG-data från NightscoutSMB satt i pumpInsulinaktivitet (5m)
@@ -868,10 +693,9 @@ Eversense-appen.
BasalerIngen åtgärd vald. Inget ändras.Starta \"Hypo\"
- Du kör nu dev-versionen. Closed Loop inte tillåtet.
+ Du kör nu dev-versionen. Closed Loop inaktiverat.Engineering Mode aktiveratEngineering Mode inte aktiverat och appen körs inte som release
- %1$.2f U/hLäser basalprofilPumphistoriken ändrad efter att boluskalkylen gjordes. Bolusen har inte levererats. Vänligen gör en ny kalkyl vid behov.Bolusen levererad, men det gick inte att lägga till den i loggen. Detta kan hända om två små bolusar ges inom två minuter. Vänligen kontrollera pumpens historik och Careportal och lägg till om det saknas. Se till att inte lägga till två bolusar med samma mängd och samma tid.
@@ -894,15 +718,10 @@ Eversense-appen.
SMB inaktiverat i InställningarUAM är inaktiverat i inställningarnaUAM är inaktiverat eftersom det kräver Oref1 känslighetsplugin
- Begränsar max basal till %1$.2f E/h pga %2$s
- pumpbegränsning
- det måste vara ett positivt värdemultiplikator för max basalmultiplikator för daglig max basalEn bolus gavs för mindre än 3 min sedan. Hoppar över SMBBasal justerad korrekt
- Begränsar max procent hastighet till %1$d%% pga %2$s
- Begränsar bolus till %1$.1f enheter pga %2$sBegränsar bolus till %1$.1f enheter pga %2$sBegränsar max IOB till %1$.1f pga %2$sBegränsar kolhydrater till %1$d g pga %2$s
@@ -917,7 +736,6 @@ Eversense-appen.
SMB inte tillåtet i Open LoopMatÅterställ
- Väntar på tidssynkronisering (%1$d sek)Frånkopplad (%1$d min)Max IOB som OpenAPS inte kan överstiga [U]Det här värdet kallas Max IOB av OpenAPS. Om denna mängd insulin on board (IOB) nås, kan inte OpenAPS lägga till mer.
@@ -933,7 +751,6 @@ Eversense-appen.
InstallationsguideAvslutaVälj språk
- Angivet: %1$.2f enheter. Levererat: %2$.2f enheter. Felkod: %3$sFörsta snabbknabben för insulinAndra snabbknabben för insulinTredje snabbknabben för insulin
@@ -956,7 +773,6 @@ Eversense-appen.
Typ av virtuell pumpPumpdefinitionBolus: Steg =%1$s\nFörlängd bolus: [Steg=%2$s, duration =%3$smin -%4$sh] \nBasal: Steg=%5$s\nTempbasal: %6$s (av %7$s), duration =%8$smin -%9$sh\n%10$s
- * Inga spann stöds som granularitet för basal/bolus i den virtuella pumpen. Endast enkla värden.Auto Backfill BGKalkylatorinställningarKalkyler inkluderade i resultatet
@@ -982,27 +798,11 @@ Eversense-appen.
BehörighetBe om behörighetApplikationen behöver förhöjd behörighet för aviseringar
- Appen behöver behörighet att använda Platsinfo för att kunna söka efter Bluetooth-enheter
- Appen behöver behörighet att använda Lagring för att kunna spara loggfiler
+ Appen behöver platsåtkomst för bluetooth- och WiFi-identifiering
+ Applikationen behöver lagringsbehörighet för att kunna lagra loggfiler och exportinställningarBegäranKonfigurera insticksprogram för insulinAvsluta
- Användaralternativ
- Format för tidsvisning
- Scrollfunktion
- Pip vid knapptryckning
- Larm
- Ljud
- Vibrera
- Båda
- LCD på, tid [sek]
- Bakgrundsbelysning på, tid [sek]
- Glukosenheter
- Avstängning pump [tim]
- Låg reservoar [Enheter]
- Spara till pump
- På
- AvÖppna menynStäng menynInställningar för insticksprogram
@@ -1022,8 +822,6 @@ Eversense-appen.
Om systemet upptäcker tillfällig insulinkänslighet, höj mål-BG för att på så sätt minska insulindoseringenFelaktig pumpinstallation. Kontrollera dokumentationen och verifiera att Snabbmenyn heter QUICK INFO med hjälp av 360-mjukvaran.Anpassad
- Stor tidsskillnad
- Stor tidsskillnad:\nTiden i pumpen skiljer mer än 1,5 timme.\nVänligen justera tiden manuellt på pumpen och se till att det går att läsa historiken från pumpen utan oväntat beteende.\nOm möjligt, töm historiken i pumpen innan tidsomställning alternativt stäng av loopen i minst DIA timmar efter den senaste felaktiga historikloggen, men minst DIA timmar från nu.Rensa alla \"AndroidAPS startad\"Tidigare sparade inställningar hittadeVarning: Om du aktiverar och ansluter en pump, kommer AndroidAPS skriva över pumpens basalprofil med den aktiva profilen i AndroidAPS. Se till att ha rätt inställningar i appen innan du ansluter. Om du är osäker, tryck på Avbryt och anslut pumpen på nytt vid ett senare tillfälle.
@@ -1049,17 +847,10 @@ Eversense-appen.
Föredraget APS-lägeTotalKalkyl
- Anslutningen verifierasSkicka dagens loggfiler till utvecklarna tillsammans med denna datumstämpel. Oväntad situation.
- Max bolus nådd
- Kommandofel
- Felaktig hastighet
- Insulingräns nåddMinsta ändring som ger notifiering [%]I Open Loop-läge kommer AAPS bara att be om ändring ifall förändringen är större än detta värde. Standardvärdet är 20%
- Vänligen para ihop pumpen med telefonen.Söker enheter…
- Var god vänta…Parkoppling lyckadesStämmer koderna överens mellan denna enhet och din pump?Parkoppling av Insight
@@ -1079,6 +870,10 @@ Eversense-appen.
Logga varningarAktivera emulering av temp basalAnvända förlängda bolusar istället för temp basaler för att kringgå 250%%-begränsningen
+ Inaktivera vibration för manuell bolus
+ För bolus och förlängd bolus (endast tillgängligt med Insight firmware 3.x)
+ Inaktivera vibration för automatisk bolus
+ För SMB och temp basal med TBR-emulering (endast tillgängligt med Insight firmware 3.x)Fördröjning av frånkoppling [s]SerienummerMjukvaruversion Release
@@ -1136,7 +931,7 @@ Eversense-appen.
Specificera åtminstone en utlösare.Specificera åtminstone en åtgärd.Redan aktiverad
- Redan avaktiverad
+ Redan inaktiveradRedan pausadÅteruppta loopInte pausad
@@ -1144,11 +939,10 @@ Eversense-appen.
Avbryt temp målär mindre änär samma eller mindre än
- är samma som
+ är lika medär samma eller större änär större änär inte tillgänglig
- okändBG-data är inte tillgängligtBG %1$s %2$.0f %3$sBG %1$s %2$.1f %3$s
@@ -1165,23 +959,10 @@ Eversense-appen.
AutoAutomation== ∑ %1$s U
- U/h
- g/U
- /ULogga sensorbyte till NightscoutLoggar automatiskt ett sensorbyte i NS när en sensor startasTomato (MiaoMiao)Tomato
- sekund
- minut
- timme
- day
- vecka
- sekunder
- minuter
- timmar
- dagar
- veckorDitt användarnamn på Tidepool. Normalt din e-postadressAnvändarnamnDitt Tidepool-lösenord
@@ -1208,7 +989,6 @@ Eversense-appen.
Återkommande tidVarjeAldrig
- %1$d minVillkor:Åtgärd:IOB [U]:
@@ -1224,7 +1004,6 @@ Eversense-appen.
väldigt gammal versionNy version tillgänglig för %1$d dagar sedan. Systemet kommer att byta läge till \"stopp innan lågt\" efter %2$d dagar och sluta loopa helt efter %3$d dagar2 tim
- %1$.2f UDexcoms app (modifierad)DXCMTa emot BG-data från den modifierade Dexcom-appen.
@@ -1269,141 +1048,6 @@ Eversense-appen.
Utlösare:TA BORTFörutsättningar:
-
- Operation stöds inte av pumpen/pumpdrivrutinen.
- Operationen stöds inte av pumpen ännu.
-
- Pumpintegration för Medtronic. Kräver Riley Link-enhet och fungerar bara mot vissa pumpmodeller
-
- Serienummer på pumpen
- Pumptyp
- Pumpfrekvens
- Fördröjning innan bolus startas (s)
- Max bolus enligt pumpen (U)
- Max basal på pumpen (U/h)
- Medtronickodning
- USA & Kanada (916 MHz)
- Resten av världen (868 MHz)
- 4b6b Mjukvarukodning
- 4b6b Hårdvarukodning
- Väck och finjustera frekvens
- Ta bort bolusblockering
- Återställ Riley Link-konfiguration
- Batterityp
- Ej vald
- Alkaliskt
- Litium
- NiZn (utökad vy)
- NiMH (utökad vy)
- Avlusning av Bolus/Behandlingar
-
- SÖK
- AVBRYT
- Vald
- Riley Link-sökning
- Enheten stöder inte BLE.
- Bluetooth avstängt.
- Platsdata är inte aktiverat
- För att Bluetooth ska fungera med nyare enheter, måste platsdata vara aktiverat. AAPS sparar inte din plats och det kan stängas av efter att enheten har parkopplats.
- Aktivera
- Nej
- Söker
- Sökning avslutad
- Fel vid sökning: %1$d
-
- Inställningar
- Historik
- Riley Link Status
- Pumpstatus
- Inställningar för Riley Link
- Riley Link
- Konfigurerad adress
- Ansluten enhet
- Anslutningsstatus
- Anslutningsproblem
- Enhet
- Enhetstyp
- Modell
- Senast använda frekvens
- Senaste anslutning
- Firmware
-
- Bluetooth initieras…
- Bluetoothfel
- Bluetooth redo
- Inte startad
- Riley Link initierar…
- Riley Link-fel
- Justerar Riley Link mot pump
- Problem att ansluta till pumpen
- Ansluten
-
- Enheten är inte en Riley Link
- Riley Link kan inte nås
- Bluetooth avstängt
- Ingen bluetoothadapter
- Frekvensjustering misslyckades
- Pumpen kan inte nås
- Podden kan inte nås
- Ej vald
-
- Medtronicpump
- Omnipod
-
- Fel
- Serienummer ej angett.
- Serienummer felaktigt.
- Pumptyp ej vald.
- Pumptypen stöds inte.
- Pumpfrekvens ej vald.
- Pumpfrekvens stöds inte.
- Riley Link adress felaktig.
- Pumptypen verkar inte vara samma som den inställda.
- Basalprofiler är inte aktiverade på pumpen. Aktivera det i pumpens menyer.
- Fel basalprofiltyp inställt på pumpen (måste vara STD).
- Fel typ av temp basal på pumpen (måste vara satt till Absolut).
- Fel max bolus i pumpen (måste vara %1$.2f).
- Fel max basal i pumpen (måste vara %1$.2f).
- Operationen inte möjlig. \n\n Du måste konfigurera Medtronicpump innan du kan använda denna funktion.
- Mer än 24 timmars tidsändring efterfrågades.
-
- Basaldoser
- Konfigurationer
- Notiser
- Statistik
- Okända
- Alla
- Pumphistorik
-
- Aldrig ansluten
- Väcker
- Kommunikationsfel
- Kommunikationstimeout
- Pumpen kan inte nås
- Felaktig konfigureration
- Aktiv
- Sover
-
- Du avbröt bolusen efter att kommandot skickats till pumpen. Detta stöds inte av Medtronicpumpar, så därför måste du avbryta på själva pumpen. Det kan man göra genom att pausa insulintillförseln tillfälligt och sedan starta den igen. Appen kommer att uppdatera bolusmängd vid nästa anslutning (inom 5 min).
- Kunde inte hämta nuvarande temp basal.
- Kunde inte avbryta nuvarande temp basal. Avbryter kommandot.
- Misslyckades med att sätta basalprofilen. Följande timmar har för högt värde angivet: %1$s
- Bolus misslyckades.
- En bolus om %2$.2f enheter kan inte levereras när reservoaren bara innehåller %1$.2f enheter.
- Temp basal kunde inte anges.
- Kunde inte avbryta temp basal.
- Kunde inte byta basalprofil.
- Basalprofilen är samma som nuvarande. Ingen ändring gjord.
- Hämta historik - Sida %1$d (%2$d/16)
- Hämta historik - Sida %1$d
- Hämta tid och datum från pumpen
- Hämta inställningar
- Hämta pumpmodell
- Hämta basalprofil
- Sätt basalprofil
- Hämta temp basal
- Sätt temp basal
- Leverera bolusByt profil tillByt profil till %1$sSenaste anslutning till pump
@@ -1415,7 +1059,6 @@ Eversense-appen.
%2$+.2fU]]>Bolusbegränsning: %2$.2fU till %3$.2fU]]>Varning! Långsam KH-absorption upptäckt %2$d%% av tiden. Dubbelkolla din beräkning. COB kan vara väldigt missvisande och du riskerar få för mycket insulin!]]>
- %1$.0f / %2$d UDirekt bolus [%]Bolusguiden utför beräkningar, men endast denna del av beräknat insulin levereras. Användbar med SMB-algoritm.Laddar...
@@ -1423,7 +1066,6 @@ Eversense-appen.
TidsintervallKlockan är mellan %1$s och %2$sMellan
- StängÖkar maximalt basaldos eftersom inställningen är lägre än din maximala basal i profilenOgiltigt innehåll i meddelande%1$s ISF: %2$.1f
@@ -1441,8 +1083,8 @@ Eversense-appen.
AvRensa avslutadeRensa påbörjade
- TidsdetekteringVill du starta om målet? Du kan förlora de steg du gjort hittills.
+ Tid och/eller tidszonsändring på pumpIngen pump har valtsVälj enheter du vill visa värden iÖverför lokala profiländringar till NS
@@ -1453,13 +1095,13 @@ Eversense-appen.
KopieraSpara eller återställa aktuella ändringar förstTa bort aktuell profil?
- Vill du skapa en ny lokal profil från detta profilbyte?
+ Skapa ny lokal profil av denna?Profilnamnet innehåller punkter.\nDetta stöds inte av NS.\nProfil överförs inte till NS.Nedre värdet för målområde (endast visning)Övre värdet för målområde (endast visning)Ändra ordningÅlder:
- Vikt:
+ Vikt:ID:SparaDen vanligaste profilen:
@@ -1467,10 +1109,9 @@ Eversense-appen.
EnkätOgiltig inmatning (ålder)Ogiltig inmatning (vikt)
- %1$s: ∑: %2$.2f Bol: %3$.2f Bas: %4$.2f]]>
+ Ogiltig %-inmatning%1$s: Låg: %2$02d%% Mål: %3$02d%% Hög: %4$02d%%]]>Medel
- TDDTIRAktivitetsövervakareVill du återställa aktivitetsstatistiken?
@@ -1480,12 +1121,8 @@ Eversense-appen.
BGVerktygVisa beräkning
- Fel
- 12 tim
- 24 timAutomationshändelseRedan satt
- MeddelandeAllt data som inte synkats kommer att kastas bort. Är du säker på att du vill tömma kön?OBS! Om du använder förlängd bolus, kommer du inte längre vara i Closed Loop under den tiden som den förlängda bolusen är igång. Vill du fortsätta?Closed Loop-läget inaktiverat pga att en förlängd bolus är aktiv
@@ -1519,11 +1156,146 @@ Eversense-appen.
Genom att återställa autentiseringsfunktionen kommer alla redan driftsatta autentiserare bli ogiltiga. Du kommer behöva sätta upp dem igen!Vid anslutningVid frånkoppling
- Beräknade resultat
+ BG-prognosAvvikelsekurvaBehörighetskontroll misslyckadesAbsolut insulinmängdHuvudlösenordet används för att kryptera backuper och för att åsidosätta vissa säkerhetsfunktioner i applikationen. Kom ihåg det eller förvara det på ett säkert ställe.Lösenorden stämmer inte överensNuvarande huvudlösenord
+ Statuslampor
+ Kopiera inställningar från NS
+ Kopiera NS-inställningar (om det finns)?
+ Ursprungligt tema
+ Knappar visas alltid längst ned på skärmen
+ Stor skärm
+ Tema
+
+ Aldrig ansluten
+ Väcker
+ Kommunikationsfel
+ Kommunikationstimeout
+ Pumpen kan inte nås
+ Felaktig konfigureration
+ Aktiv
+ Sover
+
+
+ Pumpintegrering för Omnipod. Kräver Riley Link med minst v2-firmware.
+
+ Boluspip aktiverade
+ Basalpip aktiverade
+ SMB-pip aktiverade
+ Tempbasal-pip aktiverade
+ Debug-alternativ aktiverade för pod
+ Automatisk avkänning av tidszon aktiverad
+
+ Omnipod
+ Pod-status
+ %1$.2f U återstår
+ Över 50 U
+ Podadress
+ Pod går ut
+ Ingen info
+ Ingen pod ansluten
+ Inte initierad
+ Aktiva pod-varningar
+ Ack-varningar
+
+ Omnipod (433.91 MHz)
+
+ Operationen inte möjlig.\n\n Du måste konfigurera Omnipod innan du kan använda denna funktion.
+ Operationen är inte möjlig.\n\n Du måste vänta några minuter, tills AAPS försöker ställa in profilen för första gången.
+ Ogiltig PodInitActionType: %1$s
+ Ingen aktiv pod.
+ Kommandoverifikation misslyckades.
+ Ett oväntat fel uppstod. Vänligen rapportera! (typ: %1$s).
+ Kommunikationsfel: Emottog ogiltiga indataparametrar.
+ Kommunikationsfel: Timeout.
+ Kommunikationsfel: Ett oväntat fel inträffade. Rapportera!
+ Kommunikationsfel: Lyckades inte verifiera meddelandet.
+ Kommunikationsfel: Mottog ett ogiltigt datapaket från pod.
+ Kommunikationsfel: Pod är i fel tillstånd.
+ Kommunikationsfel: Mottog ett felaktig svar från pod.
+ Kommunikationsfel: Tog emot ett meddelande med ett ogiltigt sekvensnummer från podden.
+ Kommunikationsfel: Tog emot ett meddelande med en ogiltig adress från podden.
+ Kommunikationsfel: Misslyckades avkoda meddelandet från pod.
+ Kommunikationsfel: \"nonce resync\" misslyckades.
+ Kommunikationsfel: \"nonce\" är inte i synk.
+ Kommunikationsfel: Mottog inte tillräckligt mycket data från pod.
+ Ett pod-fel (%1$03d %2$s) har upptäckts. Vänligen inaktivera din pod och starta en ny.
+ Kommunikationsfel: Pod returnerade ett fel.
+
+ Podhantering
+ Initiera pod
+ Inaktivera pod
+ Återställ pod
+ Pod-historik
+ Leverera bolus
+ Avbryt Bolus
+ Sätt temp basal
+ Avbryt temp basal (internt av drivrutinen)
+ Avbryt temp basal (tvingat av användaren)
+ Ange basaldoser
+ Uppdatera pod-status
+ Hämta Pod-information
+ Ställ in tid
+ Konfigurera varningar
+ Bekräfta varningar
+ Pausa insulintillförsel
+ Återuppta insulintillförsel
+ Okänd post
+ %1$.1f U
+ %1$.1f U, KH=%2$.1f g
+ Dos: %1$.1f U, Duration: %2$d min
+ Om du trycker på OK, kommer poddstatus att tvångsåterställas och du kommer inte att kunna kommunicera med podden längre. Gör det här bara om du inte kan kommunicera med podden. Om du fortfarande kan kommunicera med den, använd alternativet Inaktivera pod.
+ Pod-historik är inte tillgänglig för tillfället.
+ Fyll pod
+ \nFyll den nya podden med tillräckligt med insulin för 3 dagar.\n\nLyssna efter två pip under påfyllningsprocessen. Dessa anger att minimimängden 85U har nåtts. Var noga med att helt tömma påfyllningssprutan, även efter att ha hört de två pipen.\n\nNär påfyllningen är klar, tryck Nästa.\n\nNotera: Ta inte bort nålskyddet ännu.
+ Förfyllning
+ Försöker parkoppla den nya podden och förfylla den.\n\nNär alla steg är sluförda, kan du trycka på Nästa.\n\nNotera: Håll din riley link väldigt nära podden.
+ Fäst podden
+ \nFörbered infusionsplatsen. Ta bort poddens nålskydd och fäst podden på infusionsplatsen.\n\nOm kanylen sticker ut, tryck på Avbryt och kasta din pod.\n\nTryck Nästa för att skjuta in kanylen och påbörja basaldoseringen.
+ Skjuter in kanylen
+ Försöker att ställa in basaldoser och skjuta in kanylen.\n\nNär alla steg är slutförda, kan du trycka på Nästa.
+ Pod-info
+ \nPodden är nu aktiverad.\n\nDina basaldoser har programmerats och kanylen har skjutits in in.\n\nKontrollera att kanylen sitter på rätt sätt och byt pod om den inte gjort det.
+ Inaktivera pod
+ \nTryck på Nästa för att inaktivera podden.\n\nOBS! Det här stoppar all insulintillförsel och inaktiverar podden.
+ Inaktiverar pod
+ Inaktivering av pod\n\nNär alla steg är slutförda, kan du trycka på Nästa.\n\nNotera: Om inaktivering misslyckas ofta, tryck på Avbryt och använd alternativet Återställ pod för att tvångsåterställa podden.
+ Pod inaktiverad.\n\nTa bort podden och kasta den.
+ Parkoppla pod
+ Förfyll pod
+ Fyll kanyl
+ Sätt basalprofil
+ Avbryt leverans
+ Inaktivera pod
+
+
+ Pumpintegration för Omnipod Dash.
+ Påminnelse att slutföra parkoppling
+ Påminnelse att slutföra installation
+ Pod löper snart ut
+ Pod kommer att gå ut inom kort
+ Pod kommer snart att stängas av
+ Låg reservoar
+ Okänd varning
+ Inställning av basalprofil kan ha misslyckats. Leverans kan avbrytas! Vänligen uppdatera pod-status.
+ Inställning av temp basal kan ha misslyckats. Om det redan var en temp basal igång, kan den ha avbrutits! Vänligen uppdatera pod-status.
+ Tidsuppdateringen kan ha misslyckats. Leverans kan avbrytas! Vänligen uppdatera pod-status.
+ Det går inte att verifiera om bolusen är slutförd. Verifiera att din pod leverarar bolus eller avsluta bolus.
+ RL-statistik
+ Pulslogg
+ Jämför profiler
+ Profilguide
+ Standardprofil
+ Nuvarande profil
+ Tillgänglig profil
+ Profiltyp
+ Ålder: %1$.0f TDD: %2$.0f U
+ Ålder: %1$.0f TDD: %2$.0f U %3$d%%
+ Ålder: %1$.0f Vikt: %2$.0f kg
+ % av basal
+ DPV-standardprofil
diff --git a/app/src/main/res/values-tr-rTR/strings.xml b/app/src/main/res/values-tr-rTR/strings.xml
index 733b287549..aa1332bb29 100644
--- a/app/src/main/res/values-tr-rTR/strings.xml
+++ b/app/src/main/res/values-tr-rTR/strings.xml
@@ -12,11 +12,9 @@
Veritabanlarını sıfırlaVeritabanlarını gerçekten sıfırlamak istiyor musunuz?Çıkış
- DanaR Bluetooth aygıtıHer zaman bazal mutlak değerleri kullanLütfen telefonunu yeniden başlat, yada Android APS sistem ayarları üzerinden yeniden başlat.\nAksi taktirde Android APS hiç bir günlük tutmayacak (takip ve doğrulama, algoritmanın düzenli çalışmasi için önemli)!Ortak özelliklere hızlıca erişmek için bazı düğmeler
- Gelişmiş kayıt defteri girişleri.Aktif eklentileri yapılandırmak için kullanılanEğitim programıNightscout\'ta tanımlanan gıda ön ayarlarını gösterir
@@ -33,10 +31,6 @@
Nightscout\'ta tanımladığınız profili sağlarSadece bir zaman bloğuyla bir profil tanımlayın.Accu-Chek Combo pompalar için pompa entegrasyonu, ruffy yüklü olması gerektirir
- DANA Diabecare R pompaları için pompa entegrasyonu
- DANA Diabecare R yerli Kore pompaları için pompa entegrasyonu
- Güncellenmiş ürün yazılımlı DANA Diabecare R pompaları için pompa entegrasyonu
- DANA Diabecare RS pompaları için pompa entegrasyonuDiyabet tedavisi için günde birden fazla enjeksiyon yapan kişiler için pompa entegrasyonuHenüz herhangi bir sürücüye sahip olmayan pompalar için pompa entegrasyonu (Açık Döngü)Duyarlılık, Oref0 gibi aynı şekilde hesaplanır ancak geçmiş zaman çerçevesi belirtebilirsiniz. Minimal karbonhidrat emilimi, tercihlerden maksimum karbonhidrat emilim süresinden hesaplanır.
@@ -49,13 +43,6 @@
WearOS saatinizi kullanarak AndroidAPS\'yi izleyin ve kontrol edin.Döngü\'yle ilgili bilgileri xDrip+ watchface\'inizde gösterin.SMS komutlarını kullanarak uzaktan AndroidAPS kontrolü.
- Ünite
- DIA
- IC Karbonhidrat İnsülin Oranı
- ISF İnsülin Duyarlılık Faktörü
- Bazal
- Hedef
- PROFİLİ AYARLANMADIİnsülin:Karbonhidrat:IOB:
@@ -71,15 +58,9 @@
TTKarbonhidratDüzeltme
- UBolus IOBŞimdi ÇalıştırSANAL POMPA
- Temel bazal oranı
- Geçici Bazal
- Yayım Bolus
- Pil
- RezervuarTamamSon ÇalıştırmaGirdi Parametreleri
@@ -90,16 +71,11 @@
Yemek VerisiSonuçGlikoz verisi yok
- Değişiklik yapılmadıİstek
- Oranı
- Süre
- NedeniGlikozDeltaDelta:Konfigurasyon oluştur
- HedeflerGenel BakışNightscout ProfilBasit Profil
@@ -117,7 +93,6 @@
GenelKullanışlı bulabileceğiniz bazı genel eklentiler.Hangi kısıtlamaları uygula?
- günlerKısıtlamalarDöngüDöngü
@@ -126,24 +101,18 @@
İşlenmiş kısıtlamalardan sonraGeçici bazal pompa tarafından ayarlaEnson gönderilen
- Tamam
- İptalSEÇİLEN VEYA SAĞLANAN SONUCU APS YOKGüvenlikEklenti devre dışıKısıtlamalar ihlaliBolus teslimat hatası
- Geçici Bazal teslimat hatasıYeni geçici bazal oranını kabul et:TedaviHesap makinesiSınırlaması uygulanır!
- Onaylama
- BolusBolus:BazalBazal:
- KarbonhidratGirişinizi değiştirin!KŞ kaynağıAndroidAPS verilerini nereden alsın?
@@ -160,24 +129,6 @@
Bazal IOBBolus kısıtlaması uygulandıKarbonhidrat kısıtlaması uygulandı
- KŞ Kontrol
- Duyuru
- Not
- Soru
- Egzersiz
- Pompa Kanül Değişimi
- CGM Sensör Yerleştir
- CGM sensörü Başlat
- İnsülin Kartuş Değişimi
- Aperatif Bolusu
- Öğün Bolus
- Düzeltme Bolus
- Kombo Bolus
- Geçici Basal başlat
- Geçici Bazal Bitimi
- Karbonhidrat düzeltme
- OpenAPS etkisiz
- Etkinlik TürüDiğerMetreSensör
@@ -203,86 +154,27 @@
Dosya bulunamadıDışarı aktarma ayarlarıİçe aktarma ayarları
- Max Ü/sa geçici Bazal ayarlanabilirBu değer OpenAPS\'te \"max bazal\" olarak adlandırılırOpenAPS\'nin vermesine izin verilen maksimum bazal IOB (Aktif insülin) [U]Bu değere OpenAPS bağlamında Max IOB denir.\nAPS\'de [U] bir kerede verilen maksimum insülin.
- İptal et
- DanaR
- Bağlanıyor
- Bağlanıldı
- Bağlantı kesildiSon Kullanıcı Lisans SözleşmesiTIBBİ KARAR VERMEK İÇİN KULLANILMAMALIDIR. UYGULANABİLİR YASANIN İZİN VERDİĞİ ÖLÇÜDE, PROGRAM İÇİN GARANTİ YOKTUR. TELİF HAKKI SAHİPLERİNİN VE / VEYA DİĞER TARAFLARIN YAZILI OLMASINA YÖNELİK BAŞKA HİÇBİR ŞEKİLDE BELİRTİLEN VEYA BELİRLİ BİR AMACA UYGUNLUK İLE İLGİLİ ZIMNİ GARANTİLER DE DAHİL OLMAK ÜZERE ANCAK BUNLARLA SINIRLI OLMAMAK ÜZERE AÇIK VEYA ZIMNİ HİÇBİR GARANTİ OLMAKSIZIN “OLDUĞU GİBİ” SAĞLAMAKTADIR. PROGRAMIN KALİTESİ VE PERFORMANSI İLE İLGİLİ TÜM RİSK SİZE AİTTİR. PROGRAMIN HASARLI OLMASI DURUMUNDA, TÜM GEREKLİ SERVİS, ONARIM VEYA DÜZELTME MALİYETİNİ KABUL ETMİŞ OLURSUNUZ.BEN ANLADIM VE KABUL EDİYORUMKaydet
- Bluetooth bağdaştırıcısı bulunamadı
- Seçili aygıt bulunamadı
- Pompa bağlantı hatası
- IOB(Aktif insülin) pompa
- Günlük birimleri
- Son bolus
- Geçersiz bilgi girişi
- Değer düzgün ayarlanmamışDosyayı yeniden yükle
- Profili görüntüle
- Yürütüldü
- Yorum
- Başarılı
- Yüzde
- Mutlak
- Temp bazal iptalSMS Kommunikator
- Sonuç bekleniyor...İzinli telefon numaraları+XXXXXXXXXX;+YYYYYYYYYYBolus %1$.2fU gönderilecek, kod ile cevap ver %2$sKalibrasyon %1$.2f gönderilecek, kod ile cevap ver %2$sBolus başarısız olduSMS ile uzaktan komutlara izin ver
- Parmak
- Sensör
- ManuelDanaR profil ayarlarıDIA [h]İnsülin aktivitesinin süresi
- Bazal profiliniz güncellenemedi
- Yeniden yükleYüklüyor
- E bolus
- DS bolus
- DE bolus
- hata
- doldur
- bazal saati
- glikoz
- karbonhidrat
- alarm
- Toplam %1$d kayıt yüklenildi
- S bolus
- Alarmlar
- Basal Saatleri
- Boluses
- Karbonhidratlar
- Günlük insülin miktarı
- Hatalar
- Glikoz
- Doldur
- Askıya alınan
- %1$d bağlanıyor
- Pompa parolası
- Hatalı parola!
- Pompa meşgul
- Gönderildi
- DurduBolus durduBolus durdurma
- Tıkanıklık
- Dur
- DURDUR\'A BASTIĞINIZ
- Pompa bekleniyor
- İzin verilen sınıra ulaştınız
- Profil seçilmediDöngü devre dışı bırakıldıDöngü etkinleştirildiDöngü devre dışı
@@ -305,20 +197,15 @@
ÖgünDüzeltmeEylemler
- AndroidAPS başladıSadece Nightscout\'a yükle (devre dışı senkronizasyon)Sadece NS yükle. Etkili değil SGV üzerinde xDrip gibi bir yerel kaynağı seçili olmadıkça. NS-profilleri kullanılır iken profilleri üzerinde etkili değil.Pompa başlatılmamış!
- Pompa, başlatılmamış profili oluşturulmamış!Hazırla/doldurLütfen miktarın infüzyon setinizin özelliklerine uygun olduğundan emin olun!Diğer
- Hazırla/doldur standart insülin miktarları.Düğme 1Düğme 2Düğme 3
- mg/dl
- mmol/lHedef aralığı:Görselleştirme AralığıGenel bakış ve akıllı saat göstergesi için yüksek ve düşük değerler
@@ -327,17 +214,7 @@
WearTüm verileri yeniden gönderinAyarları Wear\'da açın
- Pompa hatası
- Düşük Pil
- Pompayı durdur
- Pompa pili bitmiş
- DanaR KoreBazal oranı:
- Bazal profil ayarı başarısız oldu
- Pompadaki Bazal profil güncellendi
- Pompada EasyUI modunu devre dışı bırak
- Pompada yayma bolusları etkinleştir
- Pompayı Ü/d\'den Ü/s\'te değiştirinMinimum değerin altında bazal değeri. Profil ayarlanmadı!KŞ:Son KŞ:
@@ -345,7 +222,6 @@
MM640gSürekli BildirimESKİ VERİ
- %1$d dakika önce%1$ddak önceYerel profilOpenAPS AMA
@@ -359,46 +235,26 @@
Yakında ÖğünHipoEğzersiz
- DanaR istatistikleri
- Toplamsal GTD (Günlük Toplam Doz)
- Katlanarak artan ağırlıklı GTD (Günlük Toplam Doz)
- Bazal
- Bolus
- TDD
- Tarih
- Oran
- # Gün
- Kilo
- Hazırlama / doldurma için boluslar kullanılıyorsa muhtemelen yanlış!
- Eski Veri Lütfen \"Yeniden Yükle\"ye Basın
- Günlük bazal miktarı
- TBB * 2
- Başlatılıyor ...ACTKONFDÖNGÜSPOAPSLP
- DANAHOMEVPOMPNSPROFILTEDAVİ
- CPOBJWEARSMSKısa tab başlıklarıHer zaman basit delta yerine kısa ortalama delta kullanxDrip gibi filtre uygulanmamış kaynaklardan gelen veriler gürültülü olduğunda kullanışlıdır.
- Gelişmiş Ayarlar
- Model: %1$02X Protokol: %2$02X Kod: %3$02XProfilVarsayılan değer: 3 Bu OpenAPS için önemli bir güvenlik ayarıdır. Maksimum bazal Iob\'u, en büyük bazal oranınızın üç katı (varsayılan olarak) ile sınırlar. Genel olarak, bu değeri değiştirmemelisiniz. Ama \"3x max günlük, 4x şuan\" ın bir güvenlik ayarı olarak ne anlama geldiğini bilmelisiniz.Varsayılan ayar: 4 Bu, OpenAPS güvenlik ayarlarının diğer yarısı ve \"3x max günlük, 4x akım\" güvenlik korumasının diğer yarısıdır. Bu, başlangıç değerinizin, pompada ayarlanan taban maksimum değerinizden bağımsız olarak, mevcut bazal seviyenin bu sayısından daha yüksek olamayacağı anlamına gelir. Bu, insanların, algoritmanın nasıl çalıştığını anlamadan temel çizgiyi büyük ölçüde artırarak kendilerini tehlikeli durumlarda bulmalarını engellemektir. Varsayılan ayar 4x\'dir; Çoğu insan bu ayarları asla değiştirmek zorunda kalmayacak, ancak bu güvenlik sınırına yakınsa diğer terapi ayarlarını ayarlamalıdırlar.Varsayılan değer: 0.7\nBu autosens için diğer güvenlik önlemidir. Bazal oranların ne kadar düştüğünü ve İnsülin Duyarlılık Faktörü ve KŞ hedeflerini ne kadar yüksek tutabileceğini gösterir.
- Autosens hedefleri de ayarlarVarsayılan değer: true\nBu autosens in İnsülin Duyarlılık Faktörü ve bazallara ek olarak KŞ hedeflerinin ayarlanmasında kullanılır.Varsayılan değer: 2\nEğer sadece öğününüzü yerseniz, öğün bolusu alındıktan sonra bolus ertelemesi devreye girer, bu şekilde Döngü karşı bir tetbir olarak geçici bazal oranını azaltmasın diye. Buaradaki örnekte olduğu gibi varsayılan 2; 3 saat DIA olacak şekilde bolus ertelemesi kademeli olarak 1,5 saat üzeri (3DIA/2=1,5).Varsayılan değer: 3.0 (AMA) Gelişmiş Yemek Asistanı veya 8.0 (SMB) Super Micro Bolus. Bu 5 dakika başına varsayılan karbonhidrat emilimi için bir ayardır. Standart değer AMA için 3mg/dl/5dk aynı şekilde SMB 8mg/dl/5dk dir.
@@ -411,18 +267,9 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
Kalibrasyon gönderildi. Alma xDrip+\'ta etkinleştirilmelidir.xDrip+ kalibrasyonları almıyorPompa durduldu
- Pompa durumu alınıyor
- Geçici bazal ayarlanıyor
- Geçici bazal durduruluyor
- Yayma bolus ayarlanıyor
- Yayma bolus durduruluyor
- Geçici bazal oranları güncelleniyor
- Bağlantı kesiliyorYürütülüyorSanal pompa ayarlarıNightscout\'a durum aktar
- Hatalı parola
- Günlük İnsülin limitine yaklaşıldıNSClientNSClURL:
@@ -446,7 +293,6 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
Ayrıntılı IOB gösterWatchface üzerinde IOB\'yi bolus ve bazal IOB\'ye ayırınbaşarısız - lütfen telefonu kontrol edin
- Mevcut değilHasta yaşıÇocukErgen
@@ -477,8 +323,6 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
SuperbolusLog uygulaması NightScout\'a başlarAyarları uygulamak için uygulamadan çıkılıyor.
- DanaRv2
- İnsülinHangi tür insülin kullanıyorsunuz?Hızlı etkili İnsülinNovorapid, Novolog, Humalog
@@ -488,9 +332,6 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
Kurulum sihirbazında superbolus işlevselliğini etkinleştirin. Gerçekten ne yaptığınızı öğrenene kadar etkinleştirmeyin. BİLİNÇSİZ KULLANILDIĞINDA AŞIRI DOS İNSÜLIN VERİLEBİLİR!IOBCOB
- Firmware
- Son bağlantı
- Bluetooth durumuHakkındaSMS izni eksikKayıp telefon durum yetkilendirmesi
@@ -501,23 +342,12 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
BGI\'yı durum satırına ekleNightScout\'a yükleme yokNS\'ye gönderilen tüm veriler düştü. AAPS NS\'ye bağlandı, ancak NS\'de hiçbir değişiklik yapılmadı
- Bazal adım
- Bolus adımYayma Bolusu iptal etSensör yaşıKanül yaşıİnsülin yaşı
- saatler
- Geçersiz profil!!!Pompa pil yaşı
- Pompa Akü DeğişimiAlarm türleri
- Aşırı yüksek
- Yüksek
- Düşük
- Çok düşük
- Eski veriler
- Acil durum verileriEski veri eşiği [min]Acil durum verileri eşiği [min]Autosens [h] için aralık
@@ -557,7 +387,6 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
PUMPSüre [min]OpenAPS SMB
- SMBUAM etkinleştirSMB (Super Micro Bolus) etkinleştirDaha hızlı bir etki için temp bazal yerine Super Micro Bolus kullanın
@@ -569,22 +398,7 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
Hızlı OrefDIA %1$f çok kısa - bunun yerine %2$f kullanıyor!Profili etkinleştir
- TarihGEÇERSİZ
- Pompada eşleştirme bekleniyor
- Eşleştirme tamam
- Eşleştirme zaman aşımı
- Şu ana kadar hiçbir cihaz bulunamadı
- Rezervuar boş
- Kan şekeri ölçüm uyarısı
- Kalan insülin düzeyi
- DanaRS
- Dana
- Seçilen Pompa
- Yeni Pompa eşleştir
- Bolus hızı
- Bazal adımı ayarla 0,01 Ü/s
- Seri numaraYüzdesiZaman kaydırVarsayılan Geçici hedefler
@@ -594,31 +408,18 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
eğzersiz hedefihipo süresihipo hedefi
- Doldur
- Yayma bolus durumu alınıyor
- Bolus durumu alınıyor
- Geçici bazal durumu alınıyor
- Pompa ayarları alınıyor
- Pompa durumu alınıyoryeniden kullanımSaat tarafından kontrolTedavileri ve Geçici hedefleri saat tarafından girin.
- Bağlantı zaman aşımına uğradıYiyecekgr
- dk
- sa]]>kJEnProtYağ]]>
- Bolus bitimi için bekleniyor. Kalan %1$d san.
- Etkinlik işleniyor
- Bolus teslimatı başlatılıyorKomut şu anda çalıştırıldı
- Pompa sürücüsü düzeltildiPompa ulaşılamıyorKaçırılan KŞ OkumalarıUyarılar ve bildirimler için sistem bildirimlerini kullan
@@ -628,14 +429,10 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
Kritik eşik pompaya erişilemiyor [min]Acil önemli AlarmINFO
- Bluetooth
- BT Watchdog
- Pompa ile herhangi bir bağlantı sorunu yaşanıyorsa, Akıllı telefonunuzda Bluetooth bağlantısını kapatıp açın. Bu bluetooth bağlantı sorununu giderecektir.KŞ verilerini NighScout\'a yükleAyrıntılı delta gösterBir ondalık basamakla deltayı gösterSMB\'yi sınırlamak için maksimum bazal dakika
- Desteklenmeyen pompa yazılımıXDrip+\'a KŞ verilerini gönderXdrip+ içerisinde 640g/Eversense veri kaynağı seçNightscout Client KŞ
@@ -701,9 +498,6 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
Geçici hedeflerle SMB\'yi (Super Micro Bolus) etkinleştirGeçici hedef aktif olduğunda SMB\'yi etkinleştir (yakında yeme, egzersiz)Yüksek geçici bazal oran hedefleriyle SMB\'yi etkinleştir
- Yüksek geçici bazal oran hedef etkin olduğunda SMB\'yi etkinleştirin (egzersiz)
- Geçici bazal oranını etkin burakın
- Sesi kapatİnsülinKarbonhidratTuşlar
@@ -729,7 +523,6 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
Bolusu sadece kayıt altına alKategoriAlt kategori
- Bolus sadece kaydedilecekNightscout\'tan eksik kan şekeri değerlerini otomatik olarak yükleyinSMB (Supermicroboluses) pompa tarafından verildiDuyarlılık
@@ -764,15 +557,10 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
SMB tercihleri devre dışıUAM (UnAnnounced Meals) tercihlerde devre dışı bırakıldıUAM (UnAnnounced Meals), Oref1 duyarlılık eklentisine bağlı olduğu için devre dışı bırakıldı
- %2$s nedeniyle max bazal oranını %1$.2f Ü/s ile sınırlı
- pompa sınırı
- pozitif bir değer olmalıdırmax bazal çarpanımax günlük bazal çarpanSon 3 dakika içerisinde bir bolus gönderildi, SMB (Super Micro Bolus) atlandıBazal oranı doğru ayarlanmış
- %2$s\'den dolayı max yüzde oranı %1$d%% ile sınırlandırılıyor
- %2$s\'den dolayı bolus %1$.1f U ile sınırlandırılıyor%2$s\'den dolayı yayım bolus %1$.1f U ile sınırlandırılıyor%2$s\'den dolayı max IOB\'yi (Aktif İnsülin) %1$.1f U ile sınırlandırılıyor%2$s\'den dolayı karbonhidratlar %1$d g ile sınırlandırılıyor
@@ -787,7 +575,6 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
Açık Döngü modunda Super Micro Bolus\'a izin verilmiyorYiyeceksıfırla
- Zaman senkronizasyonu bekleniyor (%1$d sn)Bağlantısı kesildi (%1$d m)OpenAPS tarafından aşılmayacak, maksimum toplam IOB(Aktif İnsülin)[U]Bu değer OpenAPS bağlamında Max IOB (Aktif İnsülin) olarak adlandırılır\nOpenAPS, mevcut IOB bu değerden daha büyükse daha fazla insülin eklemez
@@ -803,7 +590,6 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
Kurulum SihirbazıBİTTİDilinizi seçin
- Soruldu: %1$.2fU Teslim edildi: %2$.2fU Hata kodu: %3$sBirinci insülin artışıİkinci insülin artışıÜçüncü insülin artışı
@@ -826,7 +612,6 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
Sanal pompa tipiPompa tanımıBolus: Adım=%1$s\nYayım Bolus: [Step=%2$s, Süre=%3$smin-%4$sh]\nBasal: Adım=%5$s\nTBR: %6$s (ile %7$s), Süre=%8$smin-%9$sh\n%10$s
- * Sanal pompada yalnızca belirli değerler, aralıklar değil ayrıntı olarak bazal/bolus desteklenmez.KŞ Otomatik doldurKurulum Sihirbazı AyarlarıSihirbaz sonucuna dahil edilen hesaplamalar:
@@ -850,23 +635,9 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
İlk hedefinize başlayınYetkiİzin için sorunuz
- Uygulama Bluetooth taraması için konum izni gerektiriyor
- Uygulama, log dosyalarını depolayabilmek için depolama izni gerektiriyorİstekİnsülin eklentisini yapılandırÇıkış
- Kullanıcı seçenekleri
- Görüntü saat biçimi
- Düğme kaydırma
- Tuşa basıldığında bip sesi çıkar
- Alarm
- Ses
- Titreşim
- İkisi de
- Glikoz birimleri
- Seçenekleri pompaya kaydet
- Aç
- KapaNavigasyonu açNavigasyonu kapatEklenti tercihleri
@@ -882,8 +653,6 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
Geçersiz pompa kurulumu, dokümanları kontrol edin ve Hızlı Bilgi menüsünün 360 konfigürasyon yazılımını kullanarak QUICK INFO olarak adlandırıldığını doğrulayın.Özel
- Büyük zaman farkı
- Büyük zaman farkı:\n1,5 saatten fazla olduğunda pompada zaman kapalıdır.\nLütfen pompanın üzerindeki zamanı manuel olarak ayarlayın ve geçmişin pompadan okunmasından dolayı beklenmedik davranışlara neden olmadığından emin olun.\nMümkünse, zamanı değiştirmeden önce geçmişini pompadan çıkarın veya son yanlış geçmiş girişinden sonra bir DIA için Kapalı Döngü\'yü iptal edin, ancak o andan itibaren en az bir DIA\'yı devre dışı bırakın.Temiz AndroidAPS başladıSaklanan ayarlar bulunduDikkat: Eğer bir donanım pompasını etkinleştirir ve bağlarsanız, AndroidAPS, bazal ayarları profilden pompaya aktaracaktır ve pompada kayıtlı mevcut bazal oranlarının üzerine yazacaktır. AndroidAPS\'de doğru ayarların olduğundan emin olun. Emin değilseniz veya pompanızdaki bazal ayarların üzerine yazmak istemiyorsanız, iptal tuşuna basın ve daha sonra tekrar deneyin.
@@ -907,30 +676,20 @@ Aktif Karbonhidratın ne kadar hızlı sindirildiğine ve KŞ\'nin beklenenden d
Tercih edilen APS moduToplamHesap
- HandshakingBu günün log dosyalarını bu zamana göre geliştiricilere gönder. Beklenmedik bir durum.
- Max bolus ihlali
- Komut hatası
- Hız hatası
- İnsülin sınırı ihlaliMinimum istek değişikliği [%]
- Lütfen pompanızı telefonunuzla bağlayın!== ∑ %1$s U
- g/U
- /UTomato (MiaoMiao)Tomato
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml
index 0ae0966cf2..3c9c231856 100644
--- a/app/src/main/res/values-zh-rCN/strings.xml
+++ b/app/src/main/res/values-zh-rCN/strings.xml
@@ -12,12 +12,9 @@
重置数据库你真的想重置数据库吗?退出
- 使用>200%%的扩展大剂量(extended boluses)
- DanaR 蓝牙设备总是使用基础率的绝对值请重启你的手机或者从系统设置里重启AndroidAPS软件 \n 否则 Android APS将不会记录日志 (这对于跟踪和检查算法是否正确很重要)!一些快速访问常用功能的按钮
- 输入高级日志条目用于配置活动插件学习计划显示 Nightscout 中定义的食物预设
@@ -34,10 +31,6 @@
提供您在 Nightscout 中已经定义的配置文件仅使用一个时间段定义配置文件。与Accu-Check Combo 胰岛素泵集成,需要安装ruffy软件
- 与丹纳R泵集成
- 与韩版丹纳R泵集成
- 与 DanaRv2 泵集成
- 与丹纳RS泵集成与用于糖尿病治疗的多次每日注射的泵集成与我们还没有其驱动的泵集成(开环)灵敏度的计算方式与 Oref0 相同, 但可以指定过去的时间范围。碳水化合物吸收最小值是根据参数选项里的碳水化合物吸收时间最大值计算得来的
@@ -51,13 +44,6 @@
使用您的 WearOS 手表监视和控制 AndroidAPS。在 xDrip + 表盘上显示有关闭环的信息。远程控制 AndroidAPS 使用 SMS 短信命令。
- 单位
- DIA胰岛素作用持续时间
- IC碳水系数
- ISF胰岛素敏感系数
- 基础率
- 血糖控制目标值
- 没有设置配置文件胰岛素:碳水化合物:IOB活性胰岛素:
@@ -73,15 +59,9 @@
临时目标碳水化合物矫正值
- U大剂量活性胰岛素IOB现在运行虚拟泵
- 基础率
- 临时基础率
- 扩展大剂量(方波)
- 电池
- 储药器确定上一次运行输入参数
@@ -92,16 +72,11 @@
膳食数据结果没有可用的血糖数据
- 不需要改变请求
- 比率
- 持续时间
- 原因血糖增量增量:配置生成器
- 目标首页概览NS 配置文件简单配置文件
@@ -119,7 +94,6 @@
一般这些是一些一般的插件, 你可能会觉得有用。应用了哪些约束条件?
- 天约束条件闭环闭环
@@ -128,24 +102,18 @@
通过约束条件之后通过泵设置临时基础率上次制定
- 确定
- 取消APS没有被选择或者提供结果安全性插件已禁用违反约束条件大剂量输注错误
- 临时基础输注错误接受新的临时基础率治疗计算器应用约束!
- 确认
- 大剂量大剂量:基础率基础率:
- 碳水化合物更改您的输入!血糖来源AndroidAPS 从何处获取数据?
@@ -162,24 +130,6 @@
基础 IOB大剂量约束条件应用了碳水化合物约束条件应用了
- 指血检查
- 通告
- 备注
- 问题
- 运动
- 泵更换管路
- CGM 传感器插入
- CGM 传感器启动
- 更换储药器
- 零食大剂量
- 餐时大剂量
- 矫正大剂量
- Combo组合大剂量
- 临时基础率开始
- 临时基础率结束
- 碳水化合物校正
- OpenAPS 离线
- 事件类型其他血糖仪传感器
@@ -205,38 +155,15 @@
找不到文件导出配置导入配置
- 临时基础率可以设置的最大值 U/小时这个值在 OpenAPS被称为最大基础率OpenAPS通过基础率可以输注的IOB活性胰岛素的最大值[U]这个值在OpenAPS中被成为最大IOB\n这是APS单次可以输注的胰岛素的最大值[U]
- 忽略
- DanaR
- 正在连接
- 已连接
- 已断开连接最终用户许可协议不得用于制定医疗决定。在适用法律允许的范围内,对该程序不作任何保证。除非另有书面授权的版权所有者和/或其他方均按原样提供程序,不附带明示或暗示的任何形式的担保,包括但不限于对适销性和适用于特定用途的默示担保。对您的程序的质量和性能的完整风险。如果程序存在缺陷,您应承担所有必要维修,修理或更正的代价.我理解并同意保存
- 未找到蓝牙适配器
- 找不到所选设备
- 泵连接错误
- 泵 IOB
- 每日单位数
- 上次大剂量
- %1$.1f小时前
- 无效的输入数据
- 数值设定的不正确重新加载配置文件
- 查看配置文件
- 制定
- 评论
- 成功
- 百分比
- 绝对值
- 取消临时基础率SMS短信通讯器
- 正在等待结果允许的手机号码+XXXXXXXXXX;+YYYYYYYYYY要输注大剂量胰岛素%1$.2fU 回复如下代码 %2$s
@@ -245,52 +172,13 @@
已经成功输注大剂量%1$.2fU将要输注 %1$.2fU已经成功输注大剂量%1$.2fU
- 正在输注 %1$.2fU通过SMS短信允许远程命令
- 手指
- 传感器
- 手动DanaR 配置文件设置DIA [h]胰岛素活性持续时间
- 更新基础率配置文件失败
- 重新加载正在上传···
- 扩展大剂量
- DS bolus
- DE bolus
- 错误
- 充盈
- 基础率 小时
- 血糖
- 碳水化合物
- 报警
- 总计上传了%1$d个记录
- S bolus
- 报警
- 基础率 小时
- 大剂量
- 碳水化合物
- 每日胰岛素用量
- 错误
- 血糖
- 充盈
- 暂停
- 正在连接 %1$d s
- 泵密码
- 错误的泵密码
- 胰岛素泵忙碌中
- 已输注
- 已停止大剂量停止了正在停止大剂量
- 堵管
- 停止
- 停止键按下了
- 正在等待泵
- 将要输注 %1$.2fU
- 你达到了允许的极限
- 没有选定配置文件闭环已经被禁用闭环已经被启用闭环被禁用
@@ -327,20 +215,15 @@
饮食矫正手动操作
- AndroidAPS 启动了只上传到NS服务器 (禁用同步)只上传给NS服务器,对SGV没有影响除非选择了本地血糖来源,例如 xDrip. 对配置文件没有影响当选择NS-配置文件时.泵未初始化!
- 泵未初始化, 配置文件未设置!充盈请确保数量和输液器里的药量匹配其他
- 充盈标准数量的胰岛素按钮1按钮2按钮3
- mg/dl
- mmol/l目标范围:可视化范围在智能手表上的图表上的高值和低值标记
@@ -349,17 +232,7 @@
手表重新发送所有数据在手表上打开设置
- 泵错误
- 电池电量低
- 泵关机
- 泵电池被拆卸了
- DanaR 韩版基础率比值:
- 设定基础率配置文件失败
- 泵基础率配置文件更新了
- 禁用泵中的 EasyUI 模式
- 在泵上启用扩展大剂量
- 在泵上更改模式,从U/d 改为 U/h基础率值低于泵支持的最小值。配置文件没有设定血糖:上次血糖:
@@ -367,7 +240,6 @@
美敦力640g持续的的通知旧数据
- %1$d 分钟前%1$d分钟前本地配置文件OpenAPS AMA
@@ -382,47 +254,27 @@
很快吃饭低活动
- DanaR 统计
- 累积的每日胰岛素输注的总量
- 日输注总量指数加权
- 基础率
- 大剂量
- 日胰岛素总量
- 日期
- 比值
- # 天
- 权重
- 如果使用大剂量来充盈排气的话,活性胰岛素的量显示的可能不准确
- 旧数据请按 \"重新加载\"
- 基础率总量
- TBB * 2
- 正在初始化操作配置闭环本地OpenAPS本地配置文件
- 丹纳泵主页虚拟泵NS配置文件治疗
- 记录目标手表手机SMS标题名称缩写总是使用短时间的平均增量代替简单增量当数据来自没有过滤的源头时,例如 xDrip 偶尔出现噪音数据.
- 高级设置
- 型号: %1$02X 协议: %2$02X 代码: %3$02X配置文件默认值: 3 这是一个关键的 OpenAPS 安全阀值。这是限制你的闭环可以最大扩张3倍的日最大基础率。你可能不需要改变这个值 但你应该这个值的含义。日最大基础率的3倍,当前基础率的4倍,这是建议的安全阀值默认值: 4 这是另一个的关键 OpenAPS 安全阀值, 日最大基础率的3倍,当前基础率的4倍,这是建议的安全阀值。这意味着你的基础率, 无论你的泵上的最大基础率设置的多少,也 不能超过你的当前基础率的4倍。这是为了防止人们在了解该算法的工作原理之前进入危险的领域 。同样, 默认值为 4倍; 大多数人将永远不需要调整, 而是更有可能需要调整其他设置,默认值: 1.2 \n 这是 autosens 的安全阀值 对 autosens ( 很快autotune) 比率的高值设置最大增加20%% 最大限制, 这反过来决定了 autosens 可以调整的基础率的上限值, 可以调整的胰岛素敏感系数的下限值, 以及它可以设置血糖目标的下限值。默认值: 0.7 \n 这是autosens 的另一个安全阈值, 。这个值决定了 autosens 可以调整的基础率的下限值, 可以调整的胰岛素敏感系数的上限值, 以及它可以设置血糖目标的上限值。
- Autosens 也调整目标血糖缺省值:是\n 这是用来允许 autosens调整血糖目标,还有 ISF胰岛素敏感系数和基础率这些参数。默认值: 2 \n大剂量snooze是在输注餐时大剂量后开始生效的, 所以在你刚吃完饭的时候, 闭环不会因为你输注了大剂量而减少或停基础。这里的例子和缺省是 2; 因此, 3 小时的DIA(胰岛素持续作用时间) 意味着大剂量snooze将逐步在1. 5小时 (3 DIA/2) 后失效。默认值: 3.0 (AMA) 或者 8.0 (SMB)。这是默认的每5分钟碳水化合物吸收量。默认值为3毫克/dl/5 分钟。 当血糖的下降超过预期时, 或者不像预期的上升的那么多时,这个值就影响了活性碳水化合物的衰减速度, 以及在计算预测未来血糖时假设的碳水化合物吸收量,
@@ -435,18 +287,9 @@
校准值发送了,必须在xDrip开启允许通过其他app使用它的校准功能xDrip 没有收到校准泵暂停了
- 正在获取泵的状态
- 正在设定临时基础率
- 正在停止临时基础率
- 正在设定扩展大剂量
- 正在停止扩展大剂量
- 正在更新基础率
- 正在断开连接正在执行虚拟泵设置将状态上传到 NS
- 密码错误
- 接近每日胰岛素的极限值NSClientNSCIientURL网址:
@@ -470,7 +313,6 @@
显示详细 IOB在手表的表盘上分别显示大剂量IOB和基础IOB未成功-请检查手机
- 不可用病人年龄儿童青少年
@@ -501,8 +343,6 @@
超级大剂量Superbolus记录app启动事件到NS服务器正在退出应用程序以应用设置。
- DanaRv2
- 胰岛素你使用哪种类型的胰岛素?速效胰岛素诺和锐, 门冬, 优泌乐
@@ -515,9 +355,6 @@
储药器药量低于阈值[U] 严重警告IOB活性胰岛素COB活性碳水
- 固件
- 上次连接
- 蓝牙状态关于缺少 SMS 短信权限缺少手机状态权限
@@ -528,23 +365,12 @@
添加血糖线到状态线没有上传到NS服务器所有发送到 NS 的数据都将被丢弃。AAPS 已连接到 NS, 但 NS中没有进行任何更改
- 基础率步值
- 大剂量步值取消扩展大剂量传感器使用时间管路使用时间胰岛素使用时间
- 小时
- 无效的配置文件!!!泵电池使用时间
- 更换泵电池报警选项
- 紧急高
- 高
- 低
- 紧急低
- 陈旧数据
- 紧急陈旧数据陈旧数据阈值 [min]紧急陈旧数据阈值 [min]Autosens间隔的 [h]
@@ -561,7 +387,6 @@
食物吸收设置膳食最大吸收时间 [h]预计膳食中所有的碳水化合物被吸收的时间,以小时为单位
- 用百分比的形式显示扩展 %%探头AGE胰岛素AGE管路AGE
@@ -585,7 +410,6 @@
泵持续时间 [min]OpenAPS SMB
- SMB启用 UAM启用微型大剂量使用微型大剂量代替使用临时基础率,更快的干预
@@ -597,22 +421,7 @@
超速效 OrefDIA of %1$f 太短了,请使用 %2$f 代替激活配置文件
- 日期无效
- 等待泵配对
- 配对成功
- 配对超时
- 迄今未找到任何设备
- 储药器空了
- 血糖测量警报
- 剩余胰岛素数量
- 丹纳RS
- 丹纳泵
- 已选择的泵
- 配对新的泵
- 大剂量输注速度
- 将基础率步值设定为 0.01 U/小时
- 序列号百分比时间偏移默认的临时目标
@@ -622,31 +431,18 @@
运动临时目标持续时间短低目标
- 充盈
- 正在获取扩展大剂量状态
- 正在获取大剂量状态
- 正在获取临时基础率状态
- 正在获取泵设置
- 正在获取泵时间重复用从手表上控制设置临时目标并从手表中进行治疗操作。
- 连接超时食物克
- 分
- 小时]]>kJEn蛋白质脂肪]]>
- 正在等待大剂量输注结束。剩余时间 %1$d 秒。
- 正在处理事件
- 开始大剂量输注现在命令被执行了
- 泵驱动程序已更正泵无法连接血糖读数丢失对警报和通知使用系统通知音
@@ -656,21 +452,15 @@
泵无法连接的时间阈值[min]紧急报警信息
- 蓝牙
- 蓝牙看门狗
- 如果没有连接到泵,关闭手机的蓝牙一秒钟再自动打开。这在一些蓝牙堆栈僵死的手机上是有帮助的,Everyang App (补丁)将 数据血糖数据上传到 NS服务器血糖上传设置显示详细的增量增量再多显示一个小数位基础率的最大分钟数限制SMB微型大剂量到
- 不支持的泵固件将血糖数据发送到 xDrip +在 xDrip + 选择640g/Eversense 数据源NSClient 血糖
- 基础率值被泵支持的最小值: %1$s 替换了
- 基础率值被泵支持的最大值:%1$s 替换了血糖计算大剂量IOB (活性胰岛素) 计算基础率IOB (活性胰岛素) 计算
@@ -688,8 +478,6 @@
闭环模式启用了合理地设置最大 IOB所选的血糖值来源的血糖是可用的
- 基础率值与小时不一致:%1$s
- 无效的配置文件:%1$s正在调用泵上的大剂量输注程序刷新状态
@@ -737,9 +525,6 @@
启用带有临时目标的SMB当临时目标处于活动状态时启用 SMB (很快吃饭, 运动)启用具有高临时目标的 SMB
- 当临时目标处于活动状态(锻炼)时启用SMB
- 让临时基础率运行
- 静音胰岛素碳水按钮
@@ -767,7 +552,6 @@
不打大剂量,只记录类别子类别
- 大剂量将仅被记录Autobackfill 现在无法从NS获取血糖通过泵设置SMB微型大剂量活动
@@ -803,15 +587,10 @@
SMB微型大剂量在参数选项里被禁用了UAM 在参数选项中被禁用了UAM被禁用, 因为它依赖于 Oref1 敏感都插件
- 最大基础率被限定为 %1$.2f U/h 由于 %2$s
- 泵限制
- 它必须是正数最大基础率倍数最大日基础率倍数在最近3分钟内输注了大剂量,正在忽略SMB微型大剂量正确地设置基础率
- 由于 %2$s, 将最大百分比限制为 %1$d%%
- 由于 %2$s, 将大剂量限制为 %1$.1f U由于 %2$s, 将扩展大剂量限制为 %1$.1f U由于 %2$s, 将最大 IOB(活性胰岛素) 限制为 %1$.1f U由于 %2$s, 将碳水化合物限制为 %1$d 克
@@ -826,7 +605,6 @@
在开环模式下不允许使用SMB-微型大剂量食物重置
- 正在等待时间同步 (%1$d 秒)已断开连接 (%1$d 分)OpenAPS的IOB活性胰岛素总数的最大值不能超过[U]该值在OpenAPS中称为最大 IOB\n如果当前IOB大于此值,则OpenAPS不会输注更多胰岛素
@@ -842,7 +620,6 @@
设置向导完成选择你的语言
- 已请求: %1$.2fU 已输注: %2$.2fU 错误代码: %3$s第一胰岛素增量第二胰岛素增量第三胰岛素增量
@@ -865,7 +642,6 @@
虚拟泵类型泵定义大剂量: Step=%1$s\n扩展大剂量: [Step=%2$s, 持续时间=%3$smin-%4$sh]\n基础率: Step=%5$s\nTBR临时基础率: %6$s (by %7$s), 持续时间=%8$smin-%9$sh\n%10$s
- 仅支持离散值,不支持范围值Autobackfill 血糖向导设置包含在向导中的计算结果:
@@ -889,23 +665,9 @@
开始你的第一个目标权限请求权限
- 应用程序需要位置权限用于蓝牙扫描
- 应用程序需要存储权限才能存储日志文件请求配置胰岛素插件退出
- 用户选项
- 时间显示的格式
- 按钮滚动
- 按下按钮时发出提示音
- 报警
- 声音
- 振动
- 两者都
- 血糖单位
- 保存选项到泵上
- 开启
- 关闭打开导航栏关闭导航栏插件选项
@@ -921,8 +683,6 @@
泵设置的无效,检查文档并核实这个Quick Info 菜单被命名为 QUICK INFO,使用360 configuration 这个软件 自定义
- 手机和泵的时间相差很大
- 手机和泵的时间相差很大\n泵上的时间已经偏离1. 5小时\n请在泵上手动调整时间,并且确定可以顺利读取泵历史,没有出现意外的行为。\n如果可能的话,在更改泵时间之前从泵上删除历史。或者禁用闭环至少一个DIA的时间,也就是胰岛素作用时间。Clean AndroidAPS 启动了发现曾经保存过的设置注意:如果你激活并且连接到了一个硬件泵,AndroidAPS将会从配置文件复制基础率到泵上。覆盖泵上已有的基础率。请确定你已经在AndroidAPS上设置了正确的基础率。如果你不确定或者不想覆盖泵上的基础率设置,按取消键,以后再切换激活配置文件。
@@ -946,16 +706,9 @@
首选的APS模式总计计算
- 握手发送包括当前时间的今日的日志文件给开发者。描述一下意外情况
- 超出最大大剂量的限制
- 命令错误
- 速度错误
- 违反胰岛素限制最小请求更改[%]
- 请将您的泵与您的手机配对!正在搜索设备…
- 请稍等...配对已完成此设备和您的泵上显示的代码是否匹配?Insight 正在配对
@@ -1021,22 +774,10 @@
恢复持续时间握手时超时-重启蓝牙== ∑ %1$s U
- 克/U
- /U记录传感器更换至NS服务器在传感器启动时在 NS服务器 自动创建事件 \"传感器更改\"番茄(喵喵)番茄
- 秒
- 分钟
- 小时
- 天
- 周
- 秒
- 分钟
- 小时
- 天
- 周你的Tidepool登录用户名,通常是你的邮件地址登录用户名登录密码
@@ -1062,21 +803,18 @@
旧版本非常旧版本2小时
- %1$.2fU德康app(补丁版)DXCM从补丁版的德康APP收到血糖值
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml
index d11a14eefd..0d8f4134a1 100644
--- a/app/src/main/res/values/arrays.xml
+++ b/app/src/main/res/values/arrays.xml
@@ -22,6 +22,7 @@
+ @string/default_lang@string/en_lang@string/af_lang@string/bg_lang
@@ -45,6 +46,7 @@
@string/zh_lang
+ defaultenafbg
@@ -81,17 +83,6 @@
@string/key_resistantadult
-
- 12 s/U
- 30 s/U
- 60 s/U
-
-
- 0
- 1
- 2
-
-
@string/yes@string/no
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index de49a0aee5..45a362c5de 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -2,31 +2,19 @@
#ff00ff#00ffff
- #1e88e5#00d2d2#1ea3e5
- #1ea3e5
- #FFFB8C00
- #FFFB8C00
- #c9bd60
- #00d2d2#FFFFFF#d3f166#FFFFFF00#FFFF00FF
- #00FF00
- #FF0000
- #FFFF00#FFFF00
- #505050#FF33B5E5#FF0000#7484E2#2800FF00#C83F51B5
- #C803A9F4#757575
- #d8d8d8#ff1a1a#66FC0000#323232
@@ -40,9 +28,7 @@
#40bbaa
- #00695c
- #121212#779ECB#3e3d3d
@@ -61,7 +47,6 @@
#de7550#25912e
- #FF8C00#ff0400#ff5e55#ff827c
@@ -83,13 +68,6 @@
#2E2E2E
- #666666
- #ffffff
- #77dd77
- #ff0400
- #FF8C00
- #03A9F4
-
#77dd77#FF8C00#FF5555
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
index b650a33ce6..8542005550 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -1,8 +1,2 @@
-
- 16dp
- 16dp
- 30dp
- 16dp
- 8dp
diff --git a/app/src/main/res/values/exam.xml b/app/src/main/res/values/exam.xml
index 356f97a00f..49dc294fa1 100644
--- a/app/src/main/res/values/exam.xml
+++ b/app/src/main/res/values/exam.xml
@@ -1,7 +1,7 @@
What is true about DIA?
- Topic: Duration of Insulin Action
+ Topic: Duration of Insulin ActionThe minimum value is 3 hours.The minimum value is 5 hours.https://androidaps.readthedocs.io/en/latest/EN/Configuration/Config-Builder.html?#insulin
@@ -122,7 +122,7 @@
Loop app on iPhone.Spike app on iPhone.https://androidaps.readthedocs.io/en/latest/EN/Children/Children.html
- Topic: Insulin Sensitivity Factor
+ Topic: Insulin Sensitivity FactorHigher ISF values lead to less insulin delivery when AAPS corrects for high BG.Lower ISF values lead to less insulin delivery when AAPS corrects for high BG.Changing ISF values has no effect on the amount of insulin delivered when AAPS corrects for high BG.
@@ -130,7 +130,7 @@
Changing the ISF value in your profile is enough to apply the change.https://androidaps.readthedocs.io/en/latest/EN/Getting-Started/FAQ.html#insulin-sensitivity-factor-isf-mmol-l-u-or-mg-dl-uhttps://androidaps.readthedocs.io/en/latest/EN/Usage/Profiles.html
- Topic: The IC Ratio
+ Topic: The IC RatioHigher IC ratios lead to less insulin delivered for a given amount of carbs.Lower IC ratios lead to less insulin delivered for a given amount of carbs.If you have 0 COB, changing the IC ratio will lead to a different amount of insulin to correct a given BG value.
diff --git a/app/src/main/res/values/protection.xml b/app/src/main/res/values/protection.xml
index bb09c5ca9e..0b39654d2b 100644
--- a/app/src/main/res/values/protection.xml
+++ b/app/src/main/res/values/protection.xml
@@ -15,6 +15,8 @@
No protectionProtectionMaster password is not set!\n\nPlease set your Master password in Preferences (%1$s → %2$s)
+ Unsecure Fallback
+ In order to be effective, biometric protection needs a master password set for fallback.\n\nPlease set a master password!Password set!Password not set
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 4fca6c3b9c..d2e4d26274 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,4 +1,5 @@
+ System defaultEnglishCzechAfrikaans
@@ -34,14 +35,11 @@
Reset DatabasesDo you really want to reset the databases?Exit
- Use extended boluses for >200%%
- DanaR Bluetooth deviceAlways use basal absolute valuesPlease 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)!This device does not appear to support battery optimization whitelisting - you may experience performance issues.Some buttons to quickly access common features
- Enter advanced log book entries.Used for configuring the active pluginsLearning programDisplays the food presets defined in Nightscout
@@ -59,10 +57,6 @@
Provides the profile you have defined in NightscoutDefine a profile with only one time block.Pump integration for Accu-Chek Combo pumps, requires having ruffy installed
- Pump integration for DANA Diabecare R pumps
- Pump integration for domestic DANA Diabecare R pumps
- Pump integration for DANA Diabecare R pumps with upgraded firmware
- Pump integration for DANA Diabecare RS pumpsPump integration for people who do multiple daily injections for their diabetes therapyPump integration for pumps which don\'t have any driver yet (Open Loop)Sensitivity is calculated the same way like Oref0, but you can specify timeframe to the past. Minimal carb absorption is calculated from max carb absorption time from preferences.
@@ -78,13 +72,6 @@
Show information about your loop on your xDrip+ watchface.Remote control AndroidAPS using SMS commands.
- Units
- DIA
- IC
- ISF
- Basal
- Target
- NO PROFILE SETInsulin:Carbs:IOB:
@@ -100,15 +87,9 @@
TTCarbsCorr
- UBolus IOBRun nowVIRTUAL PUMP
- Base basal rate
- Temp basal
- Extended bolus
- Battery
- ReservoirOKLast runInput parameters
@@ -120,17 +101,12 @@
ResultResult: %1$s %2$sNo glucose data available
- No change requestedRequest
- Rate
- Duration
- ReasonGlucoseDeltaDelta:Config Builder
- ObjectivesOverviewNS ProfileSimple profile
@@ -150,7 +126,6 @@
GeneralThese are some general plugins you might find useful.Which constraints are applied?
- daysConstraintsLoop
@@ -160,25 +135,19 @@
After processed constraintsTemp basal set by pumpLast enacted
- OK
- CancelNO APS SELECTED OR PROVIDED RESULTSafetyPlugin is disabledConstraints violationBolus delivery error
- Tempbasal delivery errorBasal value [%]Accept new temp basal:TreatmentCalculatorConstraint applied!
- Confirmation
- BolusBolus:BasalBasal:
- CarbsChange your input!BG SourceWhere should AndroidAPS gain it\'s data from?
@@ -193,31 +162,13 @@
Enable loopNew suggestion available
+ Carbs SuggestionUnsupported version of NightscoutLOOP DISABLED BY CONSTRAINTSBasal IOBBolus constraint appliedCarbs constraint applied
- BG Check
- Announcement
- Note
- Question
- Exercise
- Pump Site Change
- CGM Sensor Insert
- CGM Sensor Start
- Insulin Cartridge Change
- Profile switch
- Snack Bolus
- Meal Bolus
- Correction Bolus
- Combo Bolus
- Temp Basal Start
- Temp Basal End
- Carbs correction
- OpenAPS Offline
- Event typeOtherMeterSensor
@@ -245,7 +196,7 @@
File not foundExport settingsImport settings
- Max U/hr a Temp Basal can be set to
+ Max U/h a Temp Basal can be set toThis value is called max basal in OpenAPS contextMaximum basal IOB OpenAPS can deliver [U]This value is called Max IOB in OpenAPS context\nThis is maximal insulin in [U] APS can deliver at once.
@@ -255,6 +206,8 @@
You will be asked for master password, which is needed to decrypt imported preferences.Export canceled! Preferences were NOT exported!Import canceled! Preferences were NOT imported!
+ Cannot import preferences!
+ Please go back to main screen and try again.Select file to import
@@ -306,34 +259,12 @@
exported less than hour agoin directory: %1$s
- DanaR
- Connecting
- Connected
- Disconnected
- Dana pump settingsEnd User License AgreementMUST NOT BE USED TO MAKE MEDICAL DECISIONS. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.I UNDERSTAND AND AGREESave
- No bluetooth adapter found
- Selected device not found
- Pump connection error
- Pump IOB
- Daily units
- Last bolus
- %1$.1fh ago
- Invalid input data
- Value not set properlyReload profile
- View profile
- Enacted
- Comment
- Success
- Percent
- Absolute
- Cancel temp basalSMS Communicator
- Waiting for resultAllowed phone numbers+XXXXXXXXXX;+YYYYYYYYYYTo deliver bolus %1$.2fU reply with code %2$s
@@ -355,60 +286,24 @@
Target %1$s for %2$d minutesTarget %1$s for %2$d minutes set successfullyTemp Target canceled successfully
- Delivering %1$.2fUAllow remote commands via SMS
- Finger
- Sensor
- Manual
- Temporary target
- Temporary target cancelDanaR profile settingsDIA [h]Duration of Insulin Activity
- Failed to update basal profile
- ReloadUploading
- E bolus
- DS bolus
- DE bolus
- error
- refill
- basal hour
- glucose
- carbohydrate
- alarm
- Total %1$d records uploaded
- S bolus
- Alarms
- Basal Hours
- Boluses
- Carbohydrates
- Daily insulin
- Errors
- Glucose
- Refill
- Suspend
- Connecting for %1$d s
- Pump password
- Wrong pump password!
- Pump is busy
- Delivered
- StoppedBolus stoppedStopping bolus
- Occlusion
- Stop
- STOP PRESSED
- Waiting for pump
- Going to deliver %1$.2fU
- You reached allowed limit
- No profile selectedLoop has been disabledLoop has been enabledLoop is disabledLoop is enabled%1$.2f limited to %2$.2fValue %1$s is out of hard limits
+ To connect pump reply with code %1$s
+ Connection to pump failed
+ To disconnect pump for %1d minutes reply with code %2$s
+ Pump disconnected
+ Pump reconnectedRemote command is not allowedRemote bolus not available. Try again later.To start basal %1$.2fU/h for %2$d min reply with code %3$s
@@ -417,6 +312,9 @@
To enter %1$dg at %2$s reply with code %3$sTo start basal %1$d%% for %2$d min reply with code %3$sTo suspend loop for %1$d minutes reply with code %2$s
+ To resume loop reply with code %1$s
+ To enable loop reply with code %1$s
+ To disable loop reply with code %1$sTemp basal %1$.2fU/h for %2$d min started successfullyExtended bolus %1$.2fU for %2$d min started successfullyCarbs %1$dg entered successfully
@@ -443,22 +341,18 @@
MealCorrActions
- AndroidAPS startedNS upload only (disabled sync)NS upload only. Not effective on SGV unless a local source like xDrip is selected. Not effective on Profiles while NS-Profiles is used.Pump not initialized!
- Pump not initialized, profile not set!Prime/FillPlease make sure the amount matches the specification of your infusion set!Other
- Fill/Prime standard insulin amounts.
+ Fill/Prime standard insulin amountsButton 1Button 2Button 3Units:Units
- mg/dl
- mmol/lDIATarget range:Range for Visualization
@@ -468,17 +362,7 @@
WearResend All DataOpen Settings on Wear
- Pump Error
- Low Battery
- Pump Shutdown
- Pump Battery Discharged
- DanaR KoreanBasal rate:
- Setting of basal profile failed
- Basal profile in pump updated
- Disable EasyUI mode in pump
- Enable extended boluses on pump
- Change mode from U/d to U/h on pumpBasal value below minimum. Profile not set!BG:Last BG:
@@ -486,7 +370,6 @@
MM640gOngoing NotificationOLD DATA
- %1$dm ago%1$dmin agoLocal ProfileOpenAPS AMA
@@ -502,42 +385,23 @@
HypoActivityRemove record
- DanaR Stats
- Cumulative TDD
- Exponentially Weighted TDD
- Basal
- Bolus
- TDD
- Date
- Ratio
- # Days
- Weight
- Possibly inaccurate if using boluses for priming/filling!
- Old Data Please Press "RELOAD"
- Total Base Basal
- TBB * 2
- Initializing ...ACTCONFLOOPSPOAPSLP
- DANAHOMEVPUMPNSPROFILETREAT
- CPOBJWEARSMSShorten tab titlesAlways use short average delta instead of simple deltaUseful when data from unfiltered sources like xDrip gets noisy.
- Advanced Settingskey_advancedsettings
- Model: %1$02X Protocol: %2$02X Code: %3$02XProfileDefault value: 3 This is a key OpenAPS safety cap. What this does is limit your basals to be 3x (in this people) your biggest basal rate. You likely will not need to change this, but you should be aware that’s what is discussed about “3x max daily; 4x current” for safety caps.Default value: 4 This is the other half of the key OpenAPS safety caps, and the other half of “3x max daily; 4x current” of the safety caps. This means your basal, regardless of max basal set on your pump, cannot be any higher than this number times the current level of your basal. This is to prevent people from getting into dangerous territory by setting excessively high max basals before understanding how the algorithm works. Again, the default is 4x; most people will never need to adjust this and are instead more likely to need to adjust other settings if they feel like they are “running into” this safety cap.
@@ -546,7 +410,7 @@
autosens_minDefault value: 0.7\nThe other side of the autosens safety limits, putting a cap on how low autosens can adjust basals, and how high it can adjust ISF and BG targets.autosens_adjust_targets
- Autosens adjust targets too
+ Autosens adjust targets, tooDefault value: true\nThis is used to allow autosens to adjust BG targets, in addition to ISF and basals.bolussnooze_dia_divisorDefault value: 2\nBolus snooze is enacted after you do a meal bolus, so the loop won’t counteract with low temps when you’ve just eaten. The example here and default is 2; so a 3 hour DIA means that bolus snooze will be gradually phased out over 1.5 hours (3DIA/2).
@@ -562,18 +426,9 @@
Calibration sent. Receiving must be enabled in xDrip.xDrip is not receiving calibrationsPump suspended
- Getting pump status
- Setting temp basal
- Stopping temp basal
- Setting extended bolus
- Stopping extended bolus
- Updating basal rates
- DisconnectingExecutingVirtual pump settingsUpload status to NS
- Wrong password
- Approaching insulin daily limitNSClientNSCIURL:
@@ -593,10 +448,6 @@
Pausednsclientinternal_urlnsclientinternal_api_secret
- danar_bt_name
- danar_password
- danar_useextended
- danar_visualizeextendedaspercentage"Clear lognsclientinternal_autoscrollnsclientinternal_paused
@@ -649,10 +500,7 @@
COBSuperbolusLog app start to NS
- ns_logappstartedeventExiting application to apply settings.
- DanaRv2
- InsulinWhich type of insulin are you using?Fast Acting InsulinNovorapid, Novolog, Humalog
@@ -687,11 +535,14 @@
Threshold warning battery level [%]statuslights_bat_criticalThreshold critical battery level [%]
+ PREDIOBCOB
- Firmware
- Last connection
- Bluetooth status
+ BAS
+ DEV
+ ACT
+ ABS
+ DEVSLOPEAboutMissing SMS permissionMissing phone state permission
@@ -704,32 +555,19 @@
All data sent to NS are dropped. AAPS is connected to NS but no change in NS is donens_upload_onlyns_noupload
- Basal Step
- Bolus StepCancel Extended BolusSensor ageCanula ageInsulin age
- hours
- Invalid profile !!!Do Profile SwitchPump battery age
- Pump Battery ChangeAlarm options
- nsalarm_urgent_high
- nsalarm_high
- nsalarm_low
- nsalarm_urgent_low
- nsalarm_staledata
- nsalarm_urgent_staledata
+ ns_announcements
+ ns_alarmsnsalarm_staledatavaluensalarm_urgent_staledatavalue
- Urgent high
- High
- Low
- Urgent low
- Stale data
- Urgent stale data
+ Create notifications from NS alarms
+ Create notifications from NS announcementsStale data threshold [min]Urgent stale data threshold [min]Interval for autosens [h]
@@ -746,13 +584,10 @@
Sensitivity Oref1Sensitivity AAPSAbsorption settings
- absorption_maxtime
- absorption_cutoffMeal max absorption time [h]Time in hours where is expected all carbs from meal will be absorbedrangetodisplay
- Visualize extended bolus as %%SAGEIAGECAGE
@@ -779,9 +614,9 @@
PUMPDuration [min]OpenAPS SMB
- SMBuse_smbuse_uam
+ smb_enable_carbs_suggestions_thresholdEnable UAMEnable SMBUse Super Micro Boluses instead of temp basal for faster action
@@ -794,27 +629,7 @@
Ultra-Rapid OrefDIA of %1$f too short - using %2$f instead!Activate profile
- DateINVALID
- Waiting for pairing on pump
- Pairing OK
- Pairing timed out
- Pairing
- danars_pairing_key_
- danars_address
- danars_name
- No device found so far
- Empty reservoir
- Blood sugar measurement alert
- Remaining insulin level
- DanaRS
- Dana
- Selected pump
- Pair new pump
- Bolus speed
- danars_bolusspeed
- Set basal step to 0.01 U/h
- Serial numberwizard_include_cobwizard_include_trend_bgPercentage
@@ -826,57 +641,34 @@
activity targethypo durationhypo target
- eatingsoon_duration
- eatingsoon_target
- activity_duration
- activity_target
- hypo_duration
- hypo_target
- Prime
- Getting extended bolus status
- Getting bolus status
- Getting temporary basal status
- Getting pump settings
- Getting pump timereuseControls from WatchSet Temp-Targets and enter Treatments from the watch.
- Connection timed outFoodg
- m
- h
- d]]>kJEnPrFat]]>
- Waiting for bolus end. Remaining %1$d sec.
- Processing event
- Starting bolus deliveryCommand is executed right now
- Pump driver correctedPump unreachableMissed BG readingsraise_urgent_alarms_as_android_notificationUse system notifications for alerts and notificationsenable_pump_unreachable_alertenable_missed_bg_readings
+ enable_carbs_required_alert_localLocal alertsAlert if no BG data is receivedAlert if pump is unreachablePump unreachable threshold [min]
+ Alert if carbs are requiredpump_unreachable_thresholdmissed_bg_readings_thresholdUrgent AlarmINFO
- bt_watchdog
- bt_watchdog_last
- Bluetooth
- BT Watchdog
- Switches off the phone\'s bluetooth for one second if no connection to the pump is possible. This may help on some phones where the bluetooth stack freezes.Eversense App (patched)Upload BG data to NSdexcomg5_nsupload
@@ -890,15 +682,12 @@
UAM SMB max minutesMax minutes of basal to limit SMB to for UAMcarbsReqThreshold
- Carb suggestion threshold
- When Carbs are suggested, how many carbs will prompt a notification
- Unsupported pump firmware
+ Minimum Carbs Required For Suggestion
+ Minimum grams of carbs to display a carbs suggestion alert. Carbs suggestions below this number will not trigger a notification.Send BG data to xDrip+dexcomg5_xdripuploadIn xDrip+ select 640g/Eversense data sourceNSClient BG
- Basal value replaced by minimal supported value: %1$s
- Basal value replaced by maximum supported value: %1$sBG calculationBolus IOB calculationBasal IOB calculation
@@ -916,8 +705,6 @@
Closed mode enabledMaximal IOB set properlyBG available from selected source
- Basal values not aligned to hours: %1$s
- Invalid profile: %1$sProgramming pump for bolusingRefreshState
@@ -939,7 +726,6 @@
A bolus with the same amount was requested within the last two minutes. To prevent accidental double boluses and to guard against bugs this is disallowed.NowReading pump history
- Pump historySetting basal profilePump cartridge level is lowPump battery is low
@@ -958,14 +744,14 @@
Extended bolus delivery errorSightago
- %1$.2f h
- %1$d mins
- %1$dm
- enableSMB_always
+ enableSMB_alwaysenableSMB_with_COBenableSMB_with_temptargetenableSMB_after_carbsenableSMB_with_high_temptarget
+ set_neutral_temps
+ Set neutral temp basals
+ If enabled, it will cancel a temporary basal before the end of each hour. This method can help stop some pumps beeping/vibrating on the hour.Enable SMB alwaysEnable SMB always independently to boluses. Possible only with BG source with nice filtering of data like G5Enable SMB after carbs
@@ -975,9 +761,7 @@
Enable SMB with temp targetsEnable SMB when there is temp target active (eating soon, exercise)Enable SMB with high temp targets
- Enable SMB when there is high temp target active (exercise)
- Let temp basal run
- Mute
+ Enable SMB when there is high temp target active (exercise, above 100 mg/dl or 5.5 mmol/l)InsulinCarbsButtons
@@ -999,12 +783,18 @@
Amount of insulin to add when button is pressedCould not launch CGM application. Make sure it is installed.CGM
+ Ignore 5m
+ Ignore 15m
+ Ignore 30m
+ reqHistory browserNotify on SMBShow SMB on the watch like a standard bolus.
- ns_create_announcements_from_errorsCreate announcements from errors
+ Create announcements from carbs required alertsCreate Nightscout announcement for error dialogs and local alerts (also viewable in Careportal under Treatments)
+ Create Nightscout announcements for carbs required alerts
+ ns_create_announcements_from_carbs_reqEVRShow the predictions on the watchface.Predictions
@@ -1019,7 +809,7 @@
Do not bolus, record onlyCategorySubcategory
- Bolus will be recorded only
+ Bolus will be recorded only (not delivered by pump)Autobackfill missig BGs from NSns_autobackfillSMB set by pump
@@ -1035,7 +825,6 @@
fromNSAreCommingFakedExtendedBolusesEngineering mode enabledEngineering mode not enabled and not on release branch
- %1$.2fU/hReading basal profileThe pump history has changed after the bolus calculation was performed. The bolus was not delivered. Please recalculate if a bolus is still needed.Bolus successfully delivered, but adding the treatment entry failed. This can happen if two small boluses of the same size are administered within the last two minutes. Please check the pump history and treatment entries and use the Careportal to add missing entries. Make sure not to add any entries for the exact same minute and same amount.
@@ -1058,20 +847,15 @@
SMB disabled in preferencesUAM disabled in preferencesUAM disabled because it rely on Oref1 sensitivity plugin
- Limiting max basal rate to %1$.2f U/h because of %2$s
- pump limitopenapsma_max_basalopenapsama_current_basal_safety_multiplieropenapsama_max_daily_safety_multiplier
- it must be positive valuemax basal multipliermax daily basal multiplieropenapsma_max_iobA bolus was delivered within the last 3 minutes, skipping SMBBasal set correctly
- Limiting max percent rate to %1$d%% because of %2$streatmentssafety_maxbolus
- Limiting bolus to %1$.1f U because of %2$sLimiting extended bolus to %1$.1f U because of %2$sLimiting max IOB to %1$.1f U because of %2$sLimiting carbs to %1$d g because of %2$s
@@ -1089,7 +873,6 @@
FoodIobCobCalculatorreset
- Waiting for time synchronization (%1$d sec)Disconnected (%1$d m)openapsmb_max_iobMaximum total IOB OpenAPS can\'t go over [U]
@@ -1108,8 +891,6 @@
Setup WizardFINISHSelect your language
- openapsama_min_5m_carbimpact
- Asked: %1$.2fU Delivered: %2$.2fU Error code: %3$sFirst insulin incrementSecond insulin incrementThird insulin increment
@@ -1138,7 +919,6 @@
Virtual Pump TypePump DefinitionBolus: Step=%1$s\nExtended Bolus: [Step=%2$s, Duration=%3$smin-%4$sh]\nBasal: Step=%5$s\nTBR: %6$s (by %7$s), Duration=%8$smin-%9$sh\n%10$s
- * Only discrete values no ranges are supported as granularity for basal/bolus in virtual pump.Autobackfill BGWizard Settingswearwizard_bg
@@ -1171,27 +951,11 @@
PermissionAsk for permissionApplication needs system window permission for notifications
- Application needs location permission for BT scan
- Application needs storage permission to be able store log files
+ Application needs location permission for BT scan and WiFi identification
+ Application needs storage permission to be able store log files and export settingsRequestConfigure Insulin pluginExit
- User options
- Display time format
- Button scroll
- Beep on button press
- Alarm
- Sound
- Vibrate
- Both
- LCD on time [seconds]
- Backlight on time [seconds]
- Glucose units
- Shutdown [hours]
- Low reservoir [Units]
- Save options to pump
- On
- OffOpen navigationClose navigationPlugin preferences
@@ -1215,8 +979,6 @@
When sensitivity is detected, raise the target glucoseInvalid pump setup, check the docs and verify that the Quick Info menu is named QUICK INFO using the 360 configuration software.Custom
- Large Time Difference
- Large time difference:\nTime in pump is off by more than 1.5 hours.\nPlease adjust the time manually on the pump and make sure that reading the history from the pump does not cause unexpected behaviour.\nIf possible, remove the history from the pump before changing the time or disable the closed loop for one DIA after the last wrong history entry but minimum one DIA from now.keep_screen_onClean AndroidAPS startedStored settings found
@@ -1249,19 +1011,11 @@
Preferred APS modeTotalCalc
- HandshakingSend today\'s log files to developers along with this time. Unexpected situation.
- Max bolus violation
- Command error
- Speed error
- Insulin limit violation
- loop_openmode_min_changeMinimal request change [%]Open Loop will popup new change request only if change is bigger than this value in %. Default value is 20%short_tabtitles
- Please pair your pump with your phone!Searching for devices…
- Please wait…Pairing completedDo the codes displayed on this device and on your pump match?Insight pairing
@@ -1281,6 +1035,12 @@
Log alertsEnable TBR emulationUse extended boluses instead of TBRs to bypass the 250%% limit
+ insight_disable_vibration
+ Disable vibrations on manual bolus delivery
+ For bolus and extended bolus (only available with Insight firmware 3.x)
+ insight_disable_vibration_auto
+ Disable vibrations on automated bolus delivery
+ For SMB and Temp Basal with TBR emulation (only available with Insight firmware 3.x)Disconnect delay [s]Serial numberRelease software version
@@ -1350,7 +1110,6 @@
is equal or greater thanis greater thanis not available
- unknownGlucose is not availableGlucose %1$s %2$.0f %3$sGlucose %1$s %2$.1f %3$s
@@ -1369,25 +1128,12 @@
Automation== ∑ %1$s U
- U/h
- g/U
- /Udexcom_lognssensorchangeLog sensor change to NSCreate event \"Sensor Change\" in NS automaticaly on sensor startTomato (MiaoMiao)Tomato
- second
- minute
- hour
- day
- week
- seconds
- minutes
- hours
- days
- weekstidepool_usernametidepool_passwordtidepool_dev_servers
@@ -1430,7 +1176,6 @@
Recurring timeEveryNever
- %1$dminsCondition:Action:IOB [U]:
@@ -1451,7 +1196,6 @@
very old versionNew version for at least %1$d days available! Fallback to LGS after %2$d days, loop will be disabled after %3$d days2h
- %1$.2fUDexcom App (patched)DXCM
@@ -1499,178 +1243,6 @@
REMOVEPreconditions:
-
-
- Operation not supported by pump and/or driver.
- Operation not YET supported by pump.
-
-
- Medtronic
- MDT
- Pump integration for Medtronic, requires RileyLink device and specific Pump Model
-
-
- pref_medtronic_serial
- pref_medtronic_pump_type
- pref_medtronic_frequency
- pref_medtronic_max_bolus
- pref_medtronic_max_basal
- pref_medtronic_bolus_delay
- pref_medtronic_encoding
- pref_medtronic_battery_type
- pref_medtronic_bolus_debug
- pref_rileylink_mac_address
- medtronic_pump_frequency_us_ca
- medtronic_pump_frequency_worldwide
- medtronic_pump_encoding_4b6b_local
- medtronic_pump_encoding_4b6b_rileylink
- medtronic_pump_battery_no
- medtronic_pump_battery_alkaline
- medtronic_pump_battery_lithium
- medtronic_pump_battery_nizn
- medtronic_pump_battery_nimh
-
- Pump Serial Number
- Pump Type
- Pump Frequency
- Delay before Bolus is started (s)
- Max Bolus on Pump (U)
- Max Basal on Pump (U/h)
- Medtronic Encoding
- US & Canada (916 MHz)
- Worldwide (868 Mhz)
- Software 4b6b Encoding
- Hardware 4b6b Encoding
- Wake and Tune Up
- Clear Bolus Block
- Reset RileyLink Config
- Battery Type (Power View)
- Not selected (Simple view)
- Alkaline (Extended view)
- Lithium (Extended view)
- NiZn (Extended view)
- NiMH (Extended view)
- Bolus/Treatments Debugging
-
-
- SCAN
- STOP
- Selected
- RileyLink Scan
- Enable
- No
- Scanning
- Scanning finished
- Scanning error: %1$d
- Never
-
-
- Settings
- History
- RileyLink Status
- Pump Status
- RileyLink Settings
- RileyLink
- Configured Address
- Connected Device
- Connection Status
- Connection Error
- Device
- Device Type
- Device Model
- Last used frequency
- Last device contact
- RL Firmware
-
-
-
- Bluetooth Initializing…
- Bluetooth Error
- Bluetooth Ready
- Not Started
- RileyLink Initialization…
- RileyLink Error
- Tuning up RileyLink and Pump
- Problem connecting to Pump
- Connected
-
-
- Device is not RileyLink
- RileyLink unreachable
- Bluetooth disabled
- No Bluetooth Adapter
- TuneUp Failed
- Pump unreachable
- Pod unreachable
- Not set
-
-
- Medtronic Pump
- Omnipod
-
-
-
- Warning
- Errors
- Serial # not set.
- Serial # invalid.
- Pump Type not set.
- Pump Type unsupported.
- Pump Frequency not set.
- Pump Frequency unsupported.
- RileyLink Address invalid.
- Pump type detected is not the same as configured type.
-
- Basal profiles/patterns setting is not enabled on pump. Enable it on the pump.
- Basal profile set on pump is incorrect (must be STD).
- Wrong TBR type set on pump (must be Absolute).
- Wrong Max Bolus set on Pump (must be %1$.2f).
- Wrong Max Basal set on Pump (must be %1$.2f).
- Operation is not possible.\n\n You need to configure Medtronic Pump first, before you can use this operation.
- Over 24h Time change was requested.
-
-
- Basals
- Configurations
- Notifications
- Statistics
- Unknowns
- All
- Medtronic Pump History
-
-
-
- Never contacted
- Waking up
- Error with communication
- Timeout on communication
- Pump unreachable
- Invalid configuration
- Active
- Sleeping
-
-
- You cancelled Bolus, after it was already set on Pump. Since Medtronic Pump doesn\'t support cancel, you will need to manually cancel it. Put the Pump into Suspend mode and then do Resume (if you still want to cancel). Application will pick up changes, on next update (in less than 5 minutes).
- Could not read current TBR.
- Could not cancel current TBR. Stopping operation.
- Profile set failed, because following patterns, have too big basal rate: %1$s
- Bolus could not be delivered.
- Bolus could not be delivered, because available insulin amount (%1$.2f) is less than bolus required (%2$.2f).
- TBR could not be set.
- Could not cancel current TBR.
- Basal profile could not be set.
- Basal profile is the same, so it will not be set again.
-
- Get History - Page %1$d (%2$d/16)
- Get History - Page %1$d
- Get Pump Time
- Get Settings
- Get Pump Model
- Get Basal Profile
- Set Basal Profile
- Get Temporary Basal
- Set Temporary Basal
- Set BolusChange profile toChange profile to %1$sLast connection to pump
@@ -1684,7 +1256,6 @@
%2$+.2fU]]>Bolus constraint applied: %2$.2fU to %3$.2fU]]>!!!!! Slow carbs absorption detected: %2$d%% of time. Double check your calculation. COB can be overestimated thus more insulin could be given !!!!!]]>
- %1$.0f / %2$d Uboluswizard_percentageDeliver this part of bolus wizard result [%]Bolus wizard performs calculation but only this part of calculated insulin is delivered. Useful with SMB algorithm.
@@ -1694,7 +1265,6 @@
Time is between %1$s and %2$sBetween
- CloseIncreasing max basal value because setting is lower than your max basal in profileInvalid message body%1$s ISF: %2$.1f
@@ -1706,7 +1276,6 @@
Profile name:Selected:Units
- unitsDo you want to switch profile and discard changes made to current profile?wizard_calculation_visible%1$dg
@@ -1714,15 +1283,11 @@
OffClear finishedClear started
- Time detectionDo you want reset objective start? You may lose your progress.Time and/or Timezone change on pumpNo pump selectedSelect units you want to display values in
- ns_uploadlocalprofileUpload local profile changes to NS
- low_mark
- high_markwear_detailediobwear_showbgiDIA
@@ -1732,14 +1297,14 @@
CloneSave or reset current changes firstDelete current profile?
- Create new local profile from this profile switch?
+ Create new local profile from this profile?Profile name contains dots.\nThis is not supported by NS.\nProfile is not uploaded to NS.Lower value of in range area (display only)Higher value of in range area (display only)ReorderAge:
- Weight:
+ Weight:ID:SubmitMost common profile:
@@ -1747,10 +1312,9 @@
SurveyInvalid age entryInvalid weight entry
- %1$s: ∑: %2$.2f Bol: %3$.2f Bas: %4$.2f]]>
+ Invalid % entry%1$s: Low: %2$02d%% In: %3$02d%% High: %4$02d%%]]>Average
- TDDTIRActivity monitorDo you want to reset activity stats?
@@ -1760,9 +1324,6 @@
BGToolsShow calcuation
- Error
- 12h
- 24hAutomation eventAlready setClear queue? All data in queue will be lost!
@@ -1830,12 +1391,24 @@
statuslights_copy_nsCopy NS settings (if exists)?statuslights_overview_advanced
- Original skin
- Buttons are always displayed on bottom of screen
+ Original skin
+ Buttons are always displayed on bottom of screen
+ Large displayskinSkin
+
+ Never contacted
+ Waking up
+ Error with communication
+ Timeout on communication
+ Pump unreachable
+ Invalid configuration
+ Active
+ Sleeping
+
+
@@ -1865,6 +1438,7 @@
Over 50 UPod AddressPod Expires
+ WarningNo Pod connectedPod setup in progress (Pod progress status: %1$s)Pod not initialized
@@ -1977,7 +1551,7 @@
Pump integration for Omnipod Dash.Finish pairing reminderFinish setup reminder
- Pod wil expire soon
+ Pod will expire soonPod will expire soonShutdown is imminentLow reservoir
@@ -1993,4 +1567,16 @@
PM / PI versionErrors
+ Compare profiles
+ Profile helper
+ Default profile
+ Current profile
+ Available profile
+ Profile type
+ Age: %1$.0f TDD: %2$.0f U
+ Age: %1$.0f TDD: %2$.0f U %3$d%%
+ Age: %1$.0f Weight: %2$.0f kg
+ % of basal
+ DPV Default profile
+
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 747db85115..29f4ef5bc7 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -16,14 +16,6 @@
@color/dialog_title_icon_tint
-
-
-
-
-
+
diff --git a/app/src/main/res/xml/pref_alerts.xml b/app/src/main/res/xml/pref_alerts.xml
index 1a81cefc66..a7783f7954 100644
--- a/app/src/main/res/xml/pref_alerts.xml
+++ b/app/src/main/res/xml/pref_alerts.xml
@@ -27,6 +27,11 @@
android:key="@string/key_enable_pump_unreachable_alert"
android:title="@string/enable_pump_unreachable_alert" />
+
+
+
+
+
+
+
+
+ android:key="@string/key_ns_alarms"
+ android:title="@string/ns_alarms" />
-
-
-
-
-
-
+ android:key="@string/key_ns_announcements"
+ android:title="@string/ns_announcements" />
-
-
+
+
@@ -38,20 +38,6 @@
android:summary="@string/enablesmb_summary"
android:title="@string/enablesmb" />
-
-
-
-
+
+
+
+
-
+
1U/hr
- val basal120 = DanaRS_Packet.byteArrayToInt(DanaRS_Packet.getBytes(createArray(50, 120.toByte()), 2, 2)) / 100.0
+ val basal120 = DanaRS_Packet.byteArrayToInt(DanaRS_Packet(packetInjector).getBytes(createArray(50, 120.toByte()), 2, 2)) / 100.0
val params = testPacket.requestParams
assertEquals(1.toByte(), params[0])
testPacket.handleMessage(createArray(50, 0.toByte()))
- assertEquals(0.0, danaRPump.pumpProfiles!![1][1], 0.0)
+ assertEquals(0.0, danaPump.pumpProfiles!![1][1], 0.0)
testPacket.handleMessage(createArray(50, 1.toByte()))
- assertEquals(basal01, danaRPump.pumpProfiles!![1][2], 0.0)
+ assertEquals(basal01, danaPump.pumpProfiles!![1][2], 0.0)
testPacket.handleMessage(createArray(50, 5.toByte()))
- assertEquals(basal05, danaRPump.pumpProfiles!![1][1], 0.0)
+ assertEquals(basal05, danaPump.pumpProfiles!![1][1], 0.0)
testPacket.handleMessage(createArray(50, 12.toByte()))
- assertEquals(basal12, danaRPump.pumpProfiles!![1][1], 0.0)
+ assertEquals(basal12, danaPump.pumpProfiles!![1][1], 0.0)
testPacket.handleMessage(createArray(50, 120.toByte()))
- assertEquals(basal120, danaRPump.pumpProfiles!![1][1], 0.0)
+ assertEquals(basal120, danaPump.pumpProfiles!![1][1], 0.0)
assertEquals("BASAL__GET_PROFILE_BASAL_RATE", testPacket.friendlyName)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Get_Profile_NumberTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Get_Profile_NumberTest.kt
similarity index 51%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Get_Profile_NumberTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Get_Profile_NumberTest.kt
index f8468573cd..8b430f9146 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Get_Profile_NumberTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Get_Profile_NumberTest.kt
@@ -1,5 +1,7 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -10,13 +12,22 @@ import org.powermock.modules.junit4.PowerMockRunner
@PrepareForTest()
class DanaRS_Packet_Basal_Get_Profile_NumberTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_Basal_Get_Profile_Number) {
+ it.aapsLogger = aapsLogger
+ it.danaPump = danaPump
+ }
+ }
+ }
+
@Test fun runTest() {
- val packet = DanaRS_Packet_Basal_Get_Profile_Number(aapsLogger, danaRPump)
+ val packet = DanaRS_Packet_Basal_Get_Profile_Number(packetInjector)
val array = ByteArray(100)
putByteToArray(array, 0, 1.toByte())
packet.handleMessage(array)
- Assert.assertEquals(1, danaRPump.activeProfile)
+ Assert.assertEquals(1, danaPump.activeProfile)
Assert.assertEquals("BASAL__GET_PROFILE_NUMBER", packet.friendlyName)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Get_Temporary_Basal_StateTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Get_Temporary_Basal_StateTest.kt
similarity index 55%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Get_Temporary_Basal_StateTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Get_Temporary_Basal_StateTest.kt
index f8e3472c8e..3ac8c367f1 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Get_Temporary_Basal_StateTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Get_Temporary_Basal_StateTest.kt
@@ -1,5 +1,7 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -10,8 +12,20 @@ import org.powermock.modules.junit4.PowerMockRunner
@PrepareForTest()
class DanaRS_Packet_Basal_Get_Temporary_Basal_StateTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet) {
+ it.aapsLogger = aapsLogger
+ it.dateUtil = dateUtil
+ }
+ if (it is DanaRS_Packet_Basal_Get_Temporary_Basal_State) {
+ it.danaPump = danaPump
+ }
+ }
+ }
+
@Test fun runTest() {
- val packet = DanaRS_Packet_Basal_Get_Temporary_Basal_State(aapsLogger, danaRPump)
+ val packet = DanaRS_Packet_Basal_Get_Temporary_Basal_State(packetInjector)
// test message decoding
val array = ByteArray(100)
putByteToArray(array, 0, 1.toByte())
@@ -21,9 +35,9 @@ class DanaRS_Packet_Basal_Get_Temporary_Basal_StateTest : DanaRSTestBase() {
putIntToArray(array, 4, 1)
packet.handleMessage(array)
Assert.assertTrue(packet.failed)
- Assert.assertTrue(danaRPump.isTempBasalInProgress)
- Assert.assertEquals(300, danaRPump.tempBasalPercent)
- Assert.assertEquals(15 * 60, danaRPump.tempBasalTotalSec)
+ Assert.assertTrue(danaPump.isTempBasalInProgress)
+ Assert.assertEquals(300, danaPump.tempBasalPercent)
+ Assert.assertEquals(15 * 60, danaPump.tempBasalTotalSec)
Assert.assertEquals("BASAL__TEMPORARY_BASAL_STATE", packet.friendlyName)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Basal_RateTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Basal_RateTest.kt
similarity index 68%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Basal_RateTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Basal_RateTest.kt
index d4e2b2de06..84450ababc 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Basal_RateTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Basal_RateTest.kt
@@ -1,5 +1,7 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -10,9 +12,17 @@ import org.powermock.modules.junit4.PowerMockRunner
@PrepareForTest()
class DanaRS_Packet_Basal_Set_Basal_RateTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_Basal_Set_Basal_Rate) {
+ it.aapsLogger = aapsLogger
+ }
+ }
+ }
+
@Test fun runTest() {
// test message decoding
- val packet = DanaRS_Packet_Basal_Set_Basal_Rate(aapsLogger, createArray(24, 5.0))
+ val packet = DanaRS_Packet_Basal_Set_Basal_Rate(packetInjector, createArray(24, 5.0))
val requested = packet.requestParams
var lookingFor = (5 * 100 and 0xff).toByte()
Assert.assertEquals(lookingFor, requested[24])
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Cancel_Temporary_BasalTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Cancel_Temporary_BasalTest.kt
similarity index 66%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Cancel_Temporary_BasalTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Cancel_Temporary_BasalTest.kt
index 4c127cf437..2cc549c533 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Cancel_Temporary_BasalTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Cancel_Temporary_BasalTest.kt
@@ -1,5 +1,7 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -10,8 +12,16 @@ import org.powermock.modules.junit4.PowerMockRunner
@PrepareForTest()
class DanaRS_Packet_Basal_Set_Cancel_Temporary_BasalTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_Basal_Set_Cancel_Temporary_Basal) {
+ it.aapsLogger = aapsLogger
+ }
+ }
+ }
+
@Test fun runTest() {
- val packet = DanaRS_Packet_Basal_Set_Cancel_Temporary_Basal(aapsLogger)
+ val packet = DanaRS_Packet_Basal_Set_Cancel_Temporary_Basal(packetInjector)
// test message decoding
packet.handleMessage(createArray(3, 0.toByte()))
Assert.assertEquals(false, packet.failed)
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Profile_Basal_RateTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Profile_Basal_RateTest.kt
similarity index 72%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Profile_Basal_RateTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Profile_Basal_RateTest.kt
index d2d918726f..fcf254887f 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Profile_Basal_RateTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Profile_Basal_RateTest.kt
@@ -1,5 +1,7 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -10,8 +12,16 @@ import org.powermock.modules.junit4.PowerMockRunner
@PrepareForTest()
class DanaRS_Packet_Basal_Set_Profile_Basal_RateTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_Basal_Set_Profile_Basal_Rate) {
+ it.aapsLogger = aapsLogger
+ }
+ }
+ }
+
@Test fun runTest() {
- val packet = DanaRS_Packet_Basal_Set_Profile_Basal_Rate(aapsLogger, 1, createArray(24, 1.0))
+ val packet = DanaRS_Packet_Basal_Set_Profile_Basal_Rate(packetInjector, 1, createArray(24, 1.0))
// test params
val testparams = packet.requestParams
// is profile 1
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Profile_NumberTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Profile_NumberTest.kt
similarity index 67%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Profile_NumberTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Profile_NumberTest.kt
index 8b15bf2863..2e7a720970 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Profile_NumberTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Profile_NumberTest.kt
@@ -1,5 +1,7 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -10,8 +12,16 @@ import org.powermock.modules.junit4.PowerMockRunner
@PrepareForTest()
class DanaRS_Packet_Basal_Set_Profile_NumberTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_Basal_Set_Profile_Number) {
+ it.aapsLogger = aapsLogger
+ }
+ }
+ }
+
@Test fun runTest() {
- val packet = DanaRS_Packet_Basal_Set_Profile_Number(aapsLogger, 1)
+ val packet = DanaRS_Packet_Basal_Set_Profile_Number(packetInjector, 1)
// test params
val testparams = packet.requestParams
// is profile 1
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Suspend_OffTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Suspend_OffTest.kt
similarity index 63%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Suspend_OffTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Suspend_OffTest.kt
index aa6d5832ad..24abfb3538 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Suspend_OffTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Suspend_OffTest.kt
@@ -1,5 +1,7 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -10,8 +12,16 @@ import org.powermock.modules.junit4.PowerMockRunner
@PrepareForTest()
class DanaRS_Packet_Basal_Set_Suspend_OffTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_Basal_Set_Suspend_Off) {
+ it.aapsLogger = aapsLogger
+ }
+ }
+ }
+
@Test fun runTest() {
- val packet = DanaRS_Packet_Basal_Set_Suspend_Off(aapsLogger)
+ val packet = DanaRS_Packet_Basal_Set_Suspend_Off(packetInjector)
// test message decoding
packet.handleMessage(byteArrayOf(0.toByte(), 0.toByte(), 0.toByte()))
Assert.assertEquals(false, packet.failed)
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Suspend_OnTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Suspend_OnTest.kt
similarity index 63%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Suspend_OnTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Suspend_OnTest.kt
index cb12a85d1d..f0791ef578 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Suspend_OnTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Suspend_OnTest.kt
@@ -1,5 +1,7 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -10,8 +12,16 @@ import org.powermock.modules.junit4.PowerMockRunner
@PrepareForTest()
class DanaRS_Packet_Basal_Set_Suspend_OnTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_Basal_Set_Suspend_On) {
+ it.aapsLogger = aapsLogger
+ }
+ }
+ }
+
@Test fun runTest() {
- val packet = DanaRS_Packet_Basal_Set_Suspend_On(aapsLogger)
+ val packet = DanaRS_Packet_Basal_Set_Suspend_On(packetInjector)
// test message decoding
packet.handleMessage(byteArrayOf(0.toByte(), 0.toByte(), 0.toByte()))
Assert.assertEquals(false, packet.failed)
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Temporary_BasalTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Temporary_BasalTest.kt
similarity index 71%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Temporary_BasalTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Temporary_BasalTest.kt
index d15dff5c39..841f2b8a24 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Temporary_BasalTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Temporary_BasalTest.kt
@@ -1,17 +1,25 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
-import org.powermock.core.classloader.annotations.PrepareForTest
import org.powermock.modules.junit4.PowerMockRunner
@RunWith(PowerMockRunner::class)
-@PrepareForTest()
class DanaRS_Packet_Basal_Set_Temporary_BasalTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_Basal_Set_Temporary_Basal) {
+ it.aapsLogger = aapsLogger
+ }
+ }
+ }
+
@Test fun runTest() {
- val testPacket = DanaRS_Packet_Basal_Set_Temporary_Basal(aapsLogger, 50, 20)
+ val testPacket = DanaRS_Packet_Basal_Set_Temporary_Basal(packetInjector, 50, 20)
// params
val params = testPacket.requestParams
// is ratio 50
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Bolus_OptionTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Bolus_OptionTest.kt
similarity index 53%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Bolus_OptionTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Bolus_OptionTest.kt
index 1b83b1df86..b5de343b51 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Bolus_OptionTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Bolus_OptionTest.kt
@@ -1,5 +1,7 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import org.junit.Assert
import org.junit.Test
@@ -11,20 +13,31 @@ import org.powermock.modules.junit4.PowerMockRunner
@PrepareForTest(RxBusWrapper::class)
class DanaRS_Packet_Bolus_Get_Bolus_OptionTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_Bolus_Get_Bolus_Option) {
+ it.aapsLogger = aapsLogger
+ it.rxBus = rxBus
+ it.resourceHelper = resourceHelper
+ it.danaPump = danaPump
+ }
+ }
+ }
+
@Test fun runTest() {
- val packet = DanaRS_Packet_Bolus_Get_Bolus_Option(aapsLogger, rxBus, resourceHelper, danaRPump)
+ val packet = DanaRS_Packet_Bolus_Get_Bolus_Option(packetInjector)
// test message decoding
//if dataArray is 1 pump.isExtendedBolusEnabled should be true
packet.handleMessage(createArray(21, 1.toByte()))
Assert.assertEquals(false, packet.failed)
//Are options saved to pump
- Assert.assertEquals(false, !danaRPump.isExtendedBolusEnabled)
- Assert.assertEquals(1, danaRPump.bolusCalculationOption)
- Assert.assertEquals(1, danaRPump.missedBolusConfig)
+ Assert.assertEquals(false, !danaPump.isExtendedBolusEnabled)
+ Assert.assertEquals(1, danaPump.bolusCalculationOption)
+ Assert.assertEquals(1, danaPump.missedBolusConfig)
packet.handleMessage(createArray(21, 0.toByte()))
Assert.assertEquals(true, packet.failed)
//Are options saved to pump
- Assert.assertEquals(true, !danaRPump.isExtendedBolusEnabled)
+ Assert.assertEquals(true, !danaPump.isExtendedBolusEnabled)
Assert.assertEquals("BOLUS__GET_BOLUS_OPTION", packet.friendlyName)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_CIR_CF_ArrayTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_CIR_CF_ArrayTest.kt
similarity index 55%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_CIR_CF_ArrayTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_CIR_CF_ArrayTest.kt
index 19f9fc5fbd..04afc60cf6 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_CIR_CF_ArrayTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_CIR_CF_ArrayTest.kt
@@ -1,24 +1,33 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.dana.DanaPump
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
-import org.powermock.core.classloader.annotations.PrepareForTest
import org.powermock.modules.junit4.PowerMockRunner
@RunWith(PowerMockRunner::class)
-@PrepareForTest()
class DanaRS_Packet_Bolus_Get_CIR_CF_ArrayTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_Bolus_Get_CIR_CF_Array) {
+ it.aapsLogger = aapsLogger
+ it.danaPump = danaPump
+ }
+ }
+ }
+
@Test fun runTest() {
- val packet = DanaRS_Packet_Bolus_Get_CIR_CF_Array(aapsLogger, danaRPump)
+ val packet = DanaRS_Packet_Bolus_Get_CIR_CF_Array(packetInjector)
// test params
Assert.assertEquals(null, packet.requestParams)
// test message decoding
packet.handleMessage(createArray(34, 0.toByte()))
// are pump units MG/DL ???
- Assert.assertEquals(DanaRPump.UNITS_MGDL, danaRPump.units)
+ Assert.assertEquals(DanaPump.UNITS_MGDL, danaPump.units)
Assert.assertEquals(false, packet.failed)
packet.handleMessage(createArray(34, 3.toByte()))
Assert.assertEquals(true, packet.failed)
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Calculation_InformationTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Calculation_InformationTest.kt
similarity index 66%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Calculation_InformationTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Calculation_InformationTest.kt
index 4a805821b1..1149a2fccf 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Calculation_InformationTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Calculation_InformationTest.kt
@@ -1,5 +1,7 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -10,8 +12,17 @@ import org.powermock.modules.junit4.PowerMockRunner
@PrepareForTest()
class DanaRS_Packet_Bolus_Get_Calculation_InformationTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_Bolus_Get_Calculation_Information) {
+ it.aapsLogger = aapsLogger
+ it.danaPump = danaPump
+ }
+ }
+ }
+
@Test fun runTest() {
- val packet = DanaRS_Packet_Bolus_Get_Calculation_Information(aapsLogger, danaRPump)
+ val packet = DanaRS_Packet_Bolus_Get_Calculation_Information(packetInjector)
Assert.assertEquals(null, packet.requestParams)
// test message decoding
packet.handleMessage(createArray(24, 0.toByte()))
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Carbohydrate_Calculation_InformationTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Carbohydrate_Calculation_InformationTest.kt
similarity index 65%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Carbohydrate_Calculation_InformationTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Carbohydrate_Calculation_InformationTest.kt
index b344cf3ade..fae26a11ae 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Carbohydrate_Calculation_InformationTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Carbohydrate_Calculation_InformationTest.kt
@@ -1,5 +1,7 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -10,8 +12,17 @@ import org.powermock.modules.junit4.PowerMockRunner
@PrepareForTest()
class DanaRS_Packet_Bolus_Get_Carbohydrate_Calculation_InformationTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_Bolus_Get_Carbohydrate_Calculation_Information) {
+ it.aapsLogger = aapsLogger
+ it.danaPump = danaPump
+ }
+ }
+ }
+
@Test fun runTest() {
- val packet = DanaRS_Packet_Bolus_Get_Carbohydrate_Calculation_Information(aapsLogger, danaRPump)
+ val packet = DanaRS_Packet_Bolus_Get_Carbohydrate_Calculation_Information(packetInjector)
Assert.assertEquals(null, packet.requestParams)
// test message decoding
packet.handleMessage(createArray(24, 0.toByte()))
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Dual_BolusTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Dual_BolusTest.kt
similarity index 53%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Dual_BolusTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Dual_BolusTest.kt
index 315ac6f045..3af180017f 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Dual_BolusTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Dual_BolusTest.kt
@@ -1,17 +1,26 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
-import org.powermock.core.classloader.annotations.PrepareForTest
import org.powermock.modules.junit4.PowerMockRunner
@RunWith(PowerMockRunner::class)
-@PrepareForTest()
class DanaRS_Packet_Bolus_Get_Dual_BolusTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_Bolus_Get_Dual_Bolus) {
+ it.aapsLogger = aapsLogger
+ it.danaPump = danaPump
+ }
+ }
+ }
+
@Test fun runTest() {
- val packet = DanaRS_Packet_Bolus_Get_Dual_Bolus(aapsLogger, danaRPump)
+ val packet = DanaRS_Packet_Bolus_Get_Dual_Bolus(packetInjector)
// test params
Assert.assertEquals(null, packet.requestParams)
@@ -22,9 +31,9 @@ class DanaRS_Packet_Bolus_Get_Dual_BolusTest : DanaRSTestBase() {
putIntToArray(array, 5, (40.0 * 100).toInt())
packet.handleMessage(array)
Assert.assertTrue(packet.failed)
- Assert.assertEquals(1.0, danaRPump.bolusStep, 0.0)
- Assert.assertEquals(0.55, danaRPump.extendedBolusAbsoluteRate, 0.0)
- Assert.assertEquals(40.0, danaRPump.maxBolus, 0.0)
+ Assert.assertEquals(1.0, danaPump.bolusStep, 0.0)
+ Assert.assertEquals(0.55, danaPump.extendedBolusAbsoluteRate, 0.0)
+ Assert.assertEquals(40.0, danaPump.maxBolus, 0.0)
Assert.assertEquals("BOLUS__GET_DUAL_BOLUS", packet.friendlyName)
}
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Extended_BolusTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Extended_BolusTest.kt
similarity index 62%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Extended_BolusTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Extended_BolusTest.kt
index a62d960cdc..5f89ad8a8e 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Extended_BolusTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Extended_BolusTest.kt
@@ -1,5 +1,7 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -10,8 +12,17 @@ import org.powermock.modules.junit4.PowerMockRunner
@PrepareForTest()
class DanaRS_Packet_Bolus_Get_Extended_BolusTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_Bolus_Get_Extended_Bolus) {
+ it.aapsLogger = aapsLogger
+ it.danaPump = danaPump
+ }
+ }
+ }
+
@Test fun runTest() {
- val packet = DanaRS_Packet_Bolus_Get_Extended_Bolus(aapsLogger, danaRPump)
+ val packet = DanaRS_Packet_Bolus_Get_Extended_Bolus(packetInjector)
// test params
Assert.assertEquals(null, packet.requestParams)
// test message decoding
@@ -21,7 +32,7 @@ class DanaRS_Packet_Bolus_Get_Extended_BolusTest : DanaRSTestBase() {
testValue = 1.0
packet.handleMessage(createArray(10, testValue.toByte()))
// is pump.bolustep set to 1
- Assert.assertEquals(testValue / 100.0, danaRPump.bolusStep, 0.0)
+ Assert.assertEquals(testValue / 100.0, danaPump.bolusStep, 0.0)
Assert.assertEquals(testValue != 0.0, packet.failed)
Assert.assertEquals("BOLUS__GET_EXTENDED_BOLUS", packet.friendlyName)
}
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Extended_Bolus_StateTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Extended_Bolus_StateTest.kt
similarity index 66%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Extended_Bolus_StateTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Extended_Bolus_StateTest.kt
index c950a2b8e7..093ccbfa0c 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Extended_Bolus_StateTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Extended_Bolus_StateTest.kt
@@ -1,5 +1,7 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -10,8 +12,17 @@ import org.powermock.modules.junit4.PowerMockRunner
@PrepareForTest()
class DanaRS_Packet_Bolus_Get_Extended_Bolus_StateTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_Bolus_Get_Extended_Bolus_State) {
+ it.aapsLogger = aapsLogger
+ it.danaPump = danaPump
+ }
+ }
+ }
+
@Test fun runTest() {
- val packet = DanaRS_Packet_Bolus_Get_Extended_Bolus_State(aapsLogger, danaRPump)
+ val packet = DanaRS_Packet_Bolus_Get_Extended_Bolus_State(packetInjector)
// test params
Assert.assertEquals(null, packet.requestParams)
// test message decoding
@@ -21,7 +32,7 @@ class DanaRS_Packet_Bolus_Get_Extended_Bolus_StateTest : DanaRSTestBase() {
testValue = 1.0
packet.handleMessage(createArray(11, testValue.toByte()))
// is extended bolus in progress
- Assert.assertEquals(testValue == 1.0, danaRPump.isExtendedInProgress)
+ Assert.assertEquals(testValue == 1.0, danaPump.isExtendedInProgress)
Assert.assertEquals(testValue != 0.0, packet.failed)
Assert.assertEquals("BOLUS__GET_EXTENDED_BOLUS_STATE", packet.friendlyName)
}
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Extended_Menu_Option_StateTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Extended_Menu_Option_StateTest.kt
similarity index 57%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Extended_Menu_Option_StateTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Extended_Menu_Option_StateTest.kt
index 4dab05c2cf..550273e68d 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Extended_Menu_Option_StateTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Extended_Menu_Option_StateTest.kt
@@ -1,25 +1,34 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
-import org.powermock.core.classloader.annotations.PrepareForTest
import org.powermock.modules.junit4.PowerMockRunner
@RunWith(PowerMockRunner::class)
-@PrepareForTest()
class DanaRS_Packet_Bolus_Get_Extended_Menu_Option_StateTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_Bolus_Get_Extended_Menu_Option_State) {
+ it.aapsLogger = aapsLogger
+ it.danaPump = danaPump
+ }
+ }
+ }
+
@Test fun runTest() {
- val packet = DanaRS_Packet_Bolus_Get_Extended_Menu_Option_State(aapsLogger, danaRPump)
+ val packet = DanaRS_Packet_Bolus_Get_Extended_Menu_Option_State(packetInjector)
Assert.assertEquals(null, packet.requestParams)
// test message decoding
packet.handleMessage(createArray(34, 0.toByte()))
// isExtendedinprogres should be false
- Assert.assertEquals(false, danaRPump.isExtendedInProgress)
+ Assert.assertEquals(false, danaPump.isExtendedInProgress)
// assertEquals(false, packet.failed);
packet.handleMessage(createArray(34, 1.toByte()))
- Assert.assertEquals(true, danaRPump.isExtendedInProgress)
+ Assert.assertEquals(true, danaPump.isExtendedInProgress)
Assert.assertEquals("BOLUS__GET_EXTENDED_MENU_OPTION_STATE", packet.friendlyName)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Initial_BolusTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Initial_BolusTest.kt
similarity index 62%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Initial_BolusTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Initial_BolusTest.kt
index c9f2529bb7..0bd7db33a3 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Initial_BolusTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Initial_BolusTest.kt
@@ -1,17 +1,25 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
-import org.powermock.core.classloader.annotations.PrepareForTest
import org.powermock.modules.junit4.PowerMockRunner
@RunWith(PowerMockRunner::class)
-@PrepareForTest()
class DanaRS_Packet_Bolus_Get_Initial_BolusTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_Bolus_Get_Initial_Bolus) {
+ it.aapsLogger = aapsLogger
+ }
+ }
+ }
+
@Test fun runTest() {
- val packet = DanaRS_Packet_Bolus_Get_Initial_Bolus(aapsLogger)
+ val packet = DanaRS_Packet_Bolus_Get_Initial_Bolus(packetInjector)
Assert.assertEquals(null, packet.requestParams)
// test message decoding
packet.handleMessage(createArray(34, 0.toByte()))
diff --git a/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Step_Bolus_InformationTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Step_Bolus_InformationTest.kt
new file mode 100644
index 0000000000..66df970476
--- /dev/null
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Step_Bolus_InformationTest.kt
@@ -0,0 +1,52 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
+import org.junit.Assert
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.powermock.core.classloader.annotations.PrepareForTest
+import org.powermock.modules.junit4.PowerMockRunner
+import java.util.*
+
+@RunWith(PowerMockRunner::class)
+@PrepareForTest()
+class DanaRS_Packet_Bolus_Get_Step_Bolus_InformationTest : DanaRSTestBase() {
+
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet) {
+ it.aapsLogger = aapsLogger
+ it.dateUtil = dateUtil
+ }
+ if (it is DanaRS_Packet_Bolus_Get_Step_Bolus_Information) {
+ it.danaPump = danaPump
+ }
+ }
+ }
+
+ @Test fun runTest() {
+ val packet = DanaRS_Packet_Bolus_Get_Step_Bolus_Information(packetInjector)
+
+ val array = createArray(13, 0.toByte()) // 11 + 2
+ putByteToArray(array, 0, 2) // error 2
+ putByteToArray(array, 1, 3) // bolus type 3
+ putIntToArray(array, 2, 600) // initial bolus amount 6
+ putByteToArray(array, 4, 13) // 13h
+ putByteToArray(array, 5, 20) // 20min
+ putIntToArray(array, 6, 1250) // last bolus amount 12.5
+ putIntToArray(array, 8, 2500) // max bolus 25
+ putByteToArray(array, 10, 100) // bolus step 1
+
+ packet.handleMessage(array)
+ Assert.assertTrue(packet.failed)
+ Assert.assertEquals(6.0, danaPump.initialBolusAmount, 0.01)
+ val lastBolus = Date(danaPump.lastBolusTime)
+ Assert.assertEquals(13, lastBolus.hours)
+ Assert.assertEquals(20, lastBolus.minutes)
+ Assert.assertEquals(12.5, danaPump.lastBolusAmount, 0.01)
+ Assert.assertEquals(25.0, danaPump.maxBolus, 0.01)
+ Assert.assertEquals(1.0, danaPump.bolusStep, 0.01)
+ Assert.assertEquals("BOLUS__GET_STEP_BOLUS_INFORMATION", packet.friendlyName)
+ }
+}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Bolus_OptionTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Bolus_OptionTest.kt
similarity index 68%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Bolus_OptionTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Bolus_OptionTest.kt
index b79f14552b..7fa66dbe43 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Bolus_OptionTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Bolus_OptionTest.kt
@@ -1,17 +1,25 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
-import org.powermock.core.classloader.annotations.PrepareForTest
import org.powermock.modules.junit4.PowerMockRunner
@RunWith(PowerMockRunner::class)
-@PrepareForTest()
class DanaRS_Packet_Bolus_Set_Bolus_OptionTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_Bolus_Set_Bolus_Option) {
+ it.aapsLogger = aapsLogger
+ }
+ }
+ }
+
@Test fun runTest() {
- val packet = DanaRS_Packet_Bolus_Set_Bolus_Option(aapsLogger, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
+ val packet = DanaRS_Packet_Bolus_Set_Bolus_Option(packetInjector, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
// test params
val testparams = packet.requestParams
Assert.assertEquals(0.toByte(), testparams[0])
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_CIR_CF_ArrayTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_CIR_CF_ArrayTest.kt
similarity index 68%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_CIR_CF_ArrayTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_CIR_CF_ArrayTest.kt
index df29bd2439..925dd1731b 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_CIR_CF_ArrayTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_CIR_CF_ArrayTest.kt
@@ -1,17 +1,25 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
-import org.powermock.core.classloader.annotations.PrepareForTest
import org.powermock.modules.junit4.PowerMockRunner
@RunWith(PowerMockRunner::class)
-@PrepareForTest()
class DanaRS_Packet_Bolus_Set_CIR_CF_ArrayTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_Bolus_Set_CIR_CF_Array) {
+ it.aapsLogger = aapsLogger
+ }
+ }
+ }
+
@Test fun runTest() {
- val packet = DanaRS_Packet_Bolus_Set_CIR_CF_Array(aapsLogger, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
+ val packet = DanaRS_Packet_Bolus_Set_CIR_CF_Array(packetInjector, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
// test params
val testparams = packet.requestParams
Assert.assertEquals(0.toByte(), testparams[0])
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Dual_BolusTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Dual_BolusTest.kt
similarity index 70%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Dual_BolusTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Dual_BolusTest.kt
index 0e60b237d7..5ae468084e 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Dual_BolusTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Dual_BolusTest.kt
@@ -1,17 +1,25 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
-import org.powermock.core.classloader.annotations.PrepareForTest
import org.powermock.modules.junit4.PowerMockRunner
@RunWith(PowerMockRunner::class)
-@PrepareForTest()
class DanaRS_Packet_Bolus_Set_Dual_BolusTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_Bolus_Set_Dual_Bolus) {
+ it.aapsLogger = aapsLogger
+ }
+ }
+ }
+
@Test fun runTest() {
- val packet = DanaRS_Packet_Bolus_Set_Dual_Bolus(aapsLogger, 0.0, 0.0, 1)
+ val packet = DanaRS_Packet_Bolus_Set_Dual_Bolus(packetInjector, 0.0, 0.0, 1)
// test params
val testparams = packet.requestParams
Assert.assertEquals(0.toByte(), testparams[0])
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Extended_BolusTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Extended_BolusTest.kt
similarity index 70%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Extended_BolusTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Extended_BolusTest.kt
index 173a87b423..aa3eb950d6 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Extended_BolusTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Extended_BolusTest.kt
@@ -1,17 +1,25 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
-import org.powermock.core.classloader.annotations.PrepareForTest
import org.powermock.modules.junit4.PowerMockRunner
@RunWith(PowerMockRunner::class)
-@PrepareForTest()
class DanaRS_Packet_Bolus_Set_Extended_BolusTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_Bolus_Set_Extended_Bolus) {
+ it.aapsLogger = aapsLogger
+ }
+ }
+ }
+
@Test fun runTest() {
- val packet = DanaRS_Packet_Bolus_Set_Extended_Bolus(aapsLogger, 1.0, 1)
+ val packet = DanaRS_Packet_Bolus_Set_Extended_Bolus(packetInjector, 1.0, 1)
// test params
val testparams = packet.requestParams
Assert.assertEquals(100.toByte(), testparams[0])
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Extended_Bolus_CancelTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Extended_Bolus_CancelTest.kt
similarity index 66%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Extended_Bolus_CancelTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Extended_Bolus_CancelTest.kt
index adf2ec11f2..3d836828d9 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Extended_Bolus_CancelTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Extended_Bolus_CancelTest.kt
@@ -1,17 +1,25 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
-import org.powermock.core.classloader.annotations.PrepareForTest
import org.powermock.modules.junit4.PowerMockRunner
@RunWith(PowerMockRunner::class)
-@PrepareForTest()
class DanaRS_Packet_Bolus_Set_Extended_Bolus_CancelTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_Bolus_Set_Extended_Bolus_Cancel) {
+ it.aapsLogger = aapsLogger
+ }
+ }
+ }
+
@Test fun runTest() {
- val packet = DanaRS_Packet_Bolus_Set_Extended_Bolus_Cancel(aapsLogger)
+ val packet = DanaRS_Packet_Bolus_Set_Extended_Bolus_Cancel(packetInjector)
Assert.assertEquals(null, packet.requestParams)
// test message decoding
packet.handleMessage(createArray(34, 0.toByte()))
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Initial_BolusTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Initial_BolusTest.kt
similarity index 64%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Initial_BolusTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Initial_BolusTest.kt
index 29513ced1a..dee94531fc 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Initial_BolusTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Initial_BolusTest.kt
@@ -1,17 +1,25 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
-import org.powermock.core.classloader.annotations.PrepareForTest
import org.powermock.modules.junit4.PowerMockRunner
@RunWith(PowerMockRunner::class)
-@PrepareForTest()
class DanaRS_Packet_Bolus_Set_Initial_BolusTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_Bolus_Set_Initial_Bolus) {
+ it.aapsLogger = aapsLogger
+ }
+ }
+ }
+
@Test fun runTest() {
- val packet = DanaRS_Packet_Bolus_Set_Initial_Bolus(aapsLogger, 0, 0, 0, 100)
+ val packet = DanaRS_Packet_Bolus_Set_Initial_Bolus(packetInjector, 0, 0, 0, 100)
// test params
val testparams = packet.requestParams
Assert.assertEquals(0.toByte(), testparams[0])
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Step_Bolus_StartTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Step_Bolus_StartTest.kt
similarity index 75%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Step_Bolus_StartTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Step_Bolus_StartTest.kt
index 6c1f96cdc7..0247ff9da5 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Step_Bolus_StartTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Step_Bolus_StartTest.kt
@@ -1,15 +1,14 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
import android.content.Context
import dagger.android.AndroidInjector
import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.Config
+import info.nightscout.androidaps.danars.DanaRSPlugin
import info.nightscout.androidaps.interfaces.CommandQueueProvider
import info.nightscout.androidaps.interfaces.Constraint
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
import info.nightscout.androidaps.plugins.pump.common.bolusInfo.DetailedBolusInfoStorage
-import info.nightscout.androidaps.plugins.pump.danaRS.DanaRSPlugin
-import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
import org.junit.Assert
import org.junit.Before
import org.junit.Test
@@ -30,8 +29,18 @@ class DanaRS_Packet_Bolus_Set_Step_Bolus_StartTest : DanaRSTestBase() {
private lateinit var danaRSPlugin: DanaRSPlugin
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_Bolus_Set_Step_Bolus_Start) {
+ it.aapsLogger = aapsLogger
+ it.danaPump = danaPump
+ it.constraintChecker = constraintChecker
+ }
+ }
+ }
+
@Test fun runTest() {
- val packet = DanaRS_Packet_Bolus_Set_Step_Bolus_Start(aapsLogger, danaRSPlugin, constraintChecker)
+ val packet = DanaRS_Packet_Bolus_Set_Step_Bolus_Start(packetInjector)
// test params
val testparams = packet.requestParams
Assert.assertEquals(0.toByte(), testparams[0])
@@ -46,7 +55,7 @@ class DanaRS_Packet_Bolus_Set_Step_Bolus_StartTest : DanaRSTestBase() {
@Before
fun mock() {
- danaRSPlugin = DanaRSPlugin(HasAndroidInjector { AndroidInjector { Unit } }, aapsLogger, rxBus, context, resourceHelper, constraintChecker, profileFunction, treatmentsPlugin, sp, commandQueue, danaRPump, detailedBolusInfoStorage)
+ danaRSPlugin = DanaRSPlugin(HasAndroidInjector { AndroidInjector { Unit } }, aapsLogger, rxBus, context, resourceHelper, constraintChecker, profileFunction, activePluginProvider, sp, commandQueue, danaPump, detailedBolusInfoStorage, fabricPrivacy, dateUtil)
Mockito.`when`(constraintChecker.applyBolusConstraints(anyObject())).thenReturn(Constraint(0.0))
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Step_Bolus_StopTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Step_Bolus_StopTest.kt
similarity index 72%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Step_Bolus_StopTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Step_Bolus_StopTest.kt
index ac5b33158b..b7a4238bd6 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Step_Bolus_StopTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Step_Bolus_StopTest.kt
@@ -1,13 +1,11 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
import dagger.android.AndroidInjector
import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.db.Treatment
import info.nightscout.androidaps.interfaces.ActivePluginProvider
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
-import info.nightscout.androidaps.plugins.pump.danaRS.DanaRSPlugin
-import info.nightscout.androidaps.plugins.treatments.Treatment
-import info.nightscout.androidaps.utils.DefaultValueHelper
+import info.nightscout.androidaps.danars.DanaRSPlugin
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -18,14 +16,19 @@ import org.powermock.core.classloader.annotations.PrepareForTest
import org.powermock.modules.junit4.PowerMockRunner
@RunWith(PowerMockRunner::class)
-@PrepareForTest(RxBusWrapper::class)
+@PrepareForTest(RxBusWrapper::class, DanaRSPlugin::class)
class DanaRS_Packet_Bolus_Set_Step_Bolus_StopTest : DanaRSTestBase() {
@Mock lateinit var activePlugin: ActivePluginProvider
- @Mock lateinit var danaRSPlugin: DanaRSPlugin
- private var treatmentInjector: HasAndroidInjector = HasAndroidInjector {
+ private val packetInjector = HasAndroidInjector {
AndroidInjector {
+ if (it is DanaRS_Packet_Bolus_Set_Step_Bolus_Stop) {
+ it.aapsLogger = aapsLogger
+ it.rxBus = rxBus
+ it.resourceHelper = resourceHelper
+ it.danaPump = danaPump
+ }
if (it is Treatment) {
it.defaultValueHelper = defaultValueHelper
it.resourceHelper = resourceHelper
@@ -38,8 +41,8 @@ class DanaRS_Packet_Bolus_Set_Step_Bolus_StopTest : DanaRSTestBase() {
@Test fun runTest() {
`when`(resourceHelper.gs(Mockito.anyInt())).thenReturn("SomeString")
- danaRSPlugin.bolusingTreatment = Treatment(treatmentInjector)
- val testPacket = DanaRS_Packet_Bolus_Set_Step_Bolus_Stop(aapsLogger, rxBus, resourceHelper, danaRSPlugin)
+ danaPump.bolusingTreatment = Treatment(packetInjector)
+ val testPacket = DanaRS_Packet_Bolus_Set_Step_Bolus_Stop(packetInjector)
// test message decoding
testPacket.handleMessage(byteArrayOf(0.toByte(), 0.toByte(), 0.toByte()))
Assert.assertEquals(false, testPacket.failed)
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Etc_Keep_ConnectionTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Etc_Keep_ConnectionTest.kt
similarity index 64%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Etc_Keep_ConnectionTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Etc_Keep_ConnectionTest.kt
index e1b90f30da..8316314b5e 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Etc_Keep_ConnectionTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Etc_Keep_ConnectionTest.kt
@@ -1,17 +1,25 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
-import org.powermock.core.classloader.annotations.PrepareForTest
import org.powermock.modules.junit4.PowerMockRunner
@RunWith(PowerMockRunner::class)
-@PrepareForTest()
class DanaRS_Packet_Etc_Keep_ConnectionTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_Etc_Keep_Connection) {
+ it.aapsLogger = aapsLogger
+ }
+ }
+ }
+
@Test fun runTest() {
- val packet = DanaRS_Packet_Etc_Keep_Connection(aapsLogger)
+ val packet = DanaRS_Packet_Etc_Keep_Connection(packetInjector)
Assert.assertEquals(null, packet.requestParams)
// test message decoding
packet.handleMessage(byteArrayOf(0.toByte(), 0.toByte(), 0.toByte()))
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Etc_Set_History_SaveTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Etc_Set_History_SaveTest.kt
similarity index 66%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Etc_Set_History_SaveTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Etc_Set_History_SaveTest.kt
index a089eafd9a..e69ff881fb 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Etc_Set_History_SaveTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Etc_Set_History_SaveTest.kt
@@ -1,5 +1,7 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -10,8 +12,16 @@ import org.powermock.modules.junit4.PowerMockRunner
@PrepareForTest()
class DanaRS_Packet_Etc_Set_History_SaveTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_Etc_Set_History_Save) {
+ it.aapsLogger = aapsLogger
+ }
+ }
+ }
+
@Test fun runTest() {
- val packet = DanaRS_Packet_Etc_Set_History_Save(aapsLogger, 0, 0, 0, 0, 0, 0, 0, 0, 2)
+ val packet = DanaRS_Packet_Etc_Set_History_Save(packetInjector, 0, 0, 0, 0, 0, 0, 0, 0, 2)
// test params
val testparams = packet.requestParams
Assert.assertEquals(2.toByte(), testparams[8])
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Delivery_StatusTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Delivery_StatusTest.kt
similarity index 63%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Delivery_StatusTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Delivery_StatusTest.kt
index fd32e3ca30..03f46ecb5b 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Delivery_StatusTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Delivery_StatusTest.kt
@@ -1,5 +1,7 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -10,8 +12,16 @@ import org.powermock.modules.junit4.PowerMockRunner
@PrepareForTest()
class DanaRS_Packet_General_Delivery_StatusTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_General_Delivery_Status) {
+ it.aapsLogger = aapsLogger
+ }
+ }
+ }
+
@Test fun runTest() {
- val packet = DanaRS_Packet_General_Delivery_Status(aapsLogger)
+ val packet = DanaRS_Packet_General_Delivery_Status(packetInjector)
Assert.assertEquals(null, packet.requestParams)
// test message decoding
packet.handleMessage(createArray(15, 0.toByte()))
diff --git a/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_More_InformationTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_More_InformationTest.kt
new file mode 100644
index 0000000000..61aa3e632c
--- /dev/null
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_More_InformationTest.kt
@@ -0,0 +1,55 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
+import org.junit.Assert
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.powermock.modules.junit4.PowerMockRunner
+import java.util.*
+
+@RunWith(PowerMockRunner::class)
+class DanaRS_Packet_General_Get_More_InformationTest : DanaRSTestBase() {
+
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet) {
+ it.aapsLogger = aapsLogger
+ it.dateUtil = dateUtil
+ }
+ if (it is DanaRS_Packet_General_Get_More_Information) {
+ it.danaPump = danaPump
+ }
+ }
+ }
+
+ @Test fun runTest() {
+ var packet = DanaRS_Packet_General_Get_More_Information(packetInjector)
+
+ packet.handleMessage(createArray(14, 0.toByte()))
+ Assert.assertTrue(packet.failed)
+
+ packet = DanaRS_Packet_General_Get_More_Information(packetInjector)
+ val array = createArray(15, 0.toByte()) // 13 + 2
+ putIntToArray(array, 0, 600) // iob 6
+ putIntToArray(array, 2, 1250) // daily units 12.5
+ putByteToArray(array, 4, 1) // is extended in progress
+ putIntToArray(array, 5, 150) // extended remaining minutes 150
+ putByteToArray(array, 9, 15) // hours 15
+ putByteToArray(array, 10, 25) // minutes 25
+ putIntToArray(array, 11, 170) // last bolus manout 1.70
+
+ packet.handleMessage(array)
+ Assert.assertFalse(packet.failed)
+ Assert.assertEquals(6.0, danaPump.iob, 0.01)
+ Assert.assertEquals(12.5, danaPump.dailyTotalUnits, 0.01)
+ Assert.assertTrue(danaPump.isExtendedInProgress)
+ Assert.assertEquals(150, danaPump.extendedBolusRemainingMinutes)
+ val lastBolus = Date(danaPump.lastBolusTime)
+ Assert.assertEquals(15, lastBolus.hours)
+ Assert.assertEquals(25, lastBolus.minutes)
+ Assert.assertEquals(1.7, danaPump.lastBolusAmount, 0.01)
+
+ Assert.assertEquals("REVIEW__GET_MORE_INFORMATION", packet.friendlyName)
+ }
+}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Get_PasswordTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_PasswordTest.kt
similarity index 56%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Get_PasswordTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_PasswordTest.kt
index 88f3ac3496..6968c7eff1 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Get_PasswordTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_PasswordTest.kt
@@ -1,23 +1,32 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
-import org.powermock.core.classloader.annotations.PrepareForTest
import org.powermock.modules.junit4.PowerMockRunner
@RunWith(PowerMockRunner::class)
-@PrepareForTest()
class DanaRS_Packet_General_Get_PasswordTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_General_Get_Password) {
+ it.aapsLogger = aapsLogger
+ it.danaPump = danaPump
+ }
+ }
+ }
+
@Test fun runTest() {
- var packet = DanaRS_Packet_General_Get_Password(aapsLogger, danaRPump)
+ var packet = DanaRS_Packet_General_Get_Password(packetInjector)
Assert.assertEquals(null, packet.requestParams)
// test message decoding
// test for the length message
packet.handleMessage(createArray(1, 0.toByte()))
Assert.assertEquals(true, packet.failed)
- packet = DanaRS_Packet_General_Get_Password(aapsLogger, danaRPump)
+ packet = DanaRS_Packet_General_Get_Password(packetInjector)
packet.handleMessage(createArray(15, 0.toByte()))
Assert.assertEquals(false, packet.failed)
Assert.assertEquals("REVIEW__GET_PASSWORD", packet.friendlyName)
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Get_Pump_CheckTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_Pump_CheckTest.kt
similarity index 58%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Get_Pump_CheckTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_Pump_CheckTest.kt
index 5248c2b699..5994d2d5d0 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Get_Pump_CheckTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_Pump_CheckTest.kt
@@ -1,5 +1,7 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import org.junit.Assert
import org.junit.Test
@@ -11,14 +13,25 @@ import org.powermock.modules.junit4.PowerMockRunner
@PrepareForTest(RxBusWrapper::class)
class DanaRS_Packet_General_Get_Pump_CheckTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_General_Get_Pump_Check) {
+ it.aapsLogger = aapsLogger
+ it.rxBus = rxBus
+ it.resourceHelper = resourceHelper
+ it.danaPump = danaPump
+ }
+ }
+ }
+
@Test fun runTest() {
- var packet = DanaRS_Packet_General_Get_Pump_Check(aapsLogger, danaRPump, rxBus, resourceHelper)
+ var packet = DanaRS_Packet_General_Get_Pump_Check(packetInjector)
Assert.assertEquals(null, packet.requestParams)
// test message decoding
// test for the length message
packet.handleMessage(createArray(1, 0.toByte()))
Assert.assertEquals(true, packet.failed)
- packet = DanaRS_Packet_General_Get_Pump_Check(aapsLogger, danaRPump, rxBus, resourceHelper)
+ packet = DanaRS_Packet_General_Get_Pump_Check(packetInjector)
packet.handleMessage(createArray(15, 0.toByte()))
Assert.assertEquals(false, packet.failed)
Assert.assertEquals("REVIEW__GET_PUMP_CHECK", packet.friendlyName)
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Get_Shipping_InformationTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_Shipping_InformationTest.kt
similarity index 59%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Get_Shipping_InformationTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_Shipping_InformationTest.kt
index 3de89db27b..21716b37c8 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Get_Shipping_InformationTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_Shipping_InformationTest.kt
@@ -1,5 +1,7 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -8,17 +10,27 @@ import org.powermock.modules.junit4.PowerMockRunner
@RunWith(PowerMockRunner::class)
class DanaRS_Packet_General_Get_Shipping_InformationTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet) {
+ it.aapsLogger = aapsLogger
+ it.dateUtil = dateUtil
+ }
+ if (it is DanaRS_Packet_General_Get_Shipping_Information) {
+ it.danaPump = danaPump
+ }
+ }
+ }
+
@Test fun runTest() {
- var packet = DanaRS_Packet_General_Get_Shipping_Information(aapsLogger, danaRPump)
+ var packet = DanaRS_Packet_General_Get_Shipping_Information(packetInjector)
Assert.assertEquals(null, packet.requestParams)
// test message decoding
// test for the length message
packet.handleMessage(createArray(1, 0.toByte()))
Assert.assertEquals(true, packet.failed)
// everything ok :)
- packet = DanaRS_Packet_General_Get_Shipping_Information(aapsLogger, danaRPump)
- packet.handleMessage(createArray(18, 0.toByte()))
- Assert.assertEquals(false, packet.failed)
+ packet = DanaRS_Packet_General_Get_Shipping_Information(packetInjector)
Assert.assertEquals("REVIEW__GET_SHIPPING_INFORMATION", packet.friendlyName)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_Shipping_VerisonTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_Shipping_VerisonTest.kt
new file mode 100644
index 0000000000..e66dea3dad
--- /dev/null
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_Shipping_VerisonTest.kt
@@ -0,0 +1,31 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
+import org.junit.Assert
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.powermock.modules.junit4.PowerMockRunner
+
+@RunWith(PowerMockRunner::class)
+class DanaRS_Packet_General_Get_Shipping_VerisonTest : DanaRSTestBase() {
+
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_General_Get_Shipping_Version) {
+ it.aapsLogger = aapsLogger
+ it.danaPump = danaPump
+ }
+ }
+ }
+
+ @Test fun runTest() {
+ val packet = DanaRS_Packet_General_Get_Shipping_Version(packetInjector)
+ // test message decoding
+ val ver = byteArrayOf((-78).toByte(), (-127).toByte(), (66).toByte(), (80).toByte(), (78).toByte(), (45).toByte(), (51).toByte(), (46).toByte(), (48).toByte(), (46).toByte(), (48).toByte())
+ packet.handleMessage(ver)
+ Assert.assertFalse(packet.failed)
+ Assert.assertEquals("BPN-3.0.0", danaPump.bleModel)
+ Assert.assertEquals("GENERAL__GET_SHIPPING_VERSION", packet.friendlyName)
+ }
+}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Get_Today_Delivery_TotalTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_Today_Delivery_TotalTest.kt
similarity index 66%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Get_Today_Delivery_TotalTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_Today_Delivery_TotalTest.kt
index 1e89db2771..bcb6c0987d 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Get_Today_Delivery_TotalTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_Today_Delivery_TotalTest.kt
@@ -1,27 +1,36 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
-import org.powermock.core.classloader.annotations.PrepareForTest
import org.powermock.modules.junit4.PowerMockRunner
@RunWith(PowerMockRunner::class)
-@PrepareForTest()
class DanaRS_Packet_General_Get_Today_Delivery_TotalTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_General_Get_Today_Delivery_Total) {
+ it.aapsLogger = aapsLogger
+ it.danaPump = danaPump
+ }
+ }
+ }
+
@Test fun runTest() {
- var packet = DanaRS_Packet_General_Get_Today_Delivery_Total(aapsLogger, danaRPump)
+ var packet = DanaRS_Packet_General_Get_Today_Delivery_Total(packetInjector)
Assert.assertEquals(null, packet.requestParams)
// test message decoding
// test for the length message
packet.handleMessage(createArray(1, 0.toByte()))
Assert.assertEquals(true, packet.failed)
- packet = DanaRS_Packet_General_Get_Today_Delivery_Total(aapsLogger, danaRPump)
+ packet = DanaRS_Packet_General_Get_Today_Delivery_Total(packetInjector)
packet.handleMessage(createArray(18, 0.toByte()))
Assert.assertEquals(false, packet.failed)
packet.handleMessage(createArray(15, 1.toByte()))
- Assert.assertEquals(((1 and 0x000000FF shl 8) + (1 and 0x000000FF)) / 100.0, danaRPump.dailyTotalUnits, 0.0)
+ Assert.assertEquals(((1 and 0x000000FF shl 8) + (1 and 0x000000FF)) / 100.0, danaPump.dailyTotalUnits, 0.0)
Assert.assertEquals("REVIEW__GET_TODAY_DELIVERY_TOTAL", packet.friendlyName)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Get_User_Time_Change_FlagTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_User_Time_Change_FlagTest.kt
similarity index 68%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Get_User_Time_Change_FlagTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_User_Time_Change_FlagTest.kt
index 18f89e1096..69cada9822 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Get_User_Time_Change_FlagTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_User_Time_Change_FlagTest.kt
@@ -1,23 +1,31 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
-import org.powermock.core.classloader.annotations.PrepareForTest
import org.powermock.modules.junit4.PowerMockRunner
@RunWith(PowerMockRunner::class)
-@PrepareForTest()
class DanaRS_Packet_General_Get_User_Time_Change_FlagTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_General_Get_User_Time_Change_Flag) {
+ it.aapsLogger = aapsLogger
+ }
+ }
+ }
+
@Test fun runTest() {
- var packet = DanaRS_Packet_General_Get_User_Time_Change_Flag(aapsLogger)
+ var packet = DanaRS_Packet_General_Get_User_Time_Change_Flag(packetInjector)
Assert.assertEquals(null, packet.requestParams)
// test message decoding
// test for the length message
packet.handleMessage(createArray(1, 0.toByte()))
Assert.assertEquals(true, packet.failed)
- packet = DanaRS_Packet_General_Get_User_Time_Change_Flag(aapsLogger)
+ packet = DanaRS_Packet_General_Get_User_Time_Change_Flag(packetInjector)
packet.handleMessage(createArray(18, 0.toByte()))
Assert.assertEquals(false, packet.failed)
Assert.assertEquals("REVIEW__GET_USER_TIME_CHANGE_FLAG", packet.friendlyName)
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Initial_Screen_InformationTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Initial_Screen_InformationTest.kt
similarity index 63%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Initial_Screen_InformationTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Initial_Screen_InformationTest.kt
index 15e9f8e99b..60a8a6d74d 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Initial_Screen_InformationTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Initial_Screen_InformationTest.kt
@@ -1,26 +1,35 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
-import org.powermock.core.classloader.annotations.PrepareForTest
import org.powermock.modules.junit4.PowerMockRunner
@RunWith(PowerMockRunner::class)
-@PrepareForTest()
class DanaRS_Packet_General_Initial_Screen_InformationTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_General_Initial_Screen_Information) {
+ it.aapsLogger = aapsLogger
+ it.danaPump = danaPump
+ }
+ }
+ }
+
@Test fun runTest() {
- var packet = DanaRS_Packet_General_Initial_Screen_Information(aapsLogger, danaRPump)
+ var packet = DanaRS_Packet_General_Initial_Screen_Information(packetInjector)
Assert.assertEquals(null, packet.requestParams)
// test message decoding
// test for the length message
packet.handleMessage(createArray(1, 0.toByte()))
Assert.assertEquals(true, packet.failed)
- packet = DanaRS_Packet_General_Initial_Screen_Information(aapsLogger, danaRPump)
+ packet = DanaRS_Packet_General_Initial_Screen_Information(packetInjector)
packet.handleMessage(createArray(17, 1.toByte()))
Assert.assertEquals(false, packet.failed)
- Assert.assertEquals(true, danaRPump.pumpSuspended)
+ Assert.assertEquals(true, danaPump.pumpSuspended)
Assert.assertEquals("REVIEW__INITIAL_SCREEN_INFORMATION", packet.friendlyName)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Set_History_Upload_ModeTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Set_History_Upload_ModeTest.kt
similarity index 67%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Set_History_Upload_ModeTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Set_History_Upload_ModeTest.kt
index d918e9d682..4e88396e27 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Set_History_Upload_ModeTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Set_History_Upload_ModeTest.kt
@@ -1,17 +1,25 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
-import org.powermock.core.classloader.annotations.PrepareForTest
import org.powermock.modules.junit4.PowerMockRunner
@RunWith(PowerMockRunner::class)
-@PrepareForTest()
class DanaRS_Packet_General_Set_History_Upload_ModeTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_General_Set_History_Upload_Mode) {
+ it.aapsLogger = aapsLogger
+ }
+ }
+ }
+
@Test fun runTest() {
- val packet = DanaRS_Packet_General_Set_History_Upload_Mode(aapsLogger, 1)
+ val packet = DanaRS_Packet_General_Set_History_Upload_Mode(packetInjector, 1)
// test params
Assert.assertEquals(1.toByte(), packet.requestParams[0])
// test message decoding
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Set_User_Time_Change_Flag_ClearTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Set_User_Time_Change_Flag_ClearTest.kt
similarity index 67%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Set_User_Time_Change_Flag_ClearTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Set_User_Time_Change_Flag_ClearTest.kt
index 45e472af3c..20b312641a 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Set_User_Time_Change_Flag_ClearTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Set_User_Time_Change_Flag_ClearTest.kt
@@ -1,17 +1,25 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
-import org.powermock.core.classloader.annotations.PrepareForTest
import org.powermock.modules.junit4.PowerMockRunner
@RunWith(PowerMockRunner::class)
-@PrepareForTest()
class DanaRS_Packet_General_Set_User_Time_Change_Flag_ClearTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_General_Set_User_Time_Change_Flag_Clear) {
+ it.aapsLogger = aapsLogger
+ }
+ }
+ }
+
@Test fun runTest() {
- val packet = DanaRS_Packet_General_Set_User_Time_Change_Flag_Clear(aapsLogger)
+ val packet = DanaRS_Packet_General_Set_User_Time_Change_Flag_Clear(packetInjector)
// test params
Assert.assertEquals(null, packet.requestParams)
// test message decoding
diff --git a/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_AlarmTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_AlarmTest.kt
new file mode 100644
index 0000000000..3f4c681beb
--- /dev/null
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_AlarmTest.kt
@@ -0,0 +1,56 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.interfaces.DatabaseHelperInterface
+import info.nightscout.androidaps.plugins.general.nsclient.NSUpload
+import org.junit.Assert
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.Mock
+import org.powermock.modules.junit4.PowerMockRunner
+import java.util.*
+
+@RunWith(PowerMockRunner::class)
+class DanaRS_Packet_History_AlarmTest : DanaRSTestBase() {
+
+ @Mock lateinit var databaseHelper: DatabaseHelperInterface
+ @Mock lateinit var nsUpload: NSUpload
+
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet) {
+ it.aapsLogger = aapsLogger
+ it.dateUtil = dateUtil
+ }
+ if (it is DanaRS_Packet_History_Alarm) {
+ it.rxBus = rxBus
+ it.databaseHelper = databaseHelper
+ }
+ }
+ }
+
+ @Test
+ fun runTest() {
+ val packet = DanaRS_Packet_History_Alarm(packetInjector, 0)
+
+ val array = createArray(12, 0.toByte()) // 10 + 2
+ putByteToArray(array, 0, 0x0A) // record code alarm
+ putByteToArray(array, 1, 19) // year 2019
+ putByteToArray(array, 2, 2) // month february
+ putByteToArray(array, 3, 4) // day 4
+ putByteToArray(array, 4, 20) // hour 20
+ putByteToArray(array, 5, 11) // min 11
+ putByteToArray(array, 6, 35) // second 35
+ putByteToArray(array, 7, 79) // occlusion
+ putByteToArray(array, 8, 1) // value
+ putByteToArray(array, 9, 100) // value
+
+ packet.handleMessage(array)
+ Assert.assertEquals(info.nightscout.androidaps.dana.comm.RecordTypes.RECORD_TYPE_ALARM, packet.danaRHistoryRecord.recordCode)
+ Assert.assertEquals(Date(119, 1, 4, 20, 11, 35).time, packet.danaRHistoryRecord.recordDate)
+ Assert.assertEquals("Occlusion", packet.danaRHistoryRecord.recordAlarm)
+ Assert.assertEquals(3.56, packet.danaRHistoryRecord.recordValue, 0.01)
+ Assert.assertEquals("REVIEW__ALARM", packet.friendlyName)
+ }
+}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_All_HistoryTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_All_HistoryTest.kt
new file mode 100644
index 0000000000..8e2558f0e2
--- /dev/null
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_All_HistoryTest.kt
@@ -0,0 +1,29 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
+import org.junit.Assert
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.powermock.modules.junit4.PowerMockRunner
+
+@RunWith(PowerMockRunner::class)
+class DanaRS_Packet_History_All_HistoryTest : DanaRSTestBase() {
+
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet) {
+ it.aapsLogger = aapsLogger
+ it.dateUtil = dateUtil
+ }
+ if (it is DanaRS_Packet_History_All_History) {
+ it.rxBus = rxBus
+ }
+ }
+ }
+
+ @Test fun runTest() {
+ val packet = DanaRS_Packet_History_All_History(packetInjector, System.currentTimeMillis())
+ Assert.assertEquals("REVIEW__ALL_HISTORY", packet.friendlyName)
+ }
+}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_BasalTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_BasalTest.kt
new file mode 100644
index 0000000000..f0ab651b9e
--- /dev/null
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_BasalTest.kt
@@ -0,0 +1,29 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
+import org.junit.Assert
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.powermock.modules.junit4.PowerMockRunner
+
+@RunWith(PowerMockRunner::class)
+class DanaRS_Packet_History_BasalTest : DanaRSTestBase() {
+
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet) {
+ it.aapsLogger = aapsLogger
+ it.dateUtil = dateUtil
+ }
+ if (it is DanaRS_Packet_History_Basal) {
+ it.rxBus = rxBus
+ }
+ }
+ }
+
+ @Test fun runTest() {
+ val packet = DanaRS_Packet_History_Basal(packetInjector, System.currentTimeMillis())
+ Assert.assertEquals("REVIEW__BASAL", packet.friendlyName)
+ }
+}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_Blood_GlucoseTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_Blood_GlucoseTest.kt
new file mode 100644
index 0000000000..df83c63baa
--- /dev/null
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_Blood_GlucoseTest.kt
@@ -0,0 +1,29 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
+import org.junit.Assert
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.powermock.modules.junit4.PowerMockRunner
+
+@RunWith(PowerMockRunner::class)
+class DanaRS_Packet_History_Blood_GlucoseTest : DanaRSTestBase() {
+
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet) {
+ it.aapsLogger = aapsLogger
+ it.dateUtil = dateUtil
+ }
+ if (it is DanaRS_Packet_History_Blood_Glucose) {
+ it.rxBus = rxBus
+ }
+ }
+ }
+
+ @Test fun runTest() {
+ val packet = DanaRS_Packet_History_Blood_Glucose(packetInjector, System.currentTimeMillis())
+ Assert.assertEquals("REVIEW__BLOOD_GLUCOSE", packet.friendlyName)
+ }
+}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_BolusTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_BolusTest.kt
new file mode 100644
index 0000000000..e2bc27ae88
--- /dev/null
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_BolusTest.kt
@@ -0,0 +1,29 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
+import org.junit.Assert
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.powermock.modules.junit4.PowerMockRunner
+
+@RunWith(PowerMockRunner::class)
+class DanaRS_Packet_History_BolusTest : DanaRSTestBase() {
+
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet) {
+ it.aapsLogger = aapsLogger
+ it.dateUtil = dateUtil
+ }
+ if (it is DanaRS_Packet_History_Bolus) {
+ it.rxBus = rxBus
+ }
+ }
+ }
+
+ @Test fun runTest() {
+ val packet = DanaRS_Packet_History_Bolus(packetInjector, System.currentTimeMillis())
+ Assert.assertEquals("REVIEW__BOLUS", packet.friendlyName)
+ }
+}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_CarbohydrateTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_CarbohydrateTest.kt
new file mode 100644
index 0000000000..6a9aa52189
--- /dev/null
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_CarbohydrateTest.kt
@@ -0,0 +1,29 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
+import org.junit.Assert
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.powermock.modules.junit4.PowerMockRunner
+
+@RunWith(PowerMockRunner::class)
+class DanaRS_Packet_History_CarbohydrateTest : DanaRSTestBase() {
+
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet) {
+ it.aapsLogger = aapsLogger
+ it.dateUtil = dateUtil
+ }
+ if (it is DanaRS_Packet_History_Carbohydrate) {
+ it.rxBus = rxBus
+ }
+ }
+ }
+
+ @Test fun runTest() {
+ val packet = DanaRS_Packet_History_Carbohydrate(packetInjector, System.currentTimeMillis())
+ Assert.assertEquals("REVIEW__CARBOHYDRATE", packet.friendlyName)
+ }
+}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_DailyTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_DailyTest.kt
new file mode 100644
index 0000000000..85719ce40d
--- /dev/null
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_DailyTest.kt
@@ -0,0 +1,29 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
+import org.junit.Assert
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.powermock.modules.junit4.PowerMockRunner
+
+@RunWith(PowerMockRunner::class)
+class DanaRS_Packet_History_DailyTest : DanaRSTestBase() {
+
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet) {
+ it.aapsLogger = aapsLogger
+ it.dateUtil = dateUtil
+ }
+ if (it is DanaRS_Packet_History_Daily) {
+ it.rxBus = rxBus
+ }
+ }
+ }
+
+ @Test fun runTest() {
+ val packet = DanaRS_Packet_History_Daily(packetInjector, System.currentTimeMillis())
+ Assert.assertEquals("REVIEW__DAILY", packet.friendlyName)
+ }
+}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_PrimeTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_PrimeTest.kt
new file mode 100644
index 0000000000..f06f0605b9
--- /dev/null
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_PrimeTest.kt
@@ -0,0 +1,29 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
+import org.junit.Assert
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.powermock.modules.junit4.PowerMockRunner
+
+@RunWith(PowerMockRunner::class)
+class DanaRS_Packet_History_PrimeTest : DanaRSTestBase() {
+
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet) {
+ it.aapsLogger = aapsLogger
+ it.dateUtil = dateUtil
+ }
+ if (it is DanaRS_Packet_History_Prime) {
+ it.rxBus = rxBus
+ }
+ }
+ }
+
+ @Test fun runTest() {
+ val packet = DanaRS_Packet_History_Prime(packetInjector, System.currentTimeMillis())
+ Assert.assertEquals("REVIEW__PRIME", packet.friendlyName)
+ }
+}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_RefillTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_RefillTest.kt
new file mode 100644
index 0000000000..fcbc0a182c
--- /dev/null
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_RefillTest.kt
@@ -0,0 +1,29 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
+import org.junit.Assert
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.powermock.modules.junit4.PowerMockRunner
+
+@RunWith(PowerMockRunner::class)
+class DanaRS_Packet_History_RefillTest : DanaRSTestBase() {
+
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet) {
+ it.aapsLogger = aapsLogger
+ it.dateUtil = dateUtil
+ }
+ if (it is DanaRS_Packet_History_Refill) {
+ it.rxBus = rxBus
+ }
+ }
+ }
+
+ @Test fun runTest() {
+ val packet = DanaRS_Packet_History_Refill(packetInjector, System.currentTimeMillis())
+ Assert.assertEquals("REVIEW__REFILL", packet.friendlyName)
+ }
+}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_SuspendTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_SuspendTest.kt
new file mode 100644
index 0000000000..e6de597869
--- /dev/null
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_SuspendTest.kt
@@ -0,0 +1,29 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
+import org.junit.Assert
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.powermock.modules.junit4.PowerMockRunner
+
+@RunWith(PowerMockRunner::class)
+class DanaRS_Packet_History_SuspendTest : DanaRSTestBase() {
+
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet) {
+ it.aapsLogger = aapsLogger
+ it.dateUtil = dateUtil
+ }
+ if (it is DanaRS_Packet_History_Suspend) {
+ it.rxBus = rxBus
+ }
+ }
+ }
+
+ @Test fun runTest() {
+ val packet = DanaRS_Packet_History_Suspend(packetInjector, System.currentTimeMillis())
+ Assert.assertEquals("REVIEW__SUSPEND", packet.friendlyName)
+ }
+}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_TemporaryTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_TemporaryTest.kt
new file mode 100644
index 0000000000..9064a8d3b4
--- /dev/null
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_TemporaryTest.kt
@@ -0,0 +1,29 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
+import org.junit.Assert
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.powermock.modules.junit4.PowerMockRunner
+
+@RunWith(PowerMockRunner::class)
+class DanaRS_Packet_History_TemporaryTest : DanaRSTestBase() {
+
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet) {
+ it.aapsLogger = aapsLogger
+ it.dateUtil = dateUtil
+ }
+ if (it is DanaRS_Packet_History_Temporary) {
+ it.rxBus = rxBus
+ }
+ }
+ }
+
+ @Test fun runTest() {
+ val packet = DanaRS_Packet_History_Temporary(packetInjector, System.currentTimeMillis())
+ Assert.assertEquals("REVIEW__TEMPORARY", packet.friendlyName)
+ }
+}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Notify_AlarmTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Notify_AlarmTest.kt
similarity index 64%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Notify_AlarmTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Notify_AlarmTest.kt
index 8aba3da2ba..04df7d84f9 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Notify_AlarmTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Notify_AlarmTest.kt
@@ -1,10 +1,13 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload
import org.junit.Assert
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
+import org.mockito.Mock
import org.powermock.api.mockito.PowerMockito
import org.powermock.core.classloader.annotations.PrepareForTest
import org.powermock.modules.junit4.PowerMockRunner
@@ -13,8 +16,21 @@ import org.powermock.modules.junit4.PowerMockRunner
@PrepareForTest(NSUpload::class)
class DanaRS_Packet_Notify_AlarmTest : DanaRSTestBase() {
+ @Mock lateinit var nsUpload: NSUpload
+
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_Notify_Alarm) {
+ it.aapsLogger = aapsLogger
+ it.rxBus = rxBus
+ it.resourceHelper = resourceHelper
+ it.nsUpload = nsUpload
+ }
+ }
+ }
+
@Test fun runTest() {
- val packet = DanaRS_Packet_Notify_Alarm(aapsLogger, resourceHelper)
+ val packet = DanaRS_Packet_Notify_Alarm(packetInjector)
// test params
Assert.assertEquals(null, packet.requestParams)
// test message decoding
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Notify_Delivery_CompleteTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Notify_Delivery_CompleteTest.kt
similarity index 66%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Notify_Delivery_CompleteTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Notify_Delivery_CompleteTest.kt
index 790117afc2..6028dd0941 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Notify_Delivery_CompleteTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Notify_Delivery_CompleteTest.kt
@@ -1,13 +1,11 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
import dagger.android.AndroidInjector
import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.db.Treatment
import info.nightscout.androidaps.interfaces.ActivePluginProvider
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
-import info.nightscout.androidaps.plugins.pump.danaRS.DanaRSPlugin
-import info.nightscout.androidaps.plugins.treatments.Treatment
-import info.nightscout.androidaps.utils.DefaultValueHelper
+import info.nightscout.androidaps.danars.DanaRSPlugin
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -19,14 +17,20 @@ import org.powermock.core.classloader.annotations.PrepareForTest
import org.powermock.modules.junit4.PowerMockRunner
@RunWith(PowerMockRunner::class)
-@PrepareForTest(RxBusWrapper::class)
+@PrepareForTest(RxBusWrapper::class, DanaRSPlugin::class)
class DanaRS_Packet_Notify_Delivery_CompleteTest : DanaRSTestBase() {
@Mock lateinit var danaRSPlugin: DanaRSPlugin
@Mock lateinit var activePlugin: ActivePluginProvider
- private var treatmentInjector: HasAndroidInjector = HasAndroidInjector {
+ private val packetInjector = HasAndroidInjector {
AndroidInjector {
+ if (it is DanaRS_Packet_Notify_Delivery_Complete) {
+ it.aapsLogger = aapsLogger
+ it.rxBus = rxBus
+ it.resourceHelper = resourceHelper
+ it.danaPump = danaPump
+ }
if (it is Treatment) {
it.defaultValueHelper = defaultValueHelper
it.resourceHelper = resourceHelper
@@ -39,13 +43,13 @@ class DanaRS_Packet_Notify_Delivery_CompleteTest : DanaRSTestBase() {
@Test fun runTest() {
`when`(resourceHelper.gs(anyInt(), anyDouble())).thenReturn("SomeString")
- danaRSPlugin.bolusingTreatment = Treatment(treatmentInjector)
- val packet = DanaRS_Packet_Notify_Delivery_Complete(aapsLogger, rxBus, resourceHelper, danaRSPlugin)
+ danaPump.bolusingTreatment = Treatment(packetInjector)
+ val packet = DanaRS_Packet_Notify_Delivery_Complete(packetInjector)
// test params
Assert.assertEquals(null, packet.requestParams)
// test message decoding
packet.handleMessage(createArray(17, 0.toByte()))
- Assert.assertEquals(true, danaRSPlugin.bolusDone)
+ Assert.assertEquals(true, danaPump.bolusDone)
Assert.assertEquals("NOTIFY__DELIVERY_COMPLETE", packet.friendlyName)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Notify_Delivery_Rate_DisplayTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Notify_Delivery_Rate_DisplayTest.kt
similarity index 78%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Notify_Delivery_Rate_DisplayTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Notify_Delivery_Rate_DisplayTest.kt
index 37a1197b4f..66ac024330 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Notify_Delivery_Rate_DisplayTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Notify_Delivery_Rate_DisplayTest.kt
@@ -1,18 +1,16 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
import android.content.Context
import dagger.android.AndroidInjector
import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.Config
+import info.nightscout.androidaps.danars.DanaRSPlugin
+import info.nightscout.androidaps.db.Treatment
import info.nightscout.androidaps.interfaces.ActivePluginProvider
import info.nightscout.androidaps.interfaces.CommandQueueProvider
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
import info.nightscout.androidaps.plugins.pump.common.bolusInfo.DetailedBolusInfoStorage
-import info.nightscout.androidaps.plugins.pump.danaRS.DanaRSPlugin
-import info.nightscout.androidaps.plugins.treatments.Treatment
-import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
-import info.nightscout.androidaps.utils.DefaultValueHelper
import org.junit.Assert
import org.junit.Before
import org.junit.Test
@@ -35,8 +33,14 @@ class DanaRS_Packet_Notify_Delivery_Rate_DisplayTest : DanaRSTestBase() {
private lateinit var danaRSPlugin: DanaRSPlugin
- private var treatmentInjector: HasAndroidInjector = HasAndroidInjector {
+ private val packetInjector = HasAndroidInjector {
AndroidInjector {
+ if (it is DanaRS_Packet_Notify_Delivery_Rate_Display) {
+ it.aapsLogger = aapsLogger
+ it.rxBus = rxBus
+ it.resourceHelper = resourceHelper
+ it.danaPump = danaPump
+ }
if (it is Treatment) {
it.defaultValueHelper = defaultValueHelper
it.resourceHelper = resourceHelper
@@ -49,7 +53,7 @@ class DanaRS_Packet_Notify_Delivery_Rate_DisplayTest : DanaRSTestBase() {
@Test fun runTest() {
`when`(resourceHelper.gs(ArgumentMatchers.anyInt(), anyObject())).thenReturn("SomeString")
// val packet = DanaRS_Packet_Notify_Delivery_Rate_Display(1.0, Treatment(treatmentInjector))
- val packet = DanaRS_Packet_Notify_Delivery_Rate_Display(aapsLogger, rxBus, resourceHelper, danaRSPlugin)
+ val packet = DanaRS_Packet_Notify_Delivery_Rate_Display(packetInjector)
// test params
Assert.assertEquals(null, packet.requestParams)
// test message decoding
@@ -64,7 +68,7 @@ class DanaRS_Packet_Notify_Delivery_Rate_DisplayTest : DanaRSTestBase() {
@Before
fun mock() {
- danaRSPlugin = DanaRSPlugin(HasAndroidInjector { AndroidInjector { Unit } }, aapsLogger, rxBus, context, resourceHelper, constraintChecker, profileFunction, treatmentsPlugin, sp, commandQueue, danaRPump, detailedBolusInfoStorage)
- danaRSPlugin.bolusingTreatment = Treatment(treatmentInjector)
+ danaRSPlugin = DanaRSPlugin(HasAndroidInjector { AndroidInjector { Unit } }, aapsLogger, rxBus, context, resourceHelper, constraintChecker, profileFunction, activePluginProvider, sp, commandQueue, danaPump, detailedBolusInfoStorage, fabricPrivacy, dateUtil)
+ danaPump.bolusingTreatment = Treatment(packetInjector)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Notify_Missed_Bolus_AlarmTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Notify_Missed_Bolus_AlarmTest.kt
similarity index 62%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Notify_Missed_Bolus_AlarmTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Notify_Missed_Bolus_AlarmTest.kt
index 9583c89d4e..164720f011 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Notify_Missed_Bolus_AlarmTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Notify_Missed_Bolus_AlarmTest.kt
@@ -1,17 +1,25 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
-import org.powermock.core.classloader.annotations.PrepareForTest
import org.powermock.modules.junit4.PowerMockRunner
@RunWith(PowerMockRunner::class)
-@PrepareForTest()
class DanaRS_Packet_Notify_Missed_Bolus_AlarmTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_Notify_Missed_Bolus_Alarm) {
+ it.aapsLogger = aapsLogger
+ }
+ }
+ }
+
@Test fun runTest() {
- val packet = DanaRS_Packet_Notify_Missed_Bolus_Alarm(aapsLogger)
+ val packet = DanaRS_Packet_Notify_Missed_Bolus_Alarm(packetInjector)
// test params
Assert.assertEquals(null, packet.requestParams)
// test message decoding
diff --git a/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Option_Get_Pump_TimeTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Option_Get_Pump_TimeTest.kt
new file mode 100644
index 0000000000..3a1a8e1256
--- /dev/null
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Option_Get_Pump_TimeTest.kt
@@ -0,0 +1,40 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
+import org.joda.time.DateTime
+import org.junit.Assert
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.powermock.modules.junit4.PowerMockRunner
+
+@RunWith(PowerMockRunner::class)
+class DanaRS_Packet_Option_Get_Pump_TimeTest : DanaRSTestBase() {
+
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet) {
+ it.aapsLogger = aapsLogger
+ it.dateUtil = dateUtil
+ }
+ if (it is DanaRS_Packet_Option_Get_Pump_Time) {
+ it.danaPump = danaPump
+ }
+ }
+ }
+
+ @Test fun runTest() {
+ val packet = DanaRS_Packet_Option_Get_Pump_Time(packetInjector)
+ val array = createArray(8, 0.toByte()) // 6 + 2
+ putByteToArray(array, 0, 19) // year 2019
+ putByteToArray(array, 1, 2) // month february
+ putByteToArray(array, 2, 4) // day 4
+ putByteToArray(array, 3, 20) // hour 20
+ putByteToArray(array, 4, 11) // min 11
+ putByteToArray(array, 5, 35) // second 35
+
+ packet.handleMessage(array)
+ Assert.assertEquals(DateTime(2019, 2, 4, 20, 11, 35).millis, danaPump.getPumpTime())
+ Assert.assertEquals("OPTION__GET_PUMP_TIME", packet.friendlyName)
+ }
+}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Option_Get_User_OptionTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Option_Get_User_OptionTest.kt
similarity index 57%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Option_Get_User_OptionTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Option_Get_User_OptionTest.kt
index 32e3b051c6..8f5f8f0309 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Option_Get_User_OptionTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Option_Get_User_OptionTest.kt
@@ -1,17 +1,26 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
-import org.powermock.core.classloader.annotations.PrepareForTest
import org.powermock.modules.junit4.PowerMockRunner
@RunWith(PowerMockRunner::class)
-@PrepareForTest()
class DanaRS_Packet_Option_Get_User_OptionTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_Option_Get_User_Option) {
+ it.aapsLogger = aapsLogger
+ it.danaPump = danaPump
+ }
+ }
+ }
+
@Test fun runTest() {
- val packet = DanaRS_Packet_Option_Get_User_Option(aapsLogger, danaRPump)
+ val packet = DanaRS_Packet_Option_Get_User_Option(packetInjector)
// test params
Assert.assertEquals(null, packet.requestParams)
// test message decoding
@@ -19,7 +28,7 @@ class DanaRS_Packet_Option_Get_User_OptionTest : DanaRSTestBase() {
Assert.assertEquals(true, packet.failed)
// everything ok :)
packet.handleMessage(createArray(20, 5.toByte()))
- Assert.assertEquals(5, danaRPump.lcdOnTimeSec)
+ Assert.assertEquals(5, danaPump.lcdOnTimeSec)
Assert.assertEquals(false, packet.failed)
Assert.assertEquals("OPTION__GET_USER_OPTION", packet.friendlyName)
}
diff --git a/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Option_Set_Pump_TimeTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Option_Set_Pump_TimeTest.kt
new file mode 100644
index 0000000000..b67447884e
--- /dev/null
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Option_Set_Pump_TimeTest.kt
@@ -0,0 +1,44 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
+import org.junit.Assert
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.powermock.modules.junit4.PowerMockRunner
+import java.util.*
+
+@RunWith(PowerMockRunner::class)
+class DanaRS_Packet_Option_Set_Pump_TimeTest : DanaRSTestBase() {
+
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet) {
+ it.aapsLogger = aapsLogger
+ it.dateUtil = dateUtil
+ }
+ if (it is DanaRS_Packet_Option_Set_Pump_Time) {
+ }
+ }
+ }
+
+ @Test fun runTest() {
+ val date = Date()
+ val packet = DanaRS_Packet_Option_Set_Pump_Time(packetInjector, date.time)
+ // test params
+ val params = packet.requestParams
+ Assert.assertEquals((date.year - 100 and 0xff).toByte(), params[0]) // 2019 -> 19
+ Assert.assertEquals((date.month + 1 and 0xff).toByte(), params[1])
+ Assert.assertEquals((date.date and 0xff).toByte(), params[2])
+ Assert.assertEquals((date.hours and 0xff).toByte(), params[3])
+ Assert.assertEquals((date.minutes and 0xff).toByte(), params[4])
+ Assert.assertEquals((date.seconds and 0xff).toByte(), params[5])
+ // test message decoding
+ packet.handleMessage(createArray(3, 0.toByte()))
+ Assert.assertEquals(false, packet.failed)
+ // everything ok :)
+ packet.handleMessage(createArray(17, 1.toByte()))
+ Assert.assertEquals(true, packet.failed)
+ Assert.assertEquals("OPTION__SET_PUMP_TIME", packet.friendlyName)
+ }
+}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Option_Set_User_OptionTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Option_Set_User_OptionTest.kt
similarity index 56%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Option_Set_User_OptionTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Option_Set_User_OptionTest.kt
index 30d076e037..043fd13178 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Option_Set_User_OptionTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Option_Set_User_OptionTest.kt
@@ -1,20 +1,29 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
-import org.powermock.core.classloader.annotations.PrepareForTest
import org.powermock.modules.junit4.PowerMockRunner
@RunWith(PowerMockRunner::class)
-@PrepareForTest()
class DanaRS_Packet_Option_Set_User_OptionTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_Option_Set_User_Option) {
+ it.aapsLogger = aapsLogger
+ it.danaPump = danaPump
+ }
+ }
+ }
+
@Test fun runTest() {
- val packet = DanaRS_Packet_Option_Set_User_Option(aapsLogger, danaRPump)
+ val packet = DanaRS_Packet_Option_Set_User_Option(packetInjector)
// test params
val params = packet.requestParams
- Assert.assertEquals((danaRPump.lcdOnTimeSec and 0xff).toByte(), params[3])
+ Assert.assertEquals((danaPump.lcdOnTimeSec and 0xff).toByte(), params[3])
// test message decoding
packet.handleMessage(createArray(3, 0.toByte()))
Assert.assertEquals(false, packet.failed)
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Review_Bolus_AvgTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Review_Bolus_AvgTest.kt
similarity index 65%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Review_Bolus_AvgTest.kt
rename to app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Review_Bolus_AvgTest.kt
index ff5dc4ce80..5b5e179f7d 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Review_Bolus_AvgTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Review_Bolus_AvgTest.kt
@@ -1,5 +1,7 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -10,8 +12,16 @@ import org.powermock.modules.junit4.PowerMockRunner
@PrepareForTest()
class DanaRS_Packet_Review_Bolus_AvgTest : DanaRSTestBase() {
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_Review_Bolus_Avg) {
+ it.aapsLogger = aapsLogger
+ }
+ }
+ }
+
@Test fun runTest() {
- val packet = DanaRS_Packet_Review_Bolus_Avg(aapsLogger)
+ val packet = DanaRS_Packet_Review_Bolus_Avg(packetInjector)
// test params
Assert.assertEquals(null, packet.requestParams)
// test message decoding
diff --git a/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Review_Get_Pump_Dec_RatioTest.kt b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Review_Get_Pump_Dec_RatioTest.kt
new file mode 100644
index 0000000000..9c04fdf0c1
--- /dev/null
+++ b/app/src/test/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Review_Get_Pump_Dec_RatioTest.kt
@@ -0,0 +1,31 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
+import org.junit.Assert
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.powermock.modules.junit4.PowerMockRunner
+
+@RunWith(PowerMockRunner::class)
+class DanaRS_Packet_Review_Get_Pump_Dec_RatioTest : DanaRSTestBase() {
+
+ private val packetInjector = HasAndroidInjector {
+ AndroidInjector {
+ if (it is DanaRS_Packet_Review_Get_Pump_Dec_Ratio) {
+ it.aapsLogger = aapsLogger
+ it.danaPump = danaPump
+ }
+ }
+ }
+
+ @Test fun runTest() {
+ val packet = DanaRS_Packet_Review_Get_Pump_Dec_Ratio(packetInjector)
+
+ val array = ByteArray(100)
+ putByteToArray(array, 0, 4.toByte())
+ packet.handleMessage(array)
+ Assert.assertEquals(20, danaPump.decRatio)
+ Assert.assertEquals("REVIEW__GET_PUMP_DEC_RATIO", packet.friendlyName)
+ }
+}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/data/ProfileTest.kt b/app/src/test/java/info/nightscout/androidaps/data/ProfileTest.kt
index ac4988d8ac..a0776e8365 100644
--- a/app/src/test/java/info/nightscout/androidaps/data/ProfileTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/data/ProfileTest.kt
@@ -57,7 +57,7 @@ class ProfileTest : TestBaseWithProfile() {
JSONAssert.assertEquals(okProfile, p.data, false)
Assert.assertEquals(3.0, p.dia, 0.01)
Assert.assertEquals(TimeZone.getTimeZone("UTC"), p.timeZone)
- Assert.assertEquals("00:30", p.format_HH_MM(30 * 60))
+ Assert.assertEquals("00:30", Profile.format_HH_MM(30 * 60))
val c = Calendar.getInstance()
c[Calendar.HOUR_OF_DAY] = 1
c[Calendar.MINUTE] = 0
diff --git a/app/src/test/java/info/nightscout/androidaps/data/QuickWizardTest.kt b/app/src/test/java/info/nightscout/androidaps/data/QuickWizardTest.kt
index 69a166dc86..f79cfd7c43 100644
--- a/app/src/test/java/info/nightscout/androidaps/data/QuickWizardTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/data/QuickWizardTest.kt
@@ -3,9 +3,8 @@ package info.nightscout.androidaps.data
import dagger.android.AndroidInjector
import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.TestBase
-import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
+import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
import info.nightscout.androidaps.utils.sharedPreferences.SP
diff --git a/app/src/test/java/info/nightscout/androidaps/data/defaultProfile/DefaultProfileTest.kt b/app/src/test/java/info/nightscout/androidaps/data/defaultProfile/DefaultProfileTest.kt
index d2afc0d5f3..e97e63bafa 100644
--- a/app/src/test/java/info/nightscout/androidaps/data/defaultProfile/DefaultProfileTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/data/defaultProfile/DefaultProfileTest.kt
@@ -13,18 +13,18 @@ class DefaultProfileTest : TestBase() {
@Test
fun profile() {
- var p = DefaultProfile(injector).profile(5.0, 5.1 / 0.3, 0.0, Constants.MGDL)
- assertEquals(0.150, p.getBasalTimeFromMidnight(0), 0.001)
+ var p = DefaultProfile(injector).profile(5.0, 5.1 / 0.3, 0.0, Constants.MMOL)
+ assertEquals(0.150, p!!.getBasalTimeFromMidnight(0), 0.001)
assertEquals(15.0, p.getIcTimeFromMidnight(0), 0.001)
assertEquals(11.8, p.getIsfTimeFromMidnight(0), 0.001)
- p = DefaultProfile(injector).profile(7.0, 10.0 / 0.4, 0.0, Constants.MGDL)
- assertEquals(0.350, p.getBasalTimeFromMidnight(0), 0.001)
+ p = DefaultProfile(injector).profile(7.0, 10.0 / 0.4, 0.0, Constants.MMOL)
+ assertEquals(0.350, p!!.getBasalTimeFromMidnight(0), 0.001)
assertEquals(15.0, p.getIcTimeFromMidnight(0), 0.001)
assertEquals(6.8, p.getIsfTimeFromMidnight(0), 0.001)
- p = DefaultProfile(injector).profile(12.0, 25.0 / 0.5, 0.0, Constants.MGDL)
- assertEquals(0.80, p.getBasalTimeFromMidnight(0), 0.001)
+ p = DefaultProfile(injector).profile(12.0, 25.0 / 0.5, 0.0, Constants.MMOL)
+ assertEquals(0.80, p!!.getBasalTimeFromMidnight(0), 0.001)
assertEquals(10.0, p.getIcTimeFromMidnight(0), 0.001)
assertEquals(2.2, p.getIsfTimeFromMidnight(0), 0.001)
}
diff --git a/app/src/test/java/info/nightscout/androidaps/db/BgReadingTest.kt b/app/src/test/java/info/nightscout/androidaps/db/BgReadingTest.kt
index 61494f7d8c..47417786de 100644
--- a/app/src/test/java/info/nightscout/androidaps/db/BgReadingTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/db/BgReadingTest.kt
@@ -1,14 +1,17 @@
package info.nightscout.androidaps.db
+import android.content.Context
import dagger.android.AndroidInjector
import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.TestBase
import info.nightscout.androidaps.Constants
import info.nightscout.androidaps.MainApp
-import info.nightscout.androidaps.logging.AAPSLogger
+import info.nightscout.androidaps.interfaces.DatabaseHelperInterface
import info.nightscout.androidaps.logging.L
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
+import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus
+import info.nightscout.androidaps.core.R
+import info.nightscout.androidaps.utils.DateUtil
import info.nightscout.androidaps.utils.DefaultValueHelper
import info.nightscout.androidaps.utils.resources.ResourceHelper
import org.junit.Assert
@@ -32,6 +35,7 @@ class BgReadingTest : TestBase() {
@Mock lateinit var defaultValueHelper: DefaultValueHelper
@Mock lateinit var profileFunction: ProfileFunction
@Mock lateinit var resourceHelper: ResourceHelper
+ @Mock lateinit var databaseHelper: DatabaseHelperInterface
var injector: HasAndroidInjector = HasAndroidInjector {
AndroidInjector {
@@ -56,23 +60,45 @@ class BgReadingTest : TestBase() {
fun directionToSymbol() {
val bgReading = BgReading(injector)
bgReading.direction = "DoubleDown"
- Assert.assertEquals("\u21ca", bgReading.directionToSymbol())
+ Assert.assertEquals("\u21ca", bgReading.directionToSymbol(databaseHelper))
bgReading.direction = "SingleDown"
- Assert.assertEquals("\u2193", bgReading.directionToSymbol())
+ Assert.assertEquals("\u2193", bgReading.directionToSymbol(databaseHelper))
bgReading.direction = "FortyFiveDown"
- Assert.assertEquals("\u2198", bgReading.directionToSymbol())
+ Assert.assertEquals("\u2198", bgReading.directionToSymbol(databaseHelper))
bgReading.direction = "Flat"
- Assert.assertEquals("\u2192", bgReading.directionToSymbol())
+ Assert.assertEquals("\u2192", bgReading.directionToSymbol(databaseHelper))
bgReading.direction = "FortyFiveUp"
- Assert.assertEquals("\u2197", bgReading.directionToSymbol())
+ Assert.assertEquals("\u2197", bgReading.directionToSymbol(databaseHelper))
bgReading.direction = "SingleUp"
- Assert.assertEquals("\u2191", bgReading.directionToSymbol())
+ Assert.assertEquals("\u2191", bgReading.directionToSymbol(databaseHelper))
bgReading.direction = "DoubleUp"
- Assert.assertEquals("\u21c8", bgReading.directionToSymbol())
+ Assert.assertEquals("\u21c8", bgReading.directionToSymbol(databaseHelper))
bgReading.direction = "OUT OF RANGE"
- Assert.assertEquals("??", bgReading.directionToSymbol())
+ Assert.assertEquals("??", bgReading.directionToSymbol(databaseHelper))
}
+ @Test
+ fun directionToIcon() {
+ val bgReading = BgReading(injector)
+ bgReading.direction = "DoubleDown"
+ Assert.assertEquals(R.drawable.ic_doubledown, bgReading.directionToIcon(databaseHelper))
+ bgReading.direction = "SingleDown"
+ Assert.assertEquals(R.drawable.ic_singledown, bgReading.directionToIcon(databaseHelper))
+ bgReading.direction = "FortyFiveDown"
+ Assert.assertEquals(R.drawable.ic_fortyfivedown, bgReading.directionToIcon(databaseHelper))
+ bgReading.direction = "Flat"
+ Assert.assertEquals(R.drawable.ic_flat, bgReading.directionToIcon(databaseHelper))
+ bgReading.direction = "FortyFiveUp"
+ Assert.assertEquals(R.drawable.ic_fortyfiveup, bgReading.directionToIcon(databaseHelper))
+ bgReading.direction = "SingleUp"
+ Assert.assertEquals(R.drawable.ic_singleup, bgReading.directionToIcon(databaseHelper))
+ bgReading.direction = "DoubleUp"
+ Assert.assertEquals(R.drawable.ic_doubleup, bgReading.directionToIcon(databaseHelper))
+ bgReading.direction = "OUT OF RANGE"
+ Assert.assertEquals(R.drawable.ic_invalid, bgReading.directionToIcon(databaseHelper))
+ }
+
+
@Test fun dateTest() {
val bgReading = BgReading(injector)
val now = System.currentTimeMillis()
@@ -89,8 +115,8 @@ class BgReadingTest : TestBase() {
}
@Test fun copyFromTest() {
- val databaseHelper = Mockito.mock(DatabaseHelper::class.java)
- `when`(MainApp.getDbHelper()).thenReturn(databaseHelper)
+// val databaseHelper = Mockito.mock(DatabaseHelper::class.java)
+// `when`(MainApp.getDbHelper()).thenReturn(databaseHelper)
setReadings(72, 0)
val bgReading = BgReading(injector)
val copy = BgReading(injector)
@@ -101,7 +127,7 @@ class BgReadingTest : TestBase() {
copy.copyFrom(bgReading)
Assert.assertEquals(81.0, copy.value, 0.1)
Assert.assertEquals(now, copy.date)
- Assert.assertEquals(bgReading.directionToSymbol(), copy.directionToSymbol())
+ Assert.assertEquals(bgReading.directionToSymbol(databaseHelper), copy.directionToSymbol(databaseHelper))
}
@Test
@@ -120,34 +146,28 @@ class BgReadingTest : TestBase() {
@Test fun calculateDirection() {
val bgReading = BgReading(injector)
val bgReadingsList: List? = null
- val databaseHelper = Mockito.mock(DatabaseHelper::class.java)
- `when`(MainApp.getDbHelper()).thenReturn(databaseHelper)
- `when`(MainApp.getDbHelper().getAllBgreadingsDataFromTime(ArgumentMatchers.anyLong(), ArgumentMatchers.anyBoolean())).thenReturn(bgReadingsList)
- Assert.assertEquals("NONE", bgReading.calculateDirection())
+// val databaseHelper = Mockito.mock(DatabaseHelper::class.java)
+// `when`(MainApp.getDbHelper()).thenReturn(databaseHelper)
+ `when`(databaseHelper.getAllBgreadingsDataFromTime(ArgumentMatchers.anyLong(), ArgumentMatchers.anyBoolean())).thenReturn(bgReadingsList)
+ Assert.assertEquals("NONE", bgReading.calculateDirection(databaseHelper))
setReadings(72, 0)
- Assert.assertEquals("DoubleUp", bgReading.calculateDirection())
+ Assert.assertEquals("DoubleUp", bgReading.calculateDirection(databaseHelper))
setReadings(76, 60)
- Assert.assertEquals("SingleUp", bgReading.calculateDirection())
+ Assert.assertEquals("SingleUp", bgReading.calculateDirection(databaseHelper))
setReadings(74, 65)
- Assert.assertEquals("FortyFiveUp", bgReading.calculateDirection())
+ Assert.assertEquals("FortyFiveUp", bgReading.calculateDirection(databaseHelper))
setReadings(72, 72)
- Assert.assertEquals("Flat", bgReading.calculateDirection())
+ Assert.assertEquals("Flat", bgReading.calculateDirection(databaseHelper))
setReadings(0, 72)
- Assert.assertEquals("DoubleDown", bgReading.calculateDirection())
+ Assert.assertEquals("DoubleDown", bgReading.calculateDirection(databaseHelper))
setReadings(60, 76)
- Assert.assertEquals("SingleDown", bgReading.calculateDirection())
+ Assert.assertEquals("SingleDown", bgReading.calculateDirection(databaseHelper))
setReadings(65, 74)
- Assert.assertEquals("FortyFiveDown", bgReading.calculateDirection())
+ Assert.assertEquals("FortyFiveDown", bgReading.calculateDirection(databaseHelper))
}
@Before
fun prepareMock() {
- val mainApp = PowerMockito.mockStatic(MainApp::class.java)
-// AAPSMocker.mockApplicationContext()
-// AAPSMocker.mockSP()
-// AAPSMocker.mockL()
-// AAPSMocker.mockDatabaseHelper()
-// `when`(mainApp.androidInjector()).thenReturn(injector.androidInjector())
}
fun setReadings(current_value: Int, previous_value: Int) {
@@ -160,6 +180,6 @@ class BgReadingTest : TestBase() {
val bgReadings: MutableList = mutableListOf()
bgReadings.add(now)
bgReadings.add(previous)
- `when`(MainApp.getDbHelper().getAllBgreadingsDataFromTime(ArgumentMatchers.anyLong(), ArgumentMatchers.anyBoolean())).thenReturn(bgReadings)
+ `when`(databaseHelper.getAllBgreadingsDataFromTime(ArgumentMatchers.anyLong(), ArgumentMatchers.anyBoolean())).thenReturn(bgReadings)
}
}
\ No newline at end of file
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 7698cc6844..340fda178a 100644
--- a/app/src/test/java/info/nightscout/androidaps/interfaces/ConstraintsCheckerTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/interfaces/ConstraintsCheckerTest.kt
@@ -3,30 +3,31 @@ package info.nightscout.androidaps.interfaces
import android.content.Context
import dagger.android.AndroidInjector
import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.Config
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.plugins.aps.openAPSAMA.OpenAPSAMAPlugin
import info.nightscout.androidaps.plugins.aps.openAPSSMB.OpenAPSSMBPlugin
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
import info.nightscout.androidaps.plugins.constraints.objectives.ObjectivesPlugin
import info.nightscout.androidaps.plugins.constraints.objectives.objectives.Objective
import info.nightscout.androidaps.plugins.constraints.safety.SafetyPlugin
+import info.nightscout.androidaps.plugins.general.nsclient.NSUpload
+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.plugins.pump.danaR.DanaRPlugin
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
-import info.nightscout.androidaps.plugins.pump.danaRS.DanaRSPlugin
+import info.nightscout.androidaps.danar.DanaRPlugin
+import info.nightscout.androidaps.danars.DanaRSPlugin
import info.nightscout.androidaps.plugins.pump.insight.LocalInsightPlugin
import info.nightscout.androidaps.plugins.pump.virtual.VirtualPumpPlugin
import info.nightscout.androidaps.plugins.sensitivity.SensitivityOref1Plugin
import info.nightscout.androidaps.plugins.source.GlimpPlugin
import info.nightscout.androidaps.plugins.treatments.TreatmentService
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
-import info.nightscout.androidaps.utils.FabricPrivacy
import info.nightscout.androidaps.utils.HardLimits
import info.nightscout.androidaps.utils.Profiler
import info.nightscout.androidaps.utils.buildHelper.BuildHelper
@@ -58,9 +59,11 @@ class ConstraintsCheckerTest : TestBaseWithProfile() {
@Mock lateinit var glimpPlugin: GlimpPlugin
@Mock lateinit var sensitivityOref1Plugin: SensitivityOref1Plugin
@Mock lateinit var profiler: Profiler
+ @Mock lateinit var nsUpload: NSUpload
+ @Mock lateinit var uploadQueue: UploadQueue
- private var buildHelper = BuildHelper()
- lateinit var danaRPump: DanaRPump
+ private var buildHelper = BuildHelper(Config())
+ lateinit var danaPump: DanaPump
lateinit var constraintChecker: ConstraintChecker
private lateinit var safetyPlugin: SafetyPlugin
@@ -110,16 +113,16 @@ class ConstraintsCheckerTest : TestBaseWithProfile() {
`when`(activePlugin.activePump).thenReturn(virtualPumpPlugin)
constraintChecker = ConstraintChecker(activePlugin)
- danaRPump = DanaRPump(aapsLogger, sp, injector)
- hardLimits = HardLimits(aapsLogger, rxBus, sp, resourceHelper, context)
- objectivesPlugin = ObjectivesPlugin(injector, aapsLogger, resourceHelper, activePlugin, sp)
+ danaPump = DanaPump(aapsLogger, sp, injector)
+ hardLimits = HardLimits(aapsLogger, rxBus, sp, resourceHelper, context, nsUpload)
+ objectivesPlugin = ObjectivesPlugin(injector, aapsLogger, resourceHelper, activePlugin, sp, Config())
comboPlugin = ComboPlugin(injector, aapsLogger, rxBus, resourceHelper, profileFunction, treatmentsPlugin, sp, commandQueue, context)
- danaRPlugin = DanaRPlugin(injector, aapsLogger, rxBus, context, resourceHelper, constraintChecker, treatmentsPlugin, sp, commandQueue, danaRPump)
- danaRSPlugin = DanaRSPlugin(injector, aapsLogger, rxBus, context, resourceHelper, constraintChecker, profileFunction, treatmentsPlugin, sp, commandQueue, danaRPump, detailedBolusInfoStorage)
- insightPlugin = LocalInsightPlugin(injector, aapsLogger, rxBus, resourceHelper, treatmentsPlugin, sp, commandQueue, profileFunction, context)
- openAPSSMBPlugin = OpenAPSSMBPlugin(injector, aapsLogger, rxBus, constraintChecker, resourceHelper, profileFunction, context, activePlugin, treatmentsPlugin, iobCobCalculatorPlugin, hardLimits, profiler, fabricPrivacy)
+ danaRPlugin = DanaRPlugin(injector, aapsLogger, rxBus, context, resourceHelper, constraintChecker, activePlugin, sp, commandQueue, danaPump, dateUtil, fabricPrivacy)
+ danaRSPlugin = DanaRSPlugin(injector, aapsLogger, rxBus, context, resourceHelper, constraintChecker, profileFunction, activePluginProvider, sp, commandQueue, danaPump, detailedBolusInfoStorage, fabricPrivacy, dateUtil)
+ insightPlugin = LocalInsightPlugin(injector, aapsLogger, rxBus, resourceHelper, treatmentsPlugin, sp, commandQueue, profileFunction, nsUpload, context, uploadQueue, Config(), dateUtil)
+ openAPSSMBPlugin = OpenAPSSMBPlugin(injector, aapsLogger, rxBus, constraintChecker, resourceHelper, profileFunction, context, activePlugin, treatmentsPlugin, iobCobCalculatorPlugin, hardLimits, profiler, fabricPrivacy, sp)
openAPSAMAPlugin = OpenAPSAMAPlugin(injector, aapsLogger, rxBus, constraintChecker, resourceHelper, profileFunction, context, activePlugin, treatmentsPlugin, iobCobCalculatorPlugin, hardLimits, profiler, fabricPrivacy)
- safetyPlugin = SafetyPlugin(injector, aapsLogger, resourceHelper, sp, rxBus, constraintChecker, openAPSAMAPlugin, openAPSSMBPlugin, sensitivityOref1Plugin, activePlugin, hardLimits, buildHelper, treatmentsPlugin)
+ safetyPlugin = SafetyPlugin(injector, aapsLogger, resourceHelper, sp, rxBus, constraintChecker, openAPSAMAPlugin, openAPSSMBPlugin, sensitivityOref1Plugin, activePlugin, hardLimits, buildHelper, treatmentsPlugin, Config())
val constraintsPluginsList = ArrayList()
constraintsPluginsList.add(safetyPlugin)
constraintsPluginsList.add(objectivesPlugin)
@@ -218,7 +221,7 @@ class ConstraintsCheckerTest : TestBaseWithProfile() {
// DanaR, RS
danaRPlugin.setPluginEnabled(PluginType.PUMP, true)
danaRSPlugin.setPluginEnabled(PluginType.PUMP, true)
- danaRPump.maxBasal = 0.8
+ danaPump.maxBasal = 0.8
// Insight
// insightPlugin.setPluginEnabled(PluginType.PUMP, true);
@@ -245,7 +248,7 @@ class ConstraintsCheckerTest : TestBaseWithProfile() {
// DanaR, RS
danaRPlugin.setPluginEnabled(PluginType.PUMP, true)
danaRSPlugin.setPluginEnabled(PluginType.PUMP, true)
- danaRPump.maxBasal = 0.8
+ danaPump.maxBasal = 0.8
// Insight
// insightPlugin.setPluginEnabled(PluginType.PUMP, true);
@@ -274,7 +277,7 @@ class ConstraintsCheckerTest : TestBaseWithProfile() {
// DanaR, RS
danaRPlugin.setPluginEnabled(PluginType.PUMP, true)
danaRSPlugin.setPluginEnabled(PluginType.PUMP, true)
- danaRPump.maxBolus = 6.0
+ danaPump.maxBolus = 6.0
// Insight
// insightPlugin.setPluginEnabled(PluginType.PUMP, true);
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/aps/loop/LoopPluginTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/aps/loop/LoopPluginTest.kt
index 40495880a3..7d35e2f1b2 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/aps/loop/LoopPluginTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/aps/loop/LoopPluginTest.kt
@@ -9,10 +9,11 @@ import info.nightscout.androidaps.TestBase
import info.nightscout.androidaps.interfaces.ActivePluginProvider
import info.nightscout.androidaps.interfaces.CommandQueueProvider
import info.nightscout.androidaps.interfaces.PluginType
+import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.interfaces.PumpDescription
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
+import info.nightscout.androidaps.plugins.general.nsclient.NSUpload
import info.nightscout.androidaps.plugins.general.wear.ActionStringHandler
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin
import info.nightscout.androidaps.plugins.pump.virtual.VirtualPumpPlugin
@@ -49,6 +50,7 @@ class LoopPluginTest : TestBase() {
@Mock lateinit var iobCobCalculatorPlugin: IobCobCalculatorPlugin
@Mock lateinit var fabricPrivacy: FabricPrivacy
@Mock lateinit var receiverStatusStore: ReceiverStatusStore
+ @Mock lateinit var nsUpload: NSUpload
private lateinit var hardLimits: HardLimits
@@ -56,9 +58,9 @@ class LoopPluginTest : TestBase() {
val injector = HasAndroidInjector { AndroidInjector { } }
@Before fun prepareMock() {
- hardLimits = HardLimits(aapsLogger, rxBus, sp, resourceHelper, context)
+ hardLimits = HardLimits(aapsLogger, rxBus, sp, resourceHelper, context, nsUpload)
- loopPlugin = LoopPlugin(injector, aapsLogger, rxBus, sp, constraintChecker, resourceHelper, profileFunction, context, commandQueue, activePlugin, treatmentsPlugin, virtualPumpPlugin, actionStringHandler, iobCobCalculatorPlugin, receiverStatusStore, fabricPrivacy, hardLimits)
+ loopPlugin = LoopPlugin(injector, aapsLogger, rxBus, sp, constraintChecker, resourceHelper, profileFunction, context, commandQueue, activePlugin, treatmentsPlugin, virtualPumpPlugin, actionStringHandler, iobCobCalculatorPlugin, receiverStatusStore, fabricPrivacy, nsUpload, hardLimits)
`when`(activePlugin.getActivePump()).thenReturn(virtualPumpPlugin)
}
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 b4dc882882..a0cd07823e 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
@@ -2,11 +2,11 @@ package info.nightscout.androidaps.plugins.constraints.objectives
import dagger.android.AndroidInjector
import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.Config
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.AAPSLogger
import info.nightscout.androidaps.plugins.constraints.objectives.objectives.Objective
import info.nightscout.androidaps.utils.DateUtil
import info.nightscout.androidaps.utils.resources.ResourceHelper
@@ -38,7 +38,7 @@ class ObjectivesPluginTest : TestBase() {
}
@Before fun prepareMock() {
- objectivesPlugin = ObjectivesPlugin(injector, aapsLogger, resourceHelper, activePlugin, sp)
+ objectivesPlugin = ObjectivesPlugin(injector, aapsLogger, resourceHelper, activePlugin, sp, Config())
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/constraints/safety/SafetyPluginTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/constraints/safety/SafetyPluginTest.kt
index 3e36b8bca0..4f85fb9b02 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/constraints/safety/SafetyPluginTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/constraints/safety/SafetyPluginTest.kt
@@ -3,6 +3,7 @@ package info.nightscout.androidaps.plugins.constraints.safety
import android.content.Context
import dagger.android.AndroidInjector
import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.Config
import info.nightscout.androidaps.Constants
import info.nightscout.androidaps.R
import info.nightscout.androidaps.TestBaseWithProfile
@@ -12,6 +13,7 @@ import info.nightscout.androidaps.interfaces.PumpDescription
import info.nightscout.androidaps.plugins.aps.openAPSAMA.OpenAPSAMAPlugin
import info.nightscout.androidaps.plugins.aps.openAPSSMB.OpenAPSSMBPlugin
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
+import info.nightscout.androidaps.plugins.general.nsclient.NSUpload
import info.nightscout.androidaps.plugins.pump.virtual.VirtualPumpPlugin
import info.nightscout.androidaps.plugins.sensitivity.SensitivityOref1Plugin
import info.nightscout.androidaps.plugins.source.GlimpPlugin
@@ -41,6 +43,7 @@ class SafetyPluginTest : TestBaseWithProfile() {
@Mock lateinit var virtualPumpPlugin: VirtualPumpPlugin
@Mock lateinit var glimpPlugin: GlimpPlugin
@Mock lateinit var context: Context
+ @Mock lateinit var nsUpload: NSUpload
private lateinit var hardLimits: HardLimits
private lateinit var safetyPlugin: SafetyPlugin
@@ -72,8 +75,8 @@ class SafetyPluginTest : TestBaseWithProfile() {
`when`(activePlugin.activePump).thenReturn(virtualPumpPlugin)
`when`(virtualPumpPlugin.pumpDescription).thenReturn(pumpDescription)
- hardLimits = HardLimits(aapsLogger, rxBus, sp, resourceHelper, context)
- safetyPlugin = SafetyPlugin(injector, aapsLogger, resourceHelper, sp, rxBus, constraintChecker, openAPSAMAPlugin, openAPSSMBPlugin, sensitivityOref1Plugin, activePlugin, hardLimits, buildHelper, treatmentsPlugin)
+ hardLimits = HardLimits(aapsLogger, rxBus, sp, resourceHelper, context, nsUpload)
+ safetyPlugin = SafetyPlugin(injector, aapsLogger, resourceHelper, sp, rxBus, constraintChecker, openAPSAMAPlugin, openAPSSMBPlugin, sensitivityOref1Plugin, activePlugin, hardLimits, buildHelper, treatmentsPlugin, Config())
}
@Test fun pumpDescriptionShouldLimitLoopInvocation() {
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 a2422d44d8..06307d2347 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
@@ -5,7 +5,6 @@ import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.R
import info.nightscout.androidaps.TestBase
import info.nightscout.androidaps.data.PumpEnactResult
-import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.automation.elements.InputString
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload
@@ -29,6 +28,7 @@ class ActionNotificationTest : TestBase() {
@Mock lateinit var resourceHelper: ResourceHelper
@Mock lateinit var rxBus: RxBusWrapper
+ @Mock lateinit var nsUpload: NSUpload
private lateinit var sut: ActionNotification
var injector: HasAndroidInjector = HasAndroidInjector {
@@ -36,6 +36,7 @@ class ActionNotificationTest : TestBase() {
if (it is ActionNotification) {
it.resourceHelper = resourceHelper
it.rxBus = rxBus
+ it.nsUpload = nsUpload
}
if (it is PumpEnactResult) {
it.aapsLogger = aapsLogger
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionProfileSwitchPercentTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionProfileSwitchPercentTest.kt
index 1cc417276e..dd324e3373 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionProfileSwitchPercentTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionProfileSwitchPercentTest.kt
@@ -38,7 +38,7 @@ class ActionProfileSwitchPercentTest : ActionsTestBase() {
}
@Test fun iconTest() {
- Assert.assertEquals(R.drawable.icon_actions_profileswitch, sut.icon())
+ Assert.assertEquals(R.drawable.ic_actions_profileswitch, sut.icon())
}
@Test fun doActionTest() {
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionProfileSwitchTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionProfileSwitchTest.kt
index f51e667682..569ab4d0da 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionProfileSwitchTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionProfileSwitchTest.kt
@@ -116,6 +116,6 @@ class ActionProfileSwitchTest : ActionsTestBase() {
}
@Test fun iconTest() {
- Assert.assertEquals(R.drawable.icon_actions_profileswitch, sut.icon())
+ Assert.assertEquals(R.drawable.ic_actions_profileswitch, sut.icon())
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionStartTempTargetTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionStartTempTargetTest.kt
index fe4abf1d7c..0bf99824ec 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionStartTempTargetTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionStartTempTargetTest.kt
@@ -24,7 +24,6 @@ class ActionStartTempTargetTest : ActionsTestBase() {
@Before
fun setup() {
- PowerMockito.mockStatic(MainApp::class.java)
`when`(resourceHelper.gs(R.string.starttemptarget)).thenReturn("Start temp target")
sut = ActionStartTempTarget(injector)
@@ -42,7 +41,7 @@ class ActionStartTempTargetTest : ActionsTestBase() {
}
@Test fun iconTest() {
- Assert.assertEquals(R.drawable.icon_cp_cgm_target, sut.icon())
+ Assert.assertEquals(R.drawable.ic_cp_cgm_target, sut.icon())
}
@Test fun doActionTest() {
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionsTestBase.kt b/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionsTestBase.kt
index 45e7f5c51d..84e90208ed 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionsTestBase.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/actions/ActionsTestBase.kt
@@ -2,23 +2,22 @@ package info.nightscout.androidaps.plugins.general.automation.actions
import dagger.android.AndroidInjector
import dagger.android.HasAndroidInjector
-import info.nightscout.androidaps.TestBase
+import info.nightscout.androidaps.Constants
import info.nightscout.androidaps.TestBaseWithProfile
import info.nightscout.androidaps.data.PumpEnactResult
import info.nightscout.androidaps.interfaces.ActivePluginProvider
import info.nightscout.androidaps.interfaces.CommandQueueProvider
-import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
+import info.nightscout.androidaps.plugins.general.automation.elements.InputTempTarget
import info.nightscout.androidaps.plugins.general.smsCommunicator.SmsCommunicatorPlugin
import info.nightscout.androidaps.plugins.profile.local.LocalProfilePlugin
import info.nightscout.androidaps.plugins.pump.virtual.VirtualPumpPlugin
-import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
-import info.nightscout.androidaps.utils.resources.ResourceHelper
import info.nightscout.androidaps.utils.sharedPreferences.SP
+import org.junit.Before
import org.mockito.Mock
+import org.mockito.Mockito.`when`
import org.powermock.core.classloader.annotations.PrepareForTest
@PrepareForTest(VirtualPumpPlugin::class, RxBusWrapper::class, LocalProfilePlugin::class, SmsCommunicatorPlugin::class, ConfigBuilderPlugin::class)
@@ -30,8 +29,8 @@ open class ActionsTestBase : TestBaseWithProfile() {
@Mock lateinit var virtualPumpPlugin: VirtualPumpPlugin
@Mock lateinit var loopPlugin: LoopPlugin
@Mock lateinit var activePlugin: ActivePluginProvider
- @Mock lateinit var localProfilePlugin : LocalProfilePlugin
- @Mock lateinit var smsCommunicatorPlugin : SmsCommunicatorPlugin
+ @Mock lateinit var localProfilePlugin: LocalProfilePlugin
+ @Mock lateinit var smsCommunicatorPlugin: SmsCommunicatorPlugin
var injector: HasAndroidInjector = HasAndroidInjector {
AndroidInjector {
@@ -92,7 +91,14 @@ open class ActionsTestBase : TestBaseWithProfile() {
it.aapsLogger = aapsLogger
it.resourceHelper = resourceHelper
}
+ if (it is InputTempTarget) {
+ it.profileFunction = profileFunction
+ }
}
}
+ @Before
+ fun mock() {
+ `when`(profileFunction.getUnits()).thenReturn(Constants.MGDL)
+ }
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/elements/InputTempTargetTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/elements/InputTempTargetTest.kt
index d98ca75f1c..b137a8ef9b 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/elements/InputTempTargetTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/elements/InputTempTargetTest.kt
@@ -1,10 +1,12 @@
package info.nightscout.androidaps.plugins.general.automation.elements
import info.nightscout.androidaps.Constants
+import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.plugins.general.automation.triggers.TriggerTestBase
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
+import org.mockito.Mock
import org.powermock.modules.junit4.PowerMockRunner
@RunWith(PowerMockRunner::class)
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerAutosensValueTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerAutosensValueTest.kt
index a91fcf6d06..54c4381923 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerAutosensValueTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerAutosensValueTest.kt
@@ -3,7 +3,7 @@ package info.nightscout.androidaps.plugins.general.automation.triggers
import com.google.common.base.Optional
import info.nightscout.androidaps.R
import info.nightscout.androidaps.plugins.general.automation.elements.Comparator
-import info.nightscout.androidaps.plugins.iob.iobCobCalculator.AutosensData
+import info.nightscout.androidaps.plugins.iob.iobCobCalculator.data.AutosensData
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin
import info.nightscout.androidaps.utils.DateUtil
import org.json.JSONObject
@@ -110,7 +110,7 @@ class TriggerAutosensValueTest : TriggerTestBase() {
}
@Test fun iconTest() {
- Assert.assertEquals(Optional.of(R.drawable.`as`), TriggerAutosensValue(injector).icon())
+ Assert.assertEquals(Optional.of(R.drawable.`ic_as`), TriggerAutosensValue(injector).icon())
}
@Before
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerBgTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerBgTest.kt
index 61c1f869ba..4d8e2b5442 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerBgTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerBgTest.kt
@@ -4,7 +4,7 @@ import com.google.common.base.Optional
import info.nightscout.androidaps.Constants
import info.nightscout.androidaps.R
import info.nightscout.androidaps.db.BgReading
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
+import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.plugins.general.automation.elements.Comparator
import info.nightscout.androidaps.plugins.general.nsclient.data.NSSgv
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin
@@ -90,12 +90,12 @@ class TriggerBgTest : TriggerTestBase() {
@Test
fun iconTest() {
- Assert.assertEquals(Optional.of(R.drawable.icon_cp_bgcheck), TriggerBg(injector).icon())
+ Assert.assertEquals(Optional.of(R.drawable.ic_cp_bgcheck), TriggerBg(injector).icon())
}
private fun generateOneCurrentRecordBgData(): List {
val list: MutableList = ArrayList()
- list.add(BgReading(NSSgv(JSONObject("{\"mgdl\":214,\"mills\":" + (now - 1) + ",\"direction\":\"Flat\"}"))))
+ list.add(BgReading(injector, NSSgv(JSONObject("{\"mgdl\":214,\"mills\":" + (now - 1) + ",\"direction\":\"Flat\"}"))))
return list
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerBolusAgoTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerBolusAgoTest.kt
index fbc4cd8a8b..b1aefd5b3a 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerBolusAgoTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerBolusAgoTest.kt
@@ -30,7 +30,7 @@ class TriggerBolusAgoTest : TriggerTestBase() {
@Test
fun shouldRunTest() {
- `when`(treatmentsPlugin.getLastBolusTime(false)).thenReturn(now) // Set last bolus time to now
+ `when`(treatmentsPlugin.getLastBolusTime(true)).thenReturn(now) // Set last bolus time to now
`when`(DateUtil.now()).thenReturn(now + 10 * 60 * 1000) // set current time to now + 10 min
var t = TriggerBolusAgo(injector).setValue(110).comparator(Comparator.Compare.IS_EQUAL)
Assert.assertEquals(110, t.minutesAgo.value)
@@ -53,7 +53,7 @@ class TriggerBolusAgoTest : TriggerTestBase() {
Assert.assertTrue(t.shouldRun())
t = TriggerBolusAgo(injector).setValue(390).comparator(Comparator.Compare.IS_EQUAL_OR_LESSER)
Assert.assertTrue(t.shouldRun())
- PowerMockito.`when`(treatmentsPlugin.getLastBolusTime(false)).thenReturn(0L) // Set last bolus time to 0
+ PowerMockito.`when`(treatmentsPlugin.getLastBolusTime(true)).thenReturn(0L) // Set last bolus time to 0
t = TriggerBolusAgo(injector).comparator(Comparator.Compare.IS_NOT_AVAILABLE)
Assert.assertTrue(t.shouldRun())
}
@@ -79,6 +79,6 @@ class TriggerBolusAgoTest : TriggerTestBase() {
}
@Test fun iconTest() {
- Assert.assertEquals(Optional.of(R.drawable.icon_bolus), TriggerBolusAgo(injector).icon())
+ Assert.assertEquals(Optional.of(R.drawable.ic_bolus), TriggerBolusAgo(injector).icon())
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerCOBTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerCOBTest.kt
index b864e0aed8..0c2a942a3e 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerCOBTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerCOBTest.kt
@@ -70,7 +70,7 @@ class TriggerCOBTest : TriggerTestBase() {
}
@Test fun iconTest() {
- Assert.assertEquals(Optional.of(R.drawable.icon_cp_bolus_carbs), TriggerCOB(injector).icon())
+ Assert.assertEquals(Optional.of(R.drawable.ic_cp_bolus_carbs), TriggerCOB(injector).icon())
}
fun generateCobInfo(): CobInfo {
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerDeltaTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerDeltaTest.kt
index 47422cd41f..acbc3bb5dd 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerDeltaTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerDeltaTest.kt
@@ -4,7 +4,7 @@ import com.google.common.base.Optional
import info.nightscout.androidaps.Constants
import info.nightscout.androidaps.R
import info.nightscout.androidaps.db.BgReading
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
+import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.plugins.general.automation.elements.Comparator
import info.nightscout.androidaps.plugins.general.automation.elements.InputDelta.DeltaType
import info.nightscout.androidaps.plugins.general.nsclient.data.NSSgv
@@ -93,7 +93,7 @@ class TriggerDeltaTest : TriggerTestBase() {
}
@Test fun iconTest() {
- Assert.assertEquals(Optional.of(R.drawable.icon_auto_delta), TriggerDelta(injector).icon())
+ Assert.assertEquals(Optional.of(R.drawable.ic_auto_delta), TriggerDelta(injector).icon())
}
@Test fun initializerTest() {
@@ -103,14 +103,14 @@ class TriggerDeltaTest : TriggerTestBase() {
private fun generateValidBgData(): List {
val list: MutableList = ArrayList()
- list.add(BgReading(NSSgv(JSONObject("{\"mgdl\":214,\"mills\":1514766900000,\"direction\":\"Flat\"}"))))
- list.add(BgReading(NSSgv(JSONObject("{\"mgdl\":216,\"mills\":1514766600000,\"direction\":\"Flat\"}")))) // +2
- list.add(BgReading(NSSgv(JSONObject("{\"mgdl\":219,\"mills\":1514766300000,\"direction\":\"Flat\"}")))) // +3
- list.add(BgReading(NSSgv(JSONObject("{\"mgdl\":223,\"mills\":1514766000000,\"direction\":\"Flat\"}")))) // +4
- list.add(BgReading(NSSgv(JSONObject("{\"mgdl\":222,\"mills\":1514765700000,\"direction\":\"Flat\"}"))))
- list.add(BgReading(NSSgv(JSONObject("{\"mgdl\":224,\"mills\":1514765400000,\"direction\":\"Flat\"}"))))
- list.add(BgReading(NSSgv(JSONObject("{\"mgdl\":226,\"mills\":1514765100000,\"direction\":\"Flat\"}"))))
- list.add(BgReading(NSSgv(JSONObject("{\"mgdl\":228,\"mills\":1514764800000,\"direction\":\"Flat\"}"))))
+ list.add(BgReading(injector, NSSgv(JSONObject("{\"mgdl\":214,\"mills\":1514766900000,\"direction\":\"Flat\"}"))))
+ list.add(BgReading(injector, NSSgv(JSONObject("{\"mgdl\":216,\"mills\":1514766600000,\"direction\":\"Flat\"}")))) // +2
+ list.add(BgReading(injector, NSSgv(JSONObject("{\"mgdl\":219,\"mills\":1514766300000,\"direction\":\"Flat\"}")))) // +3
+ list.add(BgReading(injector, NSSgv(JSONObject("{\"mgdl\":223,\"mills\":1514766000000,\"direction\":\"Flat\"}")))) // +4
+ list.add(BgReading(injector, NSSgv(JSONObject("{\"mgdl\":222,\"mills\":1514765700000,\"direction\":\"Flat\"}"))))
+ list.add(BgReading(injector, NSSgv(JSONObject("{\"mgdl\":224,\"mills\":1514765400000,\"direction\":\"Flat\"}"))))
+ list.add(BgReading(injector, NSSgv(JSONObject("{\"mgdl\":226,\"mills\":1514765100000,\"direction\":\"Flat\"}"))))
+ list.add(BgReading(injector, NSSgv(JSONObject("{\"mgdl\":228,\"mills\":1514764800000,\"direction\":\"Flat\"}"))))
return list
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerProfilePercentTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerProfilePercentTest.kt
index 9a03087c4e..eccbf1a3e2 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerProfilePercentTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerProfilePercentTest.kt
@@ -69,7 +69,7 @@ class TriggerProfilePercentTest : TriggerTestBase() {
}
@Test fun iconTest() {
- Assert.assertEquals(Optional.of(R.drawable.icon_actions_profileswitch), TriggerProfilePercent(injector).icon())
+ Assert.assertEquals(Optional.of(R.drawable.ic_actions_profileswitch), TriggerProfilePercent(injector).icon())
}
@Test fun friendlyNameTest() {
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerPumpLastConnectionTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerPumpLastConnectionTest.kt
index d834fcd642..692143d7e2 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerPumpLastConnectionTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerPumpLastConnectionTest.kt
@@ -73,7 +73,7 @@ class TriggerPumpLastConnectionTest : TriggerTestBase() {
}
@Test fun iconTest() {
- Assert.assertEquals(Optional.of(R.drawable.remove), TriggerPumpLastConnection(injector).icon())
+ Assert.assertEquals(Optional.of(R.drawable.ic_remove), TriggerPumpLastConnection(injector).icon())
}
@Test fun friendlyNameTest() {
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerRecurringTimeTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerRecurringTimeTest.kt
index 566a0b4c7b..d23b8e8428 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerRecurringTimeTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerRecurringTimeTest.kt
@@ -1,6 +1,8 @@
package info.nightscout.androidaps.plugins.general.automation.triggers
import info.nightscout.androidaps.utils.DateUtil
+import info.nightscout.androidaps.utils.MidnightTime
+import info.nightscout.androidaps.utils.T
import org.json.JSONObject
import org.junit.Assert
import org.junit.Before
@@ -14,32 +16,23 @@ import org.powermock.modules.junit4.PowerMockRunner
@PrepareForTest(DateUtil::class)
class TriggerRecurringTimeTest : TriggerTestBase() {
- var now = 1514766900000L
+ var now : Long = 0L
@Before fun mock() {
- PowerMockito.mockStatic(DateUtil::class.java)
- PowerMockito.`when`(DateUtil.now()).thenReturn(now)
-// val calendar = GregorianCalendar()
-// calendar.timeInMillis = now
-// PowerMockito.`when`(DateUtil.gregorianCalendar()).thenReturn(calendar)
+ now = MidnightTime.calc() + T.mins(95).msecs() // 95 min from midnight
+ PowerMockito.`when`(dateUtil._now()).thenReturn(now)
}
@Test fun shouldRunTest() {
- // limit by validTo
- var t: TriggerRecurringTime = TriggerRecurringTime(injector).time(94)
+ var t: TriggerRecurringTime = TriggerRecurringTime(injector).time(89)
t.days.setAll(true)
Assert.assertFalse(t.shouldRun())
// scheduled 1 min before
-// t = new TriggerRecurringTime().hour(1).minute(34);
-// t.setAll(true);
-// Assert.assertTrue(t.shouldRun());
-
- // already run
t = TriggerRecurringTime(injector).time(94)
t.days.setAll(true)
- Assert.assertFalse(t.shouldRun())
+ Assert.assertTrue(t.shouldRun())
}
private var timeJson = "{\"data\":{\"WEDNESDAY\":false,\"MONDAY\":false,\"THURSDAY\":false,\"SUNDAY\":false,\"TUESDAY\":false,\"FRIDAY\":false,\"SATURDAY\":false,\"time\":4444},\"type\":\"info.nightscout.androidaps.plugins.general.automation.triggers.TriggerRecurringTime\"}"
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerTestBase.kt b/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerTestBase.kt
index a886ef27c6..bda0b5c532 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerTestBase.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/general/automation/triggers/TriggerTestBase.kt
@@ -4,11 +4,13 @@ import android.content.Context
import dagger.android.AndroidInjector
import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.TestBaseWithProfile
+import info.nightscout.androidaps.db.BgReading
import info.nightscout.androidaps.interfaces.ActivePluginProvider
+import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
import info.nightscout.androidaps.plugins.general.automation.AutomationPlugin
import info.nightscout.androidaps.plugins.general.automation.elements.InputBg
+import info.nightscout.androidaps.plugins.general.automation.elements.InputTempTarget
import info.nightscout.androidaps.plugins.general.automation.elements.StaticLabel
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin
@@ -52,6 +54,15 @@ open class TriggerTestBase : TestBaseWithProfile() {
if (it is TriggerBg) {
it.profileFunction = profileFunction
}
+ if (it is TriggerTime) {
+ it.dateUtil = dateUtil
+ }
+ if (it is TriggerTimeRange) {
+ it.dateUtil = dateUtil
+ }
+ if (it is TriggerRecurringTime) {
+ it.dateUtil = dateUtil
+ }
if (it is TriggerBTDevice) {
it.context = context
it.automationPlugin = automationPlugin
@@ -62,6 +73,9 @@ open class TriggerTestBase : TestBaseWithProfile() {
if (it is InputBg) {
it.profileFunction = profileFunction
}
+ if (it is InputTempTarget) {
+ it.profileFunction = profileFunction
+ }
if (it is GlucoseStatus) {
it.aapsLogger = aapsLogger
it.iobCobCalculatorPlugin = iobCobCalculatorPlugin
@@ -69,6 +83,9 @@ open class TriggerTestBase : TestBaseWithProfile() {
if (it is StaticLabel) {
it.resourceHelper = resourceHelper
}
+ if (it is BgReading) {
+ it.dateUtil = dateUtil
+ }
}
}
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/general/maintenance/MaintenancePluginTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/general/maintenance/MaintenancePluginTest.kt
index e66c001aee..26706da190 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/general/maintenance/MaintenancePluginTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/general/maintenance/MaintenancePluginTest.kt
@@ -2,8 +2,8 @@ package info.nightscout.androidaps.plugins.general.maintenance
import android.content.Context
import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.Config
import info.nightscout.androidaps.TestBase
-import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.plugins.general.nsclient.data.NSSettingsStatus
import info.nightscout.androidaps.utils.buildHelper.BuildHelper
import info.nightscout.androidaps.utils.resources.ResourceHelper
@@ -32,7 +32,7 @@ class MaintenancePluginTest : TestBase() {
@Before
fun mock() {
- sut = MaintenancePlugin(injector, context, resourceHelper, sp, nsSettingsStatus, aapsLogger, buildHelper)
+ sut = MaintenancePlugin(injector, context, resourceHelper, sp, nsSettingsStatus, aapsLogger, buildHelper, Config())
}
@Test fun logfilesTest() {
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/general/nsclient/NsClientReceiverDelegateTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/general/nsclient/NsClientReceiverDelegateTest.kt
index b0441c289f..b3a275d255 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/general/nsclient/NsClientReceiverDelegateTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/general/nsclient/NsClientReceiverDelegateTest.kt
@@ -14,13 +14,11 @@ import org.junit.Assert
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-import org.mockito.ArgumentMatchers
import org.mockito.ArgumentMatchers.anyBoolean
import org.mockito.ArgumentMatchers.anyInt
import org.mockito.ArgumentMatchers.anyLong
import org.mockito.ArgumentMatchers.anyString
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
@@ -51,12 +49,12 @@ class NsClientReceiverDelegateTest : TestBase() {
@Test fun testCalculateStatusChargingState() {
PowerMockito.mockStatic(SP::class.java)
- Mockito.`when`(sp.getBoolean(ArgumentMatchers.anyInt(), ArgumentMatchers.anyBoolean())).thenReturn(false)
+ `when`(sp.getBoolean(anyInt(), anyBoolean())).thenReturn(false)
var ev = EventChargingState(true, 0)
Assert.assertTrue(sut!!.calculateStatus(ev))
ev = EventChargingState(false, 0)
Assert.assertTrue(sut!!.calculateStatus(ev))
- Mockito.`when`(sp.getBoolean(ArgumentMatchers.anyInt(), ArgumentMatchers.anyBoolean())).thenReturn(true)
+ `when`(sp.getBoolean(anyInt(), anyBoolean())).thenReturn(true)
ev = EventChargingState(true, 0)
Assert.assertTrue(sut!!.calculateStatus(ev))
ev = EventChargingState(false, 0)
@@ -67,24 +65,24 @@ class NsClientReceiverDelegateTest : TestBase() {
PowerMockito.mockStatic(SP::class.java)
// wifiOnly = false
// allowRoaming = false as well
- Mockito.`when`(sp.getBoolean(ArgumentMatchers.anyInt(), ArgumentMatchers.anyBoolean())).thenReturn(false)
- Mockito.`when`(sp.getString(ArgumentMatchers.anyInt(), ArgumentMatchers.anyString())).thenReturn("")
+ `when`(sp.getBoolean(anyInt(), anyBoolean())).thenReturn(false)
+ `when`(sp.getString(anyInt(), anyString())).thenReturn("")
val ev = EventNetworkChange()
ev.ssid = ""
ev.mobileConnected = true
ev.wifiConnected = true
Assert.assertTrue(sut!!.calculateStatus(ev))
ev.ssid = "test"
- Mockito.`when`(sp.getString(ArgumentMatchers.anyInt(), ArgumentMatchers.anyString())).thenReturn("\"test\"")
+ `when`(sp.getString(anyInt(), anyString())).thenReturn("test")
Assert.assertTrue(sut!!.calculateStatus(ev))
- ev.ssid = "\"test\""
+ ev.ssid = "test"
Assert.assertTrue(sut!!.calculateStatus(ev))
ev.wifiConnected = false
Assert.assertTrue(sut!!.calculateStatus(ev))
// wifiOnly = true
// allowRoaming = true as well
- Mockito.`when`(sp.getBoolean(ArgumentMatchers.anyInt(), ArgumentMatchers.anyBoolean())).thenReturn(true)
+ `when`(sp.getBoolean(anyInt(), anyBoolean())).thenReturn(true)
ev.wifiConnected = true
Assert.assertTrue(sut!!.calculateStatus(ev))
ev.wifiConnected = false
@@ -92,39 +90,39 @@ class NsClientReceiverDelegateTest : TestBase() {
// wifiOnly = false
// allowRoaming = false as well
- Mockito.`when`(sp.getBoolean(ArgumentMatchers.anyInt(), ArgumentMatchers.anyBoolean())).thenReturn(false)
+ `when`(sp.getBoolean(anyInt(), anyBoolean())).thenReturn(false)
ev.wifiConnected = false
ev.roaming = true
Assert.assertTrue(!sut!!.calculateStatus(ev))
// wifiOnly = false
// allowRoaming = true
- Mockito.`when`(sp.getBoolean(R.string.key_ns_wifionly, false)).thenReturn(false)
- Mockito.`when`(sp.getBoolean(R.string.key_ns_allowroaming, true)).thenReturn(true)
+ `when`(sp.getBoolean(R.string.key_ns_wifionly, false)).thenReturn(false)
+ `when`(sp.getBoolean(R.string.key_ns_allowroaming, true)).thenReturn(true)
ev.wifiConnected = false
ev.roaming = true
Assert.assertTrue(sut!!.calculateStatus(ev))
// wifiOnly = true
// allowRoaming = true
- Mockito.`when`(sp.getBoolean(R.string.key_ns_wifionly, false)).thenReturn(true)
- Mockito.`when`(sp.getBoolean(R.string.key_ns_allowroaming, true)).thenReturn(true)
+ `when`(sp.getBoolean(R.string.key_ns_wifionly, false)).thenReturn(true)
+ `when`(sp.getBoolean(R.string.key_ns_allowroaming, true)).thenReturn(true)
ev.wifiConnected = false
ev.roaming = true
Assert.assertTrue(!sut!!.calculateStatus(ev))
// wifiOnly = true
// allowRoaming = true
- Mockito.`when`(sp.getBoolean(R.string.key_ns_wifionly, false)).thenReturn(true)
- Mockito.`when`(sp.getBoolean(R.string.key_ns_allowroaming, true)).thenReturn(true)
+ `when`(sp.getBoolean(R.string.key_ns_wifionly, false)).thenReturn(true)
+ `when`(sp.getBoolean(R.string.key_ns_allowroaming, true)).thenReturn(true)
ev.wifiConnected = true
ev.roaming = true
Assert.assertTrue(sut!!.calculateStatus(ev))
// wifiOnly = false
// allowRoaming = false
- Mockito.`when`(sp.getBoolean(R.string.key_ns_wifionly, false)).thenReturn(false)
- Mockito.`when`(sp.getBoolean(R.string.key_ns_allowroaming, true)).thenReturn(false)
+ `when`(sp.getBoolean(R.string.key_ns_wifionly, false)).thenReturn(false)
+ `when`(sp.getBoolean(R.string.key_ns_allowroaming, true)).thenReturn(false)
ev.wifiConnected = true
ev.roaming = true
Assert.assertTrue(sut!!.calculateStatus(ev))
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 aa3f522264..e0d6a5b8ef 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
@@ -1,8 +1,10 @@
package info.nightscout.androidaps.plugins.general.smsCommunicator
+import android.content.Context
import android.telephony.SmsManager
import dagger.android.AndroidInjector
import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.Config
import info.nightscout.androidaps.Constants
import info.nightscout.androidaps.R
import info.nightscout.androidaps.TestBaseWithProfile
@@ -16,7 +18,6 @@ import info.nightscout.androidaps.interfaces.PluginType
import info.nightscout.androidaps.interfaces.PumpDescription
import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
import info.nightscout.androidaps.plugins.general.smsCommunicator.otp.OneTimePassword
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.CobInfo
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus
@@ -26,7 +27,10 @@ import info.nightscout.androidaps.plugins.pump.virtual.VirtualPumpPlugin
import info.nightscout.androidaps.plugins.treatments.TreatmentService
import info.nightscout.androidaps.queue.Callback
import info.nightscout.androidaps.queue.CommandQueue
-import info.nightscout.androidaps.utils.*
+import info.nightscout.androidaps.utils.DateUtil
+import info.nightscout.androidaps.utils.FabricPrivacy
+import info.nightscout.androidaps.utils.T
+import info.nightscout.androidaps.utils.XdripCalibrations
import info.nightscout.androidaps.utils.sharedPreferences.SP
import org.junit.Assert
import org.junit.Before
@@ -36,7 +40,6 @@ import org.mockito.ArgumentMatchers
import org.mockito.Mock
import org.mockito.Mockito
import org.mockito.Mockito.`when`
-import org.mockito.Mockito.anyDouble
import org.mockito.invocation.InvocationOnMock
import org.mockito.stubbing.Answer
import org.powermock.api.mockito.PowerMockito
@@ -48,6 +51,7 @@ import java.util.*
@PrepareForTest(ConstraintChecker::class, FabricPrivacy::class, VirtualPumpPlugin::class, XdripCalibrations::class, SmsManager::class, CommandQueue::class, LocalProfilePlugin::class, DateUtil::class, IobCobCalculatorPlugin::class, OneTimePassword::class)
class SmsCommunicatorPluginTest : TestBaseWithProfile() {
+ @Mock lateinit var context: Context
@Mock lateinit var sp: SP
@Mock lateinit var constraintChecker: ConstraintChecker
@Mock lateinit var activePlugin: ActivePluginProvider
@@ -105,7 +109,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, sp, constraintChecker, rxBus, profileFunction, fabricPrivacy, activePlugin, commandQueue, loopPlugin, iobCobCalculatorPlugin, xdripCalibrations, otp)
+ smsCommunicatorPlugin = SmsCommunicatorPlugin(injector, aapsLogger, resourceHelper, sp, constraintChecker, rxBus, profileFunction, fabricPrivacy, activePlugin, commandQueue, loopPlugin, iobCobCalculatorPlugin, xdripCalibrations, otp, Config(), DateUtil(context, resourceHelper))
smsCommunicatorPlugin.setPluginEnabled(PluginType.GENERAL, true)
Mockito.doAnswer { invocation: InvocationOnMock ->
val callback = invocation.getArgument(1)
@@ -219,6 +223,15 @@ class SmsCommunicatorPluginTest : TestBaseWithProfile() {
`when`(resourceHelper.gs(R.string.smscommunicator_mealbolusdelivered_tt)).thenReturn("Target %1\$s for %2\$d minutes")
`when`(resourceHelper.gs(R.string.sms_actualbg)).thenReturn("BG:")
`when`(resourceHelper.gs(R.string.sms_lastbg)).thenReturn("Last BG:")
+ `when`(resourceHelper.gs(R.string.smscommunicator_loopdisablereplywithcode)).thenReturn("To disable loop reply with code %1\$s")
+ `when`(resourceHelper.gs(R.string.smscommunicator_loopenablereplywithcode)).thenReturn("To enable loop reply with code %1\$s")
+ `when`(resourceHelper.gs(R.string.smscommunicator_loopresumereplywithcode)).thenReturn("To resume loop reply with code %1\$s")
+ `when`(resourceHelper.gs(R.string.smscommunicator_pumpdisconnectwithcode)).thenReturn("To disconnect pump for %1d minutes reply with code %2\$s")
+ `when`(resourceHelper.gs(R.string.smscommunicator_pumpconnectwithcode)).thenReturn("To connect pump reply with code %1\$s")
+ `when`(resourceHelper.gs(R.string.smscommunicator_reconnect)).thenReturn("Pump reconnected")
+ `when`(resourceHelper.gs(R.string.smscommunicator_pumpconnectfail)).thenReturn("Connection to pump failed")
+ `when`(resourceHelper.gs(R.string.smscommunicator_pumpdisconnected)).thenReturn("Pump disconnected")
+
}
@Test
@@ -340,7 +353,11 @@ class SmsCommunicatorPluginTest : TestBaseWithProfile() {
smsCommunicatorPlugin.processSms(sms)
Assert.assertFalse(sms.ignored)
Assert.assertEquals("LOOP DISABLE", smsCommunicatorPlugin.messages[0].text)
- Assert.assertEquals("Loop has been disabled Temp basal canceled", smsCommunicatorPlugin.messages[1].text)
+ Assert.assertTrue(smsCommunicatorPlugin.messages[1].text.contains("To disable loop reply with code "))
+ var passCode: String = smsCommunicatorPlugin.messageToConfirm?.confirmCode!!
+ smsCommunicatorPlugin.processSms(Sms("1234", passCode))
+ Assert.assertEquals(passCode, smsCommunicatorPlugin.messages[2].text)
+ Assert.assertEquals("Loop has been disabled Temp basal canceled", smsCommunicatorPlugin.messages[3].text)
Assert.assertTrue(hasBeenRun)
//LOOP ENABLE : already enabled
@@ -364,7 +381,11 @@ class SmsCommunicatorPluginTest : TestBaseWithProfile() {
smsCommunicatorPlugin.processSms(sms)
Assert.assertFalse(sms.ignored)
Assert.assertEquals("LOOP ENABLE", smsCommunicatorPlugin.messages[0].text)
- Assert.assertEquals("Loop has been enabled", smsCommunicatorPlugin.messages[1].text)
+ Assert.assertTrue(smsCommunicatorPlugin.messages[1].text.contains("To enable loop reply with code "))
+ passCode = smsCommunicatorPlugin.messageToConfirm?.confirmCode!!
+ smsCommunicatorPlugin.processSms(Sms("1234", passCode))
+ Assert.assertEquals(passCode, smsCommunicatorPlugin.messages[2].text)
+ Assert.assertEquals("Loop has been enabled", smsCommunicatorPlugin.messages[3].text)
Assert.assertTrue(hasBeenRun)
//LOOP RESUME : already enabled
@@ -373,7 +394,11 @@ class SmsCommunicatorPluginTest : TestBaseWithProfile() {
smsCommunicatorPlugin.processSms(sms)
Assert.assertFalse(sms.ignored)
Assert.assertEquals("LOOP RESUME", smsCommunicatorPlugin.messages[0].text)
- Assert.assertEquals("Loop resumed", smsCommunicatorPlugin.messages[1].text)
+ Assert.assertTrue(smsCommunicatorPlugin.messages[1].text.contains("To resume loop reply with code "))
+ passCode = smsCommunicatorPlugin.messageToConfirm?.confirmCode!!
+ smsCommunicatorPlugin.processSms(Sms("1234", passCode))
+ Assert.assertEquals(passCode, smsCommunicatorPlugin.messages[2].text)
+ Assert.assertEquals("Loop resumed", smsCommunicatorPlugin.messages[3].text)
//LOOP SUSPEND 1 2: wrong format
smsCommunicatorPlugin.messages = ArrayList()
@@ -398,7 +423,7 @@ class SmsCommunicatorPluginTest : TestBaseWithProfile() {
Assert.assertFalse(sms.ignored)
Assert.assertEquals("LOOP SUSPEND 100", smsCommunicatorPlugin.messages[0].text)
Assert.assertTrue(smsCommunicatorPlugin.messages[1].text.contains("To suspend loop for 100 minutes reply with code "))
- var passCode: String = smsCommunicatorPlugin.messageToConfirm?.confirmCode!!
+ passCode = smsCommunicatorPlugin.messageToConfirm?.confirmCode!!
smsCommunicatorPlugin.processSms(Sms("1234", passCode))
Assert.assertEquals(passCode, smsCommunicatorPlugin.messages[2].text)
Assert.assertEquals("Loop suspended Temp basal canceled", smsCommunicatorPlugin.messages[3].text)
@@ -496,6 +521,74 @@ class SmsCommunicatorPluginTest : TestBaseWithProfile() {
Assert.assertEquals("PUMP", smsCommunicatorPlugin.messages[0].text)
Assert.assertEquals("Virtual Pump", smsCommunicatorPlugin.messages[1].text)
+ //PUMP CONNECT 1 2: wrong format
+ smsCommunicatorPlugin.messages = ArrayList()
+ sms = Sms("1234", "PUMP CONNECT 1 2")
+ smsCommunicatorPlugin.processSms(sms)
+ Assert.assertFalse(sms.ignored)
+ Assert.assertEquals("PUMP CONNECT 1 2", smsCommunicatorPlugin.messages[0].text)
+ Assert.assertEquals("Wrong format", smsCommunicatorPlugin.messages[1].text)
+
+ //PUMP CONNECT BLABLA
+ smsCommunicatorPlugin.messages = ArrayList()
+ sms = Sms("1234", "PUMP BLABLA")
+ smsCommunicatorPlugin.processSms(sms)
+ Assert.assertFalse(sms.ignored)
+ Assert.assertEquals("PUMP BLABLA", smsCommunicatorPlugin.messages[0].text)
+ Assert.assertEquals("Wrong format", smsCommunicatorPlugin.messages[1].text)
+
+ //PUMP CONNECT
+ PowerMockito.`when`(loopPlugin.isEnabled(PluginType.LOOP)).thenReturn(true)
+ smsCommunicatorPlugin.messages = ArrayList()
+ sms = Sms("1234", "PUMP CONNECT")
+ smsCommunicatorPlugin.processSms(sms)
+ Assert.assertFalse(sms.ignored)
+ Assert.assertEquals("PUMP CONNECT", smsCommunicatorPlugin.messages[0].text)
+ Assert.assertTrue(smsCommunicatorPlugin.messages[1].text.contains("To connect pump reply with code "))
+ passCode = smsCommunicatorPlugin.messageToConfirm?.confirmCode!!
+ smsCommunicatorPlugin.processSms(Sms("1234", passCode))
+ Assert.assertEquals(passCode, smsCommunicatorPlugin.messages[2].text)
+ Assert.assertEquals("Pump reconnected", smsCommunicatorPlugin.messages[3].text)
+
+ //PUMP DISCONNECT 1 2: wrong format
+ smsCommunicatorPlugin.messages = ArrayList()
+ sms = Sms("1234", "PUMP DISCONNECT 1 2")
+ smsCommunicatorPlugin.processSms(sms)
+ Assert.assertFalse(sms.ignored)
+ Assert.assertEquals("PUMP DISCONNECT 1 2", smsCommunicatorPlugin.messages[0].text)
+ Assert.assertEquals("Wrong format", smsCommunicatorPlugin.messages[1].text)
+
+ //PUMP DISCONNECT 0
+ smsCommunicatorPlugin.messages = ArrayList()
+ sms = Sms("1234", "PUMP DISCONNECT 0")
+ smsCommunicatorPlugin.processSms(sms)
+ Assert.assertFalse(sms.ignored)
+ Assert.assertEquals("Wrong duration", smsCommunicatorPlugin.messages[1].text)
+
+ //PUMP DISCONNECT 30
+ smsCommunicatorPlugin.messages = ArrayList()
+ sms = Sms("1234", "PUMP DISCONNECT 30")
+ smsCommunicatorPlugin.processSms(sms)
+ Assert.assertFalse(sms.ignored)
+ Assert.assertEquals("PUMP DISCONNECT 30", smsCommunicatorPlugin.messages[0].text)
+ Assert.assertTrue(smsCommunicatorPlugin.messages[1].text.contains("To disconnect pump for"))
+ passCode = smsCommunicatorPlugin.messageToConfirm?.confirmCode!!
+ smsCommunicatorPlugin.processSms(Sms("1234", passCode))
+ Assert.assertEquals(passCode, smsCommunicatorPlugin.messages[2].text)
+ Assert.assertEquals("Pump disconnected", smsCommunicatorPlugin.messages[3].text)
+
+ //PUMP DISCONNECT 30
+ smsCommunicatorPlugin.messages = ArrayList()
+ sms = Sms("1234", "PUMP DISCONNECT 200")
+ smsCommunicatorPlugin.processSms(sms)
+ Assert.assertFalse(sms.ignored)
+ Assert.assertEquals("PUMP DISCONNECT 200", smsCommunicatorPlugin.messages[0].text)
+ Assert.assertTrue(smsCommunicatorPlugin.messages[1].text.contains("To disconnect pump for"))
+ passCode = smsCommunicatorPlugin.messageToConfirm?.confirmCode!!
+ smsCommunicatorPlugin.processSms(Sms("1234", passCode))
+ Assert.assertEquals(passCode, smsCommunicatorPlugin.messages[2].text)
+ Assert.assertEquals("Pump disconnected", smsCommunicatorPlugin.messages[3].text)
+
//HELP
smsCommunicatorPlugin.messages = ArrayList()
sms = Sms("1234", "HELP")
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/insulin/InsulinOrefBasePluginTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/insulin/InsulinOrefBasePluginTest.kt
index d3eb07a25d..646681c1dd 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/insulin/InsulinOrefBasePluginTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/insulin/InsulinOrefBasePluginTest.kt
@@ -6,9 +6,9 @@ import info.nightscout.androidaps.data.Iob
import info.nightscout.androidaps.interfaces.ActivePluginProvider
import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
+import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.plugins.insulin.InsulinOrefBasePlugin.Companion.MIN_DIA
-import info.nightscout.androidaps.plugins.treatments.Treatment
+import info.nightscout.androidaps.db.Treatment
import info.nightscout.androidaps.utils.DefaultValueHelper
import info.nightscout.androidaps.utils.resources.ResourceHelper
import org.junit.Assert
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/insulin/InsulinOrefFreePeakPluginTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/insulin/InsulinOrefFreePeakPluginTest.kt
index e34407fcfe..8c65f3339f 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/insulin/InsulinOrefFreePeakPluginTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/insulin/InsulinOrefFreePeakPluginTest.kt
@@ -5,9 +5,8 @@ import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.TestBase
import info.nightscout.androidaps.R
import info.nightscout.androidaps.interfaces.InsulinInterface
-import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
+import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.utils.resources.ResourceHelper
import info.nightscout.androidaps.utils.sharedPreferences.SP
import org.junit.Assert.assertEquals
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/insulin/InsulinOrefRapidActingPluginTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/insulin/InsulinOrefRapidActingPluginTest.kt
index a7aea711c3..7f1ec85ae9 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/insulin/InsulinOrefRapidActingPluginTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/insulin/InsulinOrefRapidActingPluginTest.kt
@@ -6,7 +6,7 @@ import info.nightscout.androidaps.R
import info.nightscout.androidaps.interfaces.InsulinInterface
import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
+import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.utils.resources.ResourceHelper
import org.junit.Assert.assertEquals
import org.junit.Before
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/insulin/InsulinOrefUltraRapidActingPluginTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/insulin/InsulinOrefUltraRapidActingPluginTest.kt
index 7d02e4be21..16b5a6dbc3 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/insulin/InsulinOrefUltraRapidActingPluginTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/insulin/InsulinOrefUltraRapidActingPluginTest.kt
@@ -6,7 +6,7 @@ import info.nightscout.androidaps.R
import info.nightscout.androidaps.interfaces.InsulinInterface
import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
+import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.utils.resources.ResourceHelper
import org.junit.Assert.assertEquals
import org.junit.Before
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/iob/iobCobCalculatorPlugin/GlucoseStatusTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/GlucoseStatusTest.kt
similarity index 80%
rename from app/src/test/java/info/nightscout/androidaps/plugins/iob/iobCobCalculatorPlugin/GlucoseStatusTest.kt
rename to app/src/test/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/GlucoseStatusTest.kt
index d0a5f7ebeb..1f96b86b83 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/iob/iobCobCalculatorPlugin/GlucoseStatusTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/GlucoseStatusTest.kt
@@ -1,13 +1,10 @@
-package info.nightscout.androidaps.plugins.iob.iobCobCalculatorPlugin
+package info.nightscout.androidaps.plugins.iob.iobCobCalculator
import dagger.android.AndroidInjector
import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.TestBase
import info.nightscout.androidaps.db.BgReading
-import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.plugins.general.nsclient.data.NSSgv
-import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus
-import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin
import info.nightscout.androidaps.utils.DateUtil
import info.nightscout.androidaps.utils.T
import org.json.JSONException
@@ -30,6 +27,7 @@ import java.util.*
@PrepareForTest(IobCobCalculatorPlugin::class, DateUtil::class)
class GlucoseStatusTest : TestBase() {
+ @Mock lateinit var dateUtil: DateUtil
@Mock lateinit var iobCobCalculatorPlugin: IobCobCalculatorPlugin
val injector = HasAndroidInjector {
@@ -38,6 +36,9 @@ class GlucoseStatusTest : TestBase() {
it.aapsLogger = aapsLogger
it.iobCobCalculatorPlugin = iobCobCalculatorPlugin
}
+ if (it is BgReading) {
+ it.dateUtil = dateUtil
+ }
}
}
@@ -129,14 +130,14 @@ class GlucoseStatusTest : TestBase() {
private fun generateValidBgData(): List {
val list: MutableList = ArrayList()
try {
- list.add(BgReading(NSSgv(JSONObject("{\"mgdl\":214,\"mills\":1514766900000,\"direction\":\"Flat\"}"))))
- list.add(BgReading(NSSgv(JSONObject("{\"mgdl\":216,\"mills\":1514766600000,\"direction\":\"Flat\"}")))) // +2
- list.add(BgReading(NSSgv(JSONObject("{\"mgdl\":219,\"mills\":1514766300000,\"direction\":\"Flat\"}")))) // +3
- list.add(BgReading(NSSgv(JSONObject("{\"mgdl\":223,\"mills\":1514766000000,\"direction\":\"Flat\"}")))) // +4
- list.add(BgReading(NSSgv(JSONObject("{\"mgdl\":222,\"mills\":1514765700000,\"direction\":\"Flat\"}"))))
- list.add(BgReading(NSSgv(JSONObject("{\"mgdl\":224,\"mills\":1514765400000,\"direction\":\"Flat\"}"))))
- list.add(BgReading(NSSgv(JSONObject("{\"mgdl\":226,\"mills\":1514765100000,\"direction\":\"Flat\"}"))))
- list.add(BgReading(NSSgv(JSONObject("{\"mgdl\":228,\"mills\":1514764800000,\"direction\":\"Flat\"}"))))
+ list.add(BgReading(injector, NSSgv(JSONObject("{\"mgdl\":214,\"mills\":1514766900000,\"direction\":\"Flat\"}"))))
+ list.add(BgReading(injector, NSSgv(JSONObject("{\"mgdl\":216,\"mills\":1514766600000,\"direction\":\"Flat\"}")))) // +2
+ list.add(BgReading(injector, NSSgv(JSONObject("{\"mgdl\":219,\"mills\":1514766300000,\"direction\":\"Flat\"}")))) // +3
+ list.add(BgReading(injector, NSSgv(JSONObject("{\"mgdl\":223,\"mills\":1514766000000,\"direction\":\"Flat\"}")))) // +4
+ list.add(BgReading(injector, NSSgv(JSONObject("{\"mgdl\":222,\"mills\":1514765700000,\"direction\":\"Flat\"}"))))
+ list.add(BgReading(injector, NSSgv(JSONObject("{\"mgdl\":224,\"mills\":1514765400000,\"direction\":\"Flat\"}"))))
+ list.add(BgReading(injector, NSSgv(JSONObject("{\"mgdl\":226,\"mills\":1514765100000,\"direction\":\"Flat\"}"))))
+ list.add(BgReading(injector, NSSgv(JSONObject("{\"mgdl\":228,\"mills\":1514764800000,\"direction\":\"Flat\"}"))))
} catch (e: JSONException) {
throw RuntimeException(e)
}
@@ -146,9 +147,9 @@ class GlucoseStatusTest : TestBase() {
private fun generateMostRecentBgData(): List {
val list: MutableList = ArrayList()
try {
- list.add(BgReading(NSSgv(JSONObject("{\"mgdl\":214,\"mills\":1514766900000,\"direction\":\"Flat\"}"))))
- list.add(BgReading(NSSgv(JSONObject("{\"mgdl\":216,\"mills\":1514766800000,\"direction\":\"Flat\"}")))) // +2
- list.add(BgReading(NSSgv(JSONObject("{\"mgdl\":216,\"mills\":1514766600000,\"direction\":\"Flat\"}"))))
+ list.add(BgReading(injector, NSSgv(JSONObject("{\"mgdl\":214,\"mills\":1514766900000,\"direction\":\"Flat\"}"))))
+ list.add(BgReading(injector, NSSgv(JSONObject("{\"mgdl\":216,\"mills\":1514766800000,\"direction\":\"Flat\"}")))) // +2
+ list.add(BgReading(injector, NSSgv(JSONObject("{\"mgdl\":216,\"mills\":1514766600000,\"direction\":\"Flat\"}"))))
} catch (e: JSONException) {
throw RuntimeException(e)
}
@@ -162,7 +163,7 @@ class GlucoseStatusTest : TestBase() {
private fun generateOldBgData(): List {
val list: MutableList = ArrayList()
try {
- list.add(BgReading(NSSgv(JSONObject("{\"mgdl\":228,\"mills\":1514764800000,\"direction\":\"Flat\"}"))))
+ list.add(BgReading(injector, NSSgv(JSONObject("{\"mgdl\":228,\"mills\":1514764800000,\"direction\":\"Flat\"}"))))
} catch (e: JSONException) {
throw RuntimeException(e)
}
@@ -172,7 +173,7 @@ class GlucoseStatusTest : TestBase() {
private fun generateOneCurrentRecordBgData(): List {
val list: MutableList = ArrayList()
try {
- list.add(BgReading(NSSgv(JSONObject("{\"mgdl\":214,\"mills\":1514766900000,\"direction\":\"Flat\"}"))))
+ list.add(BgReading(injector, NSSgv(JSONObject("{\"mgdl\":214,\"mills\":1514766900000,\"direction\":\"Flat\"}"))))
} catch (e: JSONException) {
throw RuntimeException(e)
}
@@ -185,15 +186,15 @@ class GlucoseStatusTest : TestBase() {
val endTime = 1514766900000L
val latestReading = 100.0
// Now
- list.add(BgReading(NSSgv(JSONObject("{\"mgdl\":$latestReading,\"mills\":$endTime,\"direction\":\"Flat\"}"))))
+ list.add(BgReading(injector, NSSgv(JSONObject("{\"mgdl\":$latestReading,\"mills\":$endTime,\"direction\":\"Flat\"}"))))
// One minute ago
- list.add(BgReading(NSSgv(JSONObject("{\"mgdl\":" + latestReading + ",\"mills\":" + (endTime - 1000 * 60 * 1) + ",\"direction\":\"Flat\"}"))))
+ list.add(BgReading(injector, NSSgv(JSONObject("{\"mgdl\":" + latestReading + ",\"mills\":" + (endTime - 1000 * 60 * 1) + ",\"direction\":\"Flat\"}"))))
// Two minutes ago
- list.add(BgReading(NSSgv(JSONObject("{\"mgdl\":" + latestReading + ",\"mills\":" + (endTime - 1000 * 60 * 2) + ",\"direction\":\"Flat\"}"))))
+ list.add(BgReading(injector, NSSgv(JSONObject("{\"mgdl\":" + latestReading + ",\"mills\":" + (endTime - 1000 * 60 * 2) + ",\"direction\":\"Flat\"}"))))
// Three minutes and beyond at constant rate
for (i in 3..49) {
- list.add(BgReading(NSSgv(JSONObject("{\"mgdl\":" + (latestReading + i * 2) + ",\"mills\":" + (endTime - 1000 * 60 * i) + ",\"direction\":\"Flat\"}"))))
+ list.add(BgReading(injector, NSSgv(JSONObject("{\"mgdl\":" + (latestReading + i * 2) + ",\"mills\":" + (endTime - 1000 * 60 * i) + ",\"direction\":\"Flat\"}"))))
}
} catch (e: JSONException) {
throw RuntimeException(e)
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/iob/iobCobCalculatorPlugin/IobCobCalculatorPluginTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/IobCobCalculatorPluginTest.kt
similarity index 97%
rename from app/src/test/java/info/nightscout/androidaps/plugins/iob/iobCobCalculatorPlugin/IobCobCalculatorPluginTest.kt
rename to app/src/test/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/IobCobCalculatorPluginTest.kt
index a21990f406..9bb58a0738 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/iob/iobCobCalculatorPlugin/IobCobCalculatorPluginTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/IobCobCalculatorPluginTest.kt
@@ -1,14 +1,12 @@
-package info.nightscout.androidaps.plugins.iob.iobCobCalculatorPlugin
+package info.nightscout.androidaps.plugins.iob.iobCobCalculator
import dagger.android.AndroidInjector
import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.TestBase
import info.nightscout.androidaps.db.BgReading
import info.nightscout.androidaps.interfaces.ActivePluginProvider
-import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
-import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin
+import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.plugins.sensitivity.SensitivityAAPSPlugin
import info.nightscout.androidaps.plugins.sensitivity.SensitivityOref1Plugin
import info.nightscout.androidaps.plugins.sensitivity.SensitivityWeightedAveragePlugin
@@ -43,6 +41,7 @@ class IobCobCalculatorPluginTest : TestBase() {
@Mock lateinit var sensitivityWeightedAveragePlugin: SensitivityWeightedAveragePlugin
@Mock lateinit var defaultValueHelper: DefaultValueHelper
@Mock lateinit var fabricPrivacy: FabricPrivacy
+ @Mock lateinit var dateUtil: DateUtil
lateinit var iobCobCalculatorPlugin: IobCobCalculatorPlugin
@@ -53,13 +52,14 @@ class IobCobCalculatorPluginTest : TestBase() {
it.defaultValueHelper = defaultValueHelper
it.resourceHelper = resourceHelper
it.profileFunction = profileFunction
+ it.dateUtil = dateUtil
}
}
}
@Before
fun mock() {
- iobCobCalculatorPlugin = IobCobCalculatorPlugin(injector, aapsLogger, rxBus, sp, resourceHelper, profileFunction, activePlugin, treatmentsPlugin, sensitivityOref1Plugin, sensitivityAAPSPlugin, sensitivityWeightedAveragePlugin, fabricPrivacy)
+ iobCobCalculatorPlugin = IobCobCalculatorPlugin(injector, aapsLogger, rxBus, sp, resourceHelper, profileFunction, activePlugin, treatmentsPlugin, sensitivityOref1Plugin, sensitivityAAPSPlugin, sensitivityWeightedAveragePlugin, fabricPrivacy, dateUtil)
}
@Test
@@ -142,8 +142,8 @@ class IobCobCalculatorPluginTest : TestBase() {
iobCobCalculatorPlugin.bgReadings = bgReadingList
Assert.assertEquals(true, iobCobCalculatorPlugin.isAbout5minData)
iobCobCalculatorPlugin.createBucketedData()
- Assert.assertEquals(bgReadingList[0].date, iobCobCalculatorPlugin.bucketedData[0].date)
- Assert.assertEquals(bgReadingList[3].date, iobCobCalculatorPlugin.bucketedData[3].date)
+ Assert.assertEquals(bgReadingList[0].date, iobCobCalculatorPlugin.bucketedData[0].timestamp)
+ Assert.assertEquals(bgReadingList[3].date, iobCobCalculatorPlugin.bucketedData[3].timestamp)
Assert.assertEquals(bgReadingList.size.toLong(), iobCobCalculatorPlugin.bucketedData.size.toLong())
// Missing value should be replaced
@@ -154,8 +154,8 @@ class IobCobCalculatorPluginTest : TestBase() {
iobCobCalculatorPlugin.bgReadings = bgReadingList
Assert.assertEquals(true, iobCobCalculatorPlugin.isAbout5minData)
iobCobCalculatorPlugin.createBucketedData()
- Assert.assertEquals(bgReadingList[0].date, iobCobCalculatorPlugin.bucketedData[0].date)
- Assert.assertEquals(bgReadingList[2].date, iobCobCalculatorPlugin.bucketedData[3].date)
+ Assert.assertEquals(bgReadingList[0].date, iobCobCalculatorPlugin.bucketedData[0].timestamp)
+ Assert.assertEquals(bgReadingList[2].date, iobCobCalculatorPlugin.bucketedData[3].timestamp)
Assert.assertEquals(bgReadingList.size + 1.toLong(), iobCobCalculatorPlugin.bucketedData.size.toLong())
// drift should be cleared
@@ -168,10 +168,10 @@ class IobCobCalculatorPluginTest : TestBase() {
iobCobCalculatorPlugin.bgReadings = bgReadingList
Assert.assertEquals(true, iobCobCalculatorPlugin.isAbout5minData)
iobCobCalculatorPlugin.createBucketedData()
- Assert.assertEquals(T.mins(20).msecs(), iobCobCalculatorPlugin.bucketedData[0].date)
- Assert.assertEquals(T.mins(15).msecs(), iobCobCalculatorPlugin.bucketedData[1].date)
- Assert.assertEquals(T.mins(10).msecs(), iobCobCalculatorPlugin.bucketedData[2].date)
- Assert.assertEquals(T.mins(5).msecs(), iobCobCalculatorPlugin.bucketedData[3].date)
+ Assert.assertEquals(T.mins(20).msecs(), iobCobCalculatorPlugin.bucketedData[0].timestamp)
+ Assert.assertEquals(T.mins(15).msecs(), iobCobCalculatorPlugin.bucketedData[1].timestamp)
+ Assert.assertEquals(T.mins(10).msecs(), iobCobCalculatorPlugin.bucketedData[2].timestamp)
+ Assert.assertEquals(T.mins(5).msecs(), iobCobCalculatorPlugin.bucketedData[3].timestamp)
Assert.assertEquals(bgReadingList.size.toLong(), iobCobCalculatorPlugin.bucketedData.size.toLong())
// bucketed data should return null if not enough bg data
@@ -191,8 +191,8 @@ class IobCobCalculatorPluginTest : TestBase() {
iobCobCalculatorPlugin.bgReadings = bgReadingList
Assert.assertEquals(true, iobCobCalculatorPlugin.isAbout5minData)
iobCobCalculatorPlugin.createBucketedData()
- Assert.assertEquals(T.mins(50).msecs(), iobCobCalculatorPlugin.bucketedData[0].date)
- Assert.assertEquals(T.mins(20).msecs(), iobCobCalculatorPlugin.bucketedData[6].date)
+ Assert.assertEquals(T.mins(50).msecs(), iobCobCalculatorPlugin.bucketedData[0].timestamp)
+ Assert.assertEquals(T.mins(20).msecs(), iobCobCalculatorPlugin.bucketedData[6].timestamp)
Assert.assertEquals(7, iobCobCalculatorPlugin.bucketedData.size.toLong())
Assert.assertEquals(100.0, iobCobCalculatorPlugin.bucketedData[0].value, 1.0)
Assert.assertEquals(90.0, iobCobCalculatorPlugin.bucketedData[1].value, 1.0)
@@ -207,8 +207,8 @@ class IobCobCalculatorPluginTest : TestBase() {
iobCobCalculatorPlugin.bgReadings = bgReadingList
Assert.assertEquals(false, iobCobCalculatorPlugin.isAbout5minData)
iobCobCalculatorPlugin.createBucketedData()
- Assert.assertEquals(T.mins(50).msecs(), iobCobCalculatorPlugin.bucketedData[0].date)
- Assert.assertEquals(T.mins(20).msecs(), iobCobCalculatorPlugin.bucketedData[6].date)
+ Assert.assertEquals(T.mins(50).msecs(), iobCobCalculatorPlugin.bucketedData[0].timestamp)
+ Assert.assertEquals(T.mins(20).msecs(), iobCobCalculatorPlugin.bucketedData[6].timestamp)
Assert.assertEquals(7, iobCobCalculatorPlugin.bucketedData.size.toLong())
Assert.assertEquals(100.0, iobCobCalculatorPlugin.bucketedData[0].value, 1.0)
Assert.assertEquals(90.0, iobCobCalculatorPlugin.bucketedData[1].value, 1.0)
@@ -339,10 +339,11 @@ class IobCobCalculatorPluginTest : TestBase() {
bgReadingList.add(BgReading(injector).date(DateUtil.fromISODateString("2018-09-05T03:50:03Z")).value(100.0))
bgReadingList.add(BgReading(injector).date(DateUtil.fromISODateString("2018-09-05T03:44:57Z")).value(100.0))
iobCobCalculatorPlugin.bgReadings = bgReadingList
+ iobCobCalculatorPlugin.referenceTime = null
Assert.assertEquals(true, iobCobCalculatorPlugin.isAbout5minData)
iobCobCalculatorPlugin.createBucketedData()
- Assert.assertEquals(DateUtil.fromISODateString("2018-09-05T13:34:57Z").time, iobCobCalculatorPlugin.bucketedData[0].date)
- Assert.assertEquals(DateUtil.fromISODateString("2018-09-05T03:44:57Z").time, iobCobCalculatorPlugin.bucketedData[iobCobCalculatorPlugin.bucketedData.size - 1].date)
+ Assert.assertEquals(DateUtil.fromISODateString("2018-09-05T13:34:57Z").time, iobCobCalculatorPlugin.bucketedData[0].timestamp)
+ Assert.assertEquals(DateUtil.fromISODateString("2018-09-05T03:44:57Z").time, iobCobCalculatorPlugin.bucketedData[iobCobCalculatorPlugin.bucketedData.size - 1].timestamp)
// 5min 4sec data
bgReadingList.clear()
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/combo/ComboPluginTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/combo/ComboPluginTest.kt
index 6b349711f0..46951f8730 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/combo/ComboPluginTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/combo/ComboPluginTest.kt
@@ -10,11 +10,10 @@ import info.nightscout.androidaps.interfaces.ActivePluginProvider
import info.nightscout.androidaps.interfaces.CommandQueueProvider
import info.nightscout.androidaps.interfaces.Constraint
import info.nightscout.androidaps.interfaces.PluginType
-import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
+import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.plugins.pump.combo.ruffyscripter.history.Bolus
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
import info.nightscout.androidaps.queue.CommandQueue
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/common/bolusInfo/DetailedBolusInfoStorageTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/common/bolusInfo/DetailedBolusInfoStorageTest.kt
index 28117e5583..9f483da250 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/common/bolusInfo/DetailedBolusInfoStorageTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/common/bolusInfo/DetailedBolusInfoStorageTest.kt
@@ -2,13 +2,11 @@ package info.nightscout.androidaps.plugins.pump.common.bolusInfo
import info.nightscout.androidaps.TestBase
import info.nightscout.androidaps.data.DetailedBolusInfo
-import info.nightscout.androidaps.logging.AAPSLogger
import org.junit.Assert.assertEquals
import org.junit.Assert.assertNull
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
-import org.mockito.Mock
import org.powermock.modules.junit4.PowerMockRunner
@RunWith(PowerMockRunner::class)
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/common/utils/DateTimeUtilUTest.java b/app/src/test/java/info/nightscout/androidaps/plugins/pump/common/utils/DateTimeUtilUTest.java
index 5d069f0345..7b79c62e82 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/common/utils/DateTimeUtilUTest.java
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/common/utils/DateTimeUtilUTest.java
@@ -6,8 +6,6 @@ import junit.framework.Assert;
import org.junit.Test;
-import static org.junit.Assert.*;
-
public class DateTimeUtilUTest {
@Test
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/DanaRPluginTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/DanaRPluginTest.kt
index 44ee4019c3..7c46aa7f41 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/DanaRPluginTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/DanaRPluginTest.kt
@@ -6,11 +6,12 @@ import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.Constants
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.interfaces.CommandQueueProvider
import info.nightscout.androidaps.interfaces.Constraint
import info.nightscout.androidaps.interfaces.PluginType
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
-import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
import info.nightscout.androidaps.utils.sharedPreferences.SP
import org.junit.Assert
import org.junit.Before
@@ -30,7 +31,7 @@ class DanaRPluginTest : TestBaseWithProfile() {
@Mock lateinit var sp: SP
@Mock lateinit var commandQueue: CommandQueueProvider
- lateinit var danaRPump: DanaRPump
+ lateinit var danaPump: DanaPump
private lateinit var danaRPlugin: DanaRPlugin
@@ -44,15 +45,15 @@ class DanaRPluginTest : TestBaseWithProfile() {
`when`(resourceHelper.gs(R.string.pumplimit)).thenReturn("pump limit")
`when`(resourceHelper.gs(R.string.limitingbasalratio)).thenReturn("Limiting max basal rate to %1\$.2f U/h because of %2\$s")
`when`(resourceHelper.gs(R.string.limitingpercentrate)).thenReturn("Limiting max percent rate to %1\$d%% because of %2\$s")
- danaRPump = DanaRPump(aapsLogger, sp, injector)
- danaRPlugin = DanaRPlugin(injector, aapsLogger, rxBus, context, resourceHelper, constraintChecker, treatmentsPlugin, sp, commandQueue, danaRPump)
+ danaPump = info.nightscout.androidaps.dana.DanaPump(aapsLogger, sp, injector)
+ danaRPlugin = DanaRPlugin(injector, aapsLogger, rxBus, context, resourceHelper, constraintChecker, activePluginProvider, sp, commandQueue, danaPump, dateUtil, fabricPrivacy)
}
@Test @Throws(Exception::class)
fun basalRateShouldBeLimited() {
danaRPlugin.setPluginEnabled(PluginType.PUMP, true)
danaRPlugin.setPluginEnabled(PluginType.PUMP, true)
- danaRPump.maxBasal = 0.8
+ danaPump.maxBasal = 0.8
val c = Constraint(Constants.REALLYHIGHBASALRATE)
danaRPlugin.applyBasalConstraints(c, validProfile)
Assert.assertEquals(0.8, c.value(), 0.01)
@@ -64,7 +65,7 @@ class DanaRPluginTest : TestBaseWithProfile() {
fun percentBasalRateShouldBeLimited() {
danaRPlugin.setPluginEnabled(PluginType.PUMP, true)
danaRPlugin.setPluginEnabled(PluginType.PUMP, true)
- danaRPump.maxBasal = 0.8
+ danaPump.maxBasal = 0.8
val c = Constraint(Constants.REALLYHIGHPERCENTBASALRATE)
danaRPlugin.applyBasalPercentConstraints(c, validProfile)
Assert.assertEquals(200, c.value())
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/DanaRTestBase.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/DanaRTestBase.kt
index 5a9107ccb0..602274a128 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/DanaRTestBase.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/DanaRTestBase.kt
@@ -3,22 +3,68 @@ package info.nightscout.androidaps.plugins.pump.danaR.comm
import dagger.android.AndroidInjector
import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.TestBase
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danaRKorean.DanaRKoreanPlugin
+import info.nightscout.androidaps.danaRv2.DanaRv2Plugin
+import info.nightscout.androidaps.danar.DanaRPlugin
+import info.nightscout.androidaps.danar.comm.MessageBase
import info.nightscout.androidaps.db.TemporaryBasal
-import info.nightscout.androidaps.interfaces.ActivePluginProvider
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
+import info.nightscout.androidaps.interfaces.*
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
+import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
+import info.nightscout.androidaps.plugins.general.nsclient.NSUpload
+import info.nightscout.androidaps.plugins.pump.common.bolusInfo.DetailedBolusInfoStorage
+import info.nightscout.androidaps.utils.DateUtil
+import info.nightscout.androidaps.utils.resources.ResourceHelper
import info.nightscout.androidaps.utils.sharedPreferences.SP
import org.junit.Before
import org.mockito.Mock
+import org.mockito.Mockito.`when`
+import org.powermock.core.classloader.annotations.PrepareForTest
+@PrepareForTest(DetailedBolusInfoStorage::class, ConstraintChecker::class)
open class DanaRTestBase : TestBase() {
@Mock lateinit var sp: SP
@Mock lateinit var profileFunction: ProfileFunction
@Mock lateinit var activePluginProvider: ActivePluginProvider
+ @Mock lateinit var dateUtil: DateUtil
+ @Mock lateinit var databaseHelper: DatabaseHelperInterface
+ @Mock lateinit var treatmentsInterface: TreatmentsInterface
+ @Mock lateinit var danaRPlugin: DanaRPlugin
+ @Mock lateinit var danaRKoreanPlugin: DanaRKoreanPlugin
+ @Mock lateinit var danaRv2Plugin: DanaRv2Plugin
+ @Mock lateinit var resourceHelper: ResourceHelper
+ @Mock lateinit var configBuilder: ConfigBuilderInterface
+ @Mock lateinit var commandQueue: CommandQueueProvider
+ @Mock lateinit var detailedBolusInfoStorage: DetailedBolusInfoStorage
+ @Mock lateinit var constraintChecker: ConstraintChecker
+ @Mock lateinit var nsUpload: NSUpload
+
+ @Before
+ fun prepareMock() {
+ `when`(activePluginProvider.activeTreatments).thenReturn(treatmentsInterface)
+ }
val injector = HasAndroidInjector {
AndroidInjector {
+ if (it is MessageBase) {
+ it.aapsLogger = aapsLogger
+ it.dateUtil = dateUtil
+ it.danaPump = danaPump
+ it.danaRPlugin = danaRPlugin
+ it.danaRKoreanPlugin = danaRKoreanPlugin
+ it.danaRv2Plugin = danaRv2Plugin
+ it.rxBus = RxBusWrapper()
+ it.resourceHelper = resourceHelper
+ it.activePlugin = activePluginProvider
+ it.configBuilder = configBuilder
+ it.detailedBolusInfoStorage = detailedBolusInfoStorage
+ it.constraintChecker = constraintChecker
+ it.nsUpload = nsUpload
+ it.databaseHelper = databaseHelper
+ it.commandQueue = commandQueue
+ }
if (it is TemporaryBasal) {
it.aapsLogger = aapsLogger
it.activePlugin = activePluginProvider
@@ -28,7 +74,7 @@ open class DanaRTestBase : TestBase() {
}
}
- lateinit var danaRPump: DanaRPump
+ lateinit var danaPump: DanaPump
fun createArray(length: Int, fillWith: Byte): ByteArray {
val ret = ByteArray(length)
@@ -59,6 +105,6 @@ open class DanaRTestBase : TestBase() {
@Before
fun setup() {
- danaRPump = DanaRPump(aapsLogger, sp, injector)
+ danaPump = info.nightscout.androidaps.dana.DanaPump(aapsLogger, sp, injector)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MessageHashTableRTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MessageHashTableRTest.kt
index d8a2d12b20..a80a581bec 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MessageHashTableRTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MessageHashTableRTest.kt
@@ -1,20 +1,13 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
-import info.nightscout.androidaps.interfaces.ActivePluginProvider
-import info.nightscout.androidaps.interfaces.CommandQueueProvider
+import info.nightscout.androidaps.danar.comm.MessageHashTableR
import info.nightscout.androidaps.interfaces.Constraint
-import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
import info.nightscout.androidaps.plugins.pump.common.bolusInfo.DetailedBolusInfoStorage
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPlugin
-import info.nightscout.androidaps.plugins.pump.danaRKorean.DanaRKoreanPlugin
-import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
-import info.nightscout.androidaps.utils.resources.ResourceHelper
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
-import org.mockito.Mock
import org.mockito.Mockito
import org.powermock.core.classloader.annotations.PrepareForTest
import org.powermock.modules.junit4.PowerMockRunner
@@ -23,20 +16,10 @@ import org.powermock.modules.junit4.PowerMockRunner
@PrepareForTest(ConstraintChecker::class, DetailedBolusInfoStorage::class, ConfigBuilderPlugin::class)
class MessageHashTableRTest : DanaRTestBase() {
- @Mock lateinit var rxBus: RxBusWrapper
- @Mock lateinit var resourceHelper: ResourceHelper
- @Mock lateinit var constraintChecker: ConstraintChecker
- @Mock lateinit var danaRPlugin: DanaRPlugin
- @Mock lateinit var danaRKoreanPlugin: DanaRKoreanPlugin
- @Mock lateinit var configBuilderPlugin: ConfigBuilderPlugin
- @Mock lateinit var commandQueue: CommandQueueProvider
- @Mock lateinit var activePlugin: ActivePluginProvider
- @Mock lateinit var detailedBolusInfoStorage: DetailedBolusInfoStorage
- @Mock lateinit var treatmentsPlugin: TreatmentsPlugin
@Test fun runTest() {
Mockito.`when`(constraintChecker.applyBolusConstraints(anyObject())).thenReturn(Constraint(0.0))
- val messageHashTable = MessageHashTableR(aapsLogger, rxBus, resourceHelper, constraintChecker, danaRPump, danaRPlugin, danaRKoreanPlugin, configBuilderPlugin, commandQueue, activePlugin, injector)
+ val messageHashTable = MessageHashTableR(injector)
val testMessage = messageHashTable.findMessage(0x41f2)
Assert.assertEquals("CMD_HISTORY_ALL", testMessage.messageName)
}
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MessageOriginalNamesTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MessageOriginalNamesTest.kt
index 0b9c519177..beca8d68d5 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MessageOriginalNamesTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MessageOriginalNamesTest.kt
@@ -1,6 +1,7 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
import info.nightscout.androidaps.TestBase
+import info.nightscout.androidaps.danar.comm.MessageOriginalNames
import org.junit.Assert
import org.junit.Test
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgBolusProgressTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgBolusProgressTest.kt
index 7c10c200ce..1eec5b7473 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgBolusProgressTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgBolusProgressTest.kt
@@ -3,33 +3,29 @@ package info.nightscout.androidaps.plugins.pump.danaR.comm
import dagger.android.AndroidInjector
import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.R
-import info.nightscout.androidaps.plugins.bus.RxBusWrapper
-import info.nightscout.androidaps.plugins.treatments.Treatment
-import info.nightscout.androidaps.utils.resources.ResourceHelper
+import info.nightscout.androidaps.danar.comm.MsgBolusProgress
+import info.nightscout.androidaps.db.Treatment
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.ArgumentMatchers
-import org.mockito.Mock
import org.mockito.Mockito.`when`
import org.powermock.modules.junit4.PowerMockRunner
@RunWith(PowerMockRunner::class)
class MsgBolusProgressTest : DanaRTestBase() {
- @Mock lateinit var resourceHelper: ResourceHelper
- val rxBus = RxBusWrapper()
@Test fun runTest() {
`when`(resourceHelper.gs(ArgumentMatchers.eq(R.string.bolusdelivering), ArgumentMatchers.anyDouble())).thenReturn("Delivering %1\$.2fU")
- danaRPump.bolusingTreatment = Treatment(HasAndroidInjector { AndroidInjector { } })
- danaRPump.bolusAmountToBeDelivered = 3.0
- val packet = MsgBolusProgress(aapsLogger, resourceHelper, rxBus, danaRPump)
+ danaPump.bolusingTreatment = Treatment(HasAndroidInjector { AndroidInjector { } })
+ danaPump.bolusAmountToBeDelivered = 3.0
+ val packet = MsgBolusProgress(injector)
// test message decoding
val array = ByteArray(100)
putIntToArray(array, 0, 2 * 100)
packet.handleMessage(array)
- Assert.assertEquals(1.0, danaRPump.bolusingTreatment?.insulin!!, 0.0)
+ Assert.assertEquals(1.0, danaPump.bolusingTreatment?.insulin!!, 0.0)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgBolusStartTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgBolusStartTest.kt
index 87cec753d7..da5a814bad 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgBolusStartTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgBolusStartTest.kt
@@ -1,11 +1,11 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
+import info.nightscout.androidaps.danar.comm.MsgBolusStart
import info.nightscout.androidaps.interfaces.Constraint
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
import org.junit.Assert
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
@@ -14,11 +14,9 @@ import org.powermock.modules.junit4.PowerMockRunner
@PrepareForTest(ConstraintChecker::class)
class MsgBolusStartTest : DanaRTestBase() {
- @Mock lateinit var constraintChecker: ConstraintChecker
-
@Test fun runTest() {
`when`(constraintChecker.applyBolusConstraints(Constraint(anyObject()))).thenReturn(Constraint(0.0))
- val packet = MsgBolusStart(aapsLogger, constraintChecker, danaRPump, 1.0)
+ val packet = MsgBolusStart(injector, 1.0)
// test message decoding
val array = ByteArray(100)
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgBolusStartWithSpeedTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgBolusStartWithSpeedTest.kt
index 34c0024a99..6c89a58db0 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgBolusStartWithSpeedTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgBolusStartWithSpeedTest.kt
@@ -1,11 +1,11 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
+import info.nightscout.androidaps.danar.comm.MsgBolusStartWithSpeed
import info.nightscout.androidaps.interfaces.Constraint
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
-import org.mockito.Mock
import org.mockito.Mockito
import org.powermock.core.classloader.annotations.PrepareForTest
import org.powermock.modules.junit4.PowerMockRunner
@@ -14,11 +14,9 @@ import org.powermock.modules.junit4.PowerMockRunner
@PrepareForTest(ConstraintChecker::class)
class MsgBolusStartWithSpeedTest : DanaRTestBase() {
- @Mock lateinit var constraintChecker: ConstraintChecker
-
@Test fun runTest() {
Mockito.`when`(constraintChecker.applyBolusConstraints(Constraint(anyObject()))).thenReturn(Constraint(0.0))
- val packet = MsgBolusStartWithSpeed(aapsLogger, constraintChecker, danaRPump, 0.0, 0)
+ val packet = MsgBolusStartWithSpeed(injector, 0.0, 0)
// test message decoding
val array = ByteArray(100)
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgBolusStopTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgBolusStopTest.kt
index 3e813c1328..d1b353c259 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgBolusStopTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgBolusStopTest.kt
@@ -3,29 +3,24 @@ package info.nightscout.androidaps.plugins.pump.danaR.comm
import dagger.android.AndroidInjector
import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.R
-import info.nightscout.androidaps.plugins.bus.RxBusWrapper
-import info.nightscout.androidaps.plugins.treatments.Treatment
-import info.nightscout.androidaps.utils.resources.ResourceHelper
+import info.nightscout.androidaps.danar.comm.MsgBolusStop
+import info.nightscout.androidaps.db.Treatment
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
-import org.mockito.Mock
import org.mockito.Mockito.`when`
import org.powermock.modules.junit4.PowerMockRunner
@RunWith(PowerMockRunner::class)
class MsgBolusStopTest : DanaRTestBase() {
- @Mock lateinit var resourceHelper: ResourceHelper
- val rxBus = RxBusWrapper()
-
@Test fun runTest() {
`when`(resourceHelper.gs(R.string.overview_bolusprogress_delivered)).thenReturn("Delivered")
- danaRPump.bolusingTreatment = Treatment(HasAndroidInjector { AndroidInjector { } })
- val packet = MsgBolusStop(aapsLogger, rxBus, resourceHelper, danaRPump)
+ danaPump.bolusingTreatment = Treatment(HasAndroidInjector { AndroidInjector { } })
+ val packet = MsgBolusStop(injector)
// test message decoding
packet.handleMessage(ByteArray(100))
- Assert.assertEquals(true, danaRPump.bolusStopped)
+ Assert.assertEquals(true, danaPump.bolusStopped)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgCheckValueTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgCheckValueTest.kt
index ec3588fbe7..be0165938f 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgCheckValueTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgCheckValueTest.kt
@@ -1,25 +1,22 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPlugin
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danar.comm.MsgCheckValue
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
-import org.mockito.Mock
import org.powermock.modules.junit4.PowerMockRunner
@RunWith(PowerMockRunner::class)
class MsgCheckValueTest : DanaRTestBase() {
- @Mock lateinit var danaRPlugin: DanaRPlugin
-
@Test fun runTest() {
- val packet = MsgCheckValue(aapsLogger, danaRPump, danaRPlugin)
+ val packet = MsgCheckValue(injector)
// test message decoding
val array = ByteArray(100)
- putByteToArray(array, 0, DanaRPump.EXPORT_MODEL.toByte())
+ putByteToArray(array, 0, DanaPump.EXPORT_MODEL.toByte())
packet.handleMessage(array)
- Assert.assertEquals(DanaRPump.EXPORT_MODEL, danaRPump.model)
+ Assert.assertEquals(DanaPump.EXPORT_MODEL, danaPump.hwModel)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgErrorTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgErrorTest.kt
index 2c372c4c21..a67bad6612 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgErrorTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgErrorTest.kt
@@ -1,12 +1,10 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
-import info.nightscout.androidaps.plugins.bus.RxBusWrapper
+import info.nightscout.androidaps.danar.comm.MsgError
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload
-import info.nightscout.androidaps.utils.resources.ResourceHelper
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
-import org.mockito.Mock
import org.powermock.api.mockito.PowerMockito
import org.powermock.core.classloader.annotations.PrepareForTest
import org.powermock.modules.junit4.PowerMockRunner
@@ -15,12 +13,9 @@ import org.powermock.modules.junit4.PowerMockRunner
@PrepareForTest(NSUpload::class)
class MsgErrorTest : DanaRTestBase() {
- @Mock lateinit var resourceHelper: ResourceHelper
- val rxBus = RxBusWrapper()
-
@Test fun runTest() {
PowerMockito.mockStatic(NSUpload::class.java)
- val packet = MsgError(aapsLogger, rxBus, resourceHelper, danaRPump)
+ val packet = MsgError(injector)
// test message decoding
val array = ByteArray(100)
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryAlarmTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryAlarmTest.kt
index afb5e6ec6c..1f3154a95f 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryAlarmTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryAlarmTest.kt
@@ -1,6 +1,6 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
-import info.nightscout.androidaps.plugins.bus.RxBusWrapper
+import info.nightscout.androidaps.danar.comm.MsgHistoryAlarm
import org.junit.Test
import org.junit.runner.RunWith
import org.powermock.modules.junit4.PowerMockRunner
@@ -8,10 +8,8 @@ import org.powermock.modules.junit4.PowerMockRunner
@RunWith(PowerMockRunner::class)
class MsgHistoryAlarmTest : DanaRTestBase() {
- val rxBus = RxBusWrapper()
-
@Test fun runTest() {
- val packet = MsgHistoryAlarm(aapsLogger, rxBus)
+ val packet = MsgHistoryAlarm(injector)
// nothing left to test
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryAllDoneTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryAllDoneTest.kt
index 7da9c4c241..0e45e40cc6 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryAllDoneTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryAllDoneTest.kt
@@ -1,5 +1,6 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
+import info.nightscout.androidaps.danar.comm.MsgHistoryAllDone
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -9,10 +10,10 @@ import org.powermock.modules.junit4.PowerMockRunner
class MsgHistoryAllDoneTest : DanaRTestBase() {
@Test fun runTest() {
- val packet = MsgHistoryAllDone(aapsLogger, danaRPump)
+ val packet = MsgHistoryAllDone(injector)
// test message decoding
packet.handleMessage(ByteArray(0))
- Assert.assertEquals(true, danaRPump.historyDoneReceived)
+ Assert.assertEquals(true, danaPump.historyDoneReceived)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryAllTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryAllTest.kt
index 47401ff67b..cd95f1a530 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryAllTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryAllTest.kt
@@ -1,8 +1,8 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
import info.nightscout.androidaps.MainApp
+import info.nightscout.androidaps.danar.comm.MsgHistoryAll
import info.nightscout.androidaps.db.DatabaseHelper
-import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -12,16 +12,13 @@ import org.powermock.core.classloader.annotations.PrepareForTest
import org.powermock.modules.junit4.PowerMockRunner
@RunWith(PowerMockRunner::class)
-@PrepareForTest(MainApp::class)
class MsgHistoryAllTest : DanaRTestBase() {
@Test fun runTest() {
- PowerMockito.mockStatic(MainApp::class.java)
- `when`(MainApp.getDbHelper()).thenReturn(PowerMockito.mock(DatabaseHelper::class.java))
- val packet = MsgHistoryAll(aapsLogger, RxBusWrapper())
+ val packet = MsgHistoryAll(injector)
// test message decoding
- val array = ByteArray(100)
+ val array = createArray(100, 2)
putByteToArray(array, 0, 1)
packet.handleMessage(array)
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryBasalHourTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryBasalHourTest.kt
index dd7d81502a..05022714fd 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryBasalHourTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryBasalHourTest.kt
@@ -1,6 +1,6 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
-import info.nightscout.androidaps.plugins.bus.RxBusWrapper
+import info.nightscout.androidaps.danar.comm.MsgHistoryBasalHour
import org.junit.Test
import org.junit.runner.RunWith
import org.powermock.modules.junit4.PowerMockRunner
@@ -9,7 +9,7 @@ import org.powermock.modules.junit4.PowerMockRunner
class MsgHistoryBasalHourTest : DanaRTestBase() {
@Test fun runTest() {
- val packet = MsgHistoryBasalHour(aapsLogger, RxBusWrapper())
+ val packet = MsgHistoryBasalHour(injector)
// nothing left to test
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryBolusTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryBolusTest.kt
index 5edd07ed2e..cbeabe16d1 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryBolusTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryBolusTest.kt
@@ -1,6 +1,6 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
-import info.nightscout.androidaps.plugins.bus.RxBusWrapper
+import info.nightscout.androidaps.danar.comm.MsgHistoryBolus
import org.junit.Test
import org.junit.runner.RunWith
import org.powermock.modules.junit4.PowerMockRunner
@@ -9,7 +9,7 @@ import org.powermock.modules.junit4.PowerMockRunner
class MsgHistoryBolusTest : DanaRTestBase() {
@Test fun runTest() {
- val packet = MsgHistoryBolus(aapsLogger, RxBusWrapper())
+ val packet = MsgHistoryBolus(injector)
// nothing left to test
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryCarboTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryCarboTest.kt
index 225ea67259..1433cb0470 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryCarboTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryCarboTest.kt
@@ -1,6 +1,6 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
-import info.nightscout.androidaps.plugins.bus.RxBusWrapper
+import info.nightscout.androidaps.danar.comm.MsgHistoryCarbo
import org.junit.Test
import org.junit.runner.RunWith
import org.powermock.modules.junit4.PowerMockRunner
@@ -9,7 +9,7 @@ import org.powermock.modules.junit4.PowerMockRunner
class MsgHistoryCarboTest : DanaRTestBase() {
@Test fun runTest() {
- val packet = MsgHistoryCarbo(aapsLogger, RxBusWrapper())
+ val packet = MsgHistoryCarbo(injector)
// nothing left to test
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryDailyInsulinTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryDailyInsulinTest.kt
index b6ef8be268..eae5d34e86 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryDailyInsulinTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryDailyInsulinTest.kt
@@ -1,6 +1,6 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
-import info.nightscout.androidaps.plugins.bus.RxBusWrapper
+import info.nightscout.androidaps.danar.comm.MsgHistoryDailyInsulin
import org.junit.Test
import org.junit.runner.RunWith
import org.powermock.modules.junit4.PowerMockRunner
@@ -9,7 +9,7 @@ import org.powermock.modules.junit4.PowerMockRunner
class MsgHistoryDailyInsulinTest : DanaRTestBase() {
@Test fun runTest() {
- val packet = MsgHistoryDailyInsulin(aapsLogger, RxBusWrapper())
+ val packet = MsgHistoryDailyInsulin(injector)
// nothing left to test
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryDoneTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryDoneTest.kt
index 8530b9baec..86706531cf 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryDoneTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryDoneTest.kt
@@ -1,5 +1,6 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
+import info.nightscout.androidaps.danar.comm.MsgHistoryDone
import org.junit.Test
import org.junit.runner.RunWith
import org.powermock.modules.junit4.PowerMockRunner
@@ -8,7 +9,7 @@ import org.powermock.modules.junit4.PowerMockRunner
class MsgHistoryDoneTest : DanaRTestBase() {
@Test fun runTest() {
- val packet = MsgHistoryDone(aapsLogger, danaRPump)
+ val packet = MsgHistoryDone(injector)
// nothing left to test
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryErrorTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryErrorTest.kt
index 756139c88b..f2618a2bb7 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryErrorTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryErrorTest.kt
@@ -1,6 +1,6 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
-import info.nightscout.androidaps.plugins.bus.RxBusWrapper
+import info.nightscout.androidaps.danar.comm.MsgHistoryError
import org.junit.Test
import org.junit.runner.RunWith
import org.powermock.modules.junit4.PowerMockRunner
@@ -9,7 +9,7 @@ import org.powermock.modules.junit4.PowerMockRunner
class MsgHistoryErrorTest : DanaRTestBase() {
@Test fun runTest() {
- val packet = MsgHistoryError(aapsLogger, RxBusWrapper())
+ val packet = MsgHistoryError(injector)
// nothing left to test
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryGlucoseTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryGlucoseTest.kt
index e460432652..3ec8c737dc 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryGlucoseTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryGlucoseTest.kt
@@ -1,6 +1,6 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
-import info.nightscout.androidaps.plugins.bus.RxBusWrapper
+import info.nightscout.androidaps.danar.comm.MsgHistoryGlucose
import org.junit.Test
import org.junit.runner.RunWith
import org.powermock.modules.junit4.PowerMockRunner
@@ -9,7 +9,7 @@ import org.powermock.modules.junit4.PowerMockRunner
class MsgHistoryGlucoseTest : DanaRTestBase() {
@Test fun runTest() {
- val packet = MsgHistoryGlucose(aapsLogger, RxBusWrapper())
+ val packet = MsgHistoryGlucose(injector)
// nothing left to test
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryNewDoneTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryNewDoneTest.kt
index c5c9ec4f11..0bfceb6477 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryNewDoneTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryNewDoneTest.kt
@@ -1,5 +1,6 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
+import info.nightscout.androidaps.danar.comm.MsgHistoryNewDone
import org.junit.Test
import org.junit.runner.RunWith
import org.powermock.modules.junit4.PowerMockRunner
@@ -8,7 +9,7 @@ import org.powermock.modules.junit4.PowerMockRunner
class MsgHistoryNewDoneTest : DanaRTestBase() {
@Test fun runTest() {
- val packet = MsgHistoryNewDone(aapsLogger, danaRPump)
+ val packet = MsgHistoryNewDone(injector)
// nothing left to test
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryNewTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryNewTest.kt
index 52d000d56d..229a21dde6 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryNewTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryNewTest.kt
@@ -1,6 +1,6 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
-import info.nightscout.androidaps.plugins.bus.RxBusWrapper
+import info.nightscout.androidaps.danar.comm.MsgHistoryNew
import org.junit.Test
import org.junit.runner.RunWith
import org.powermock.modules.junit4.PowerMockRunner
@@ -9,7 +9,7 @@ import org.powermock.modules.junit4.PowerMockRunner
class MsgHistoryNewTest : DanaRTestBase() {
@Test fun runTest() {
- val packet = MsgHistoryNew(aapsLogger, RxBusWrapper())
+ val packet = MsgHistoryNew(injector)
// nothing left to test
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryRefillTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryRefillTest.kt
index 1a2014cb2b..ccbb985ede 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryRefillTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryRefillTest.kt
@@ -1,6 +1,6 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
-import info.nightscout.androidaps.plugins.bus.RxBusWrapper
+import info.nightscout.androidaps.danar.comm.MsgHistoryRefill
import org.junit.Test
import org.junit.runner.RunWith
import org.powermock.modules.junit4.PowerMockRunner
@@ -9,7 +9,7 @@ import org.powermock.modules.junit4.PowerMockRunner
class MsgHistoryRefillTest : DanaRTestBase() {
@Test fun runTest() {
- val packet = MsgHistoryRefill(aapsLogger, RxBusWrapper())
+ val packet = MsgHistoryRefill(injector)
// nothing left to test
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistorySuspendTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistorySuspendTest.kt
index 5863a7596c..a45322f5b9 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistorySuspendTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistorySuspendTest.kt
@@ -1,6 +1,6 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
-import info.nightscout.androidaps.plugins.bus.RxBusWrapper
+import info.nightscout.androidaps.danar.comm.MsgHistorySuspend
import org.junit.Test
import org.junit.runner.RunWith
import org.powermock.modules.junit4.PowerMockRunner
@@ -9,7 +9,7 @@ import org.powermock.modules.junit4.PowerMockRunner
class MsgHistorySuspendTest : DanaRTestBase() {
@Test fun runTest() {
- val packet = MsgHistorySuspend(aapsLogger, RxBusWrapper())
+ val packet = MsgHistorySuspend(injector)
// nothing left to test
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgInitConnStatusBasicTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgInitConnStatusBasicTest.kt
index eba32dbf35..dac1589cac 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgInitConnStatusBasicTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgInitConnStatusBasicTest.kt
@@ -1,5 +1,6 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
+import info.nightscout.androidaps.danar.comm.MsgInitConnStatusBasic
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -9,13 +10,13 @@ import org.powermock.modules.junit4.PowerMockRunner
class MsgInitConnStatusBasicTest : DanaRTestBase() {
@Test fun runTest() {
- val packet = MsgInitConnStatusBasic(aapsLogger, danaRPump)
+ val packet = MsgInitConnStatusBasic(injector)
// test message decoding
val array = ByteArray(100)
putByteToArray(array, 0, 1)
packet.handleMessage(array)
- Assert.assertEquals(true, danaRPump.pumpSuspended)
+ Assert.assertEquals(true, danaPump.pumpSuspended)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgInitConnStatusBolusTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgInitConnStatusBolusTest.kt
index 28039329a7..96c3ead153 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgInitConnStatusBolusTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgInitConnStatusBolusTest.kt
@@ -1,20 +1,16 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
-import info.nightscout.androidaps.plugins.bus.RxBusWrapper
-import info.nightscout.androidaps.utils.resources.ResourceHelper
+import info.nightscout.androidaps.danar.comm.MsgInitConnStatusBolus
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
-import org.mockito.Mock
import org.powermock.modules.junit4.PowerMockRunner
@RunWith(PowerMockRunner::class)
class MsgInitConnStatusBolusTest : DanaRTestBase() {
- @Mock lateinit var resourceHelper: ResourceHelper
-
@Test fun runTest() {
- val packet = MsgInitConnStatusBolus(aapsLogger, RxBusWrapper(), resourceHelper, danaRPump)
+ val packet = MsgInitConnStatusBolus(injector)
// test message decoding
var array = ByteArray(100)
@@ -25,6 +21,6 @@ class MsgInitConnStatusBolusTest : DanaRTestBase() {
array = ByteArray(20)
putByteToArray(array, 0, 1)
packet.handleMessage(array)
- Assert.assertEquals(true, danaRPump.isExtendedBolusEnabled)
+ Assert.assertEquals(true, danaPump.isExtendedBolusEnabled)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgInitConnStatusOptionTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgInitConnStatusOptionTest.kt
index 3b2f7b9045..f86c346ba2 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgInitConnStatusOptionTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgInitConnStatusOptionTest.kt
@@ -1,13 +1,10 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
-import info.nightscout.androidaps.interfaces.ActivePluginProvider
-import info.nightscout.androidaps.plugins.bus.RxBusWrapper
+import info.nightscout.androidaps.danar.comm.MsgInitConnStatusOption
import info.nightscout.androidaps.plugins.pump.virtual.VirtualPumpPlugin
-import info.nightscout.androidaps.utils.resources.ResourceHelper
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
-import org.mockito.Mock
import org.mockito.Mockito.`when`
import org.powermock.api.mockito.PowerMockito
import org.powermock.core.classloader.annotations.PrepareForTest
@@ -17,18 +14,15 @@ import org.powermock.modules.junit4.PowerMockRunner
@PrepareForTest(VirtualPumpPlugin::class)
class MsgInitConnStatusOptionTest : DanaRTestBase() {
- @Mock lateinit var activePlugin: ActivePluginProvider
- @Mock lateinit var resourceHelper: ResourceHelper
-
@Test fun runTest() {
- `when`(activePlugin.activePump).thenReturn(PowerMockito.mock(VirtualPumpPlugin::class.java))
- val packet = MsgInitConnStatusOption(aapsLogger, RxBusWrapper(), resourceHelper, danaRPump, activePlugin)
+ `when`(activePluginProvider.activePump).thenReturn(PowerMockito.mock(VirtualPumpPlugin::class.java))
+ val packet = MsgInitConnStatusOption(injector)
// test message decoding
packet.handleMessage(createArray(20, 1.toByte()))
Assert.assertEquals(true, packet.failed)
// message smaller than 21
packet.handleMessage(createArray(22, 1.toByte()))
- Assert.assertEquals(false, danaRPump.isPasswordOK)
+ Assert.assertEquals(false, danaPump.isPasswordOK)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgInitConnStatusTimeTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgInitConnStatusTimeTest.kt
index c314b5d882..be2a069952 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgInitConnStatusTimeTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgInitConnStatusTimeTest.kt
@@ -1,30 +1,22 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
+import info.nightscout.androidaps.danaRKorean.DanaRKoreanPlugin
+import info.nightscout.androidaps.danar.DanaRPlugin
+import info.nightscout.androidaps.danar.comm.MsgInitConnStatusTime
import info.nightscout.androidaps.interfaces.CommandQueueProvider
-import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPlugin
-import info.nightscout.androidaps.plugins.pump.danaRKorean.DanaRKoreanPlugin
-import info.nightscout.androidaps.utils.resources.ResourceHelper
import org.junit.Assert
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(DanaRKoreanPlugin::class, DanaRPlugin::class, ConfigBuilderPlugin::class)
+@PrepareForTest(DanaRKoreanPlugin::class, DanaRPlugin::class, ConfigBuilderPlugin::class, CommandQueueProvider::class)
class MsgInitConnStatusTimeTest : DanaRTestBase() {
- @Mock lateinit var resourceHelper: ResourceHelper
- @Mock lateinit var danaRPlugin: DanaRPlugin
- @Mock lateinit var danaRKoreanPlugin: DanaRKoreanPlugin
- @Mock lateinit var configBuilderPlugin: ConfigBuilderPlugin
- @Mock lateinit var commandQueue: CommandQueueProvider
-
@Test fun runTest() {
- val packet = MsgInitConnStatusTime(aapsLogger, RxBusWrapper(), resourceHelper, danaRPump, danaRPlugin, danaRKoreanPlugin, configBuilderPlugin, commandQueue)
+ val packet = MsgInitConnStatusTime(injector)
// test message decoding
packet.handleMessage(createArray(20, 1.toByte()))
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgPCCommStartTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgPCCommStartTest.kt
index 8a4856ffab..426086e1b7 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgPCCommStartTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgPCCommStartTest.kt
@@ -1,5 +1,6 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
+import info.nightscout.androidaps.danar.comm.MsgPCCommStart
import org.junit.Test
import org.junit.runner.RunWith
import org.powermock.modules.junit4.PowerMockRunner
@@ -8,7 +9,7 @@ import org.powermock.modules.junit4.PowerMockRunner
class MsgPCCommStartTest : DanaRTestBase() {
@Test fun runTest() {
- val packet = MsgPCCommStart(aapsLogger)
+ val packet = MsgPCCommStart(injector)
// test message decoding
packet.handleMessage(createArray(34, 1.toByte()))
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgPCCommStopTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgPCCommStopTest.kt
index 89b3c6a334..75b60f6686 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgPCCommStopTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgPCCommStopTest.kt
@@ -1,5 +1,6 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
+import info.nightscout.androidaps.danar.comm.MsgPCCommStop
import org.junit.Test
import org.junit.runner.RunWith
import org.powermock.modules.junit4.PowerMockRunner
@@ -8,7 +9,7 @@ import org.powermock.modules.junit4.PowerMockRunner
class MsgPCCommStopTest : DanaRTestBase() {
@Test fun runTest() {
- val packet = MsgPCCommStop(aapsLogger)
+ val packet = MsgPCCommStop(injector)
// test message decoding
packet.handleMessage(createArray(34, 1.toByte()))
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetActivateBasalProfileTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetActivateBasalProfileTest.kt
index 47875c29a7..bafa3b3376 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetActivateBasalProfileTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetActivateBasalProfileTest.kt
@@ -1,5 +1,6 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
+import info.nightscout.androidaps.danar.comm.MsgSetActivateBasalProfile
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -9,7 +10,7 @@ import org.powermock.modules.junit4.PowerMockRunner
class MsgSetActivateBasalProfileTest : DanaRTestBase() {
@Test fun runTest() {
- val packet = MsgSetActivateBasalProfile(aapsLogger, 1.toByte())
+ val packet = MsgSetActivateBasalProfile(injector, 1.toByte())
// test message decoding
packet.handleMessage(createArray(34, 7.toByte()))
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetBasalProfileTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetBasalProfileTest.kt
index 9f6dbeb07e..56c2c51d0e 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetBasalProfileTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetBasalProfileTest.kt
@@ -1,20 +1,16 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
-import info.nightscout.androidaps.plugins.bus.RxBusWrapper
-import info.nightscout.androidaps.utils.resources.ResourceHelper
+import info.nightscout.androidaps.danar.comm.MsgSetBasalProfile
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
-import org.mockito.Mock
import org.powermock.modules.junit4.PowerMockRunner
@RunWith(PowerMockRunner::class)
class MsgSetBasalProfileTest : DanaRTestBase() {
- @Mock lateinit var resourceHelper: ResourceHelper
-
@Test fun runTest() {
- val packet = MsgSetBasalProfile(aapsLogger, RxBusWrapper(), resourceHelper, 1.toByte(), Array(24) { 1.0 })
+ val packet = MsgSetBasalProfile(injector, 1.toByte(), Array(24) { 1.0 })
// test message decoding
packet.handleMessage(createArray(34, 2.toByte()))
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetCarbsEntryTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetCarbsEntryTest.kt
index 2de9486752..9a0ba905ee 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetCarbsEntryTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetCarbsEntryTest.kt
@@ -1,5 +1,6 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
+import info.nightscout.androidaps.danar.comm.MsgSetCarbsEntry
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -9,7 +10,7 @@ import org.powermock.modules.junit4.PowerMockRunner
class MsgSetCarbsEntryTest : DanaRTestBase() {
@Test fun runTest() {
- val packet = MsgSetCarbsEntry(aapsLogger, System.currentTimeMillis(), 10)
+ val packet = MsgSetCarbsEntry(injector, System.currentTimeMillis(), 10)
// test message decoding
packet.handleMessage(createArray(34, 7.toByte()))
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetExtendedBolusStartTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetExtendedBolusStartTest.kt
index 8971cee5f3..967fed825b 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetExtendedBolusStartTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetExtendedBolusStartTest.kt
@@ -1,11 +1,11 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
+import info.nightscout.androidaps.danar.comm.MsgSetExtendedBolusStart
import info.nightscout.androidaps.interfaces.Constraint
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
import org.junit.Assert
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
@@ -14,11 +14,9 @@ import org.powermock.modules.junit4.PowerMockRunner
@PrepareForTest(ConstraintChecker::class)
class MsgSetExtendedBolusStartTest : DanaRTestBase() {
- @Mock lateinit var constraintChecker: ConstraintChecker
-
@Test fun runTest() {
`when`(constraintChecker.applyBolusConstraints(anyObject())).thenReturn(Constraint(0.0))
- val packet = MsgSetExtendedBolusStart(aapsLogger, constraintChecker, 2.0, 2.toByte())
+ val packet = MsgSetExtendedBolusStart(injector, 2.0, 2.toByte())
// test message decoding
packet.handleMessage(createArray(34, 7.toByte()))
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetExtendedBolusStopTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetExtendedBolusStopTest.kt
index 5ed8ed4dcb..dfac8cbfd3 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetExtendedBolusStopTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetExtendedBolusStopTest.kt
@@ -1,5 +1,6 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
+import info.nightscout.androidaps.danar.comm.MsgSetExtendedBolusStop
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -9,7 +10,7 @@ import org.powermock.modules.junit4.PowerMockRunner
class MsgSetExtendedBolusStopTest : DanaRTestBase() {
@Test fun runTest() {
- val packet = MsgSetExtendedBolusStop(aapsLogger)
+ val packet = MsgSetExtendedBolusStop(injector)
// test message decoding
packet.handleMessage(createArray(34, 7.toByte()))
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetSingleBasalProfileTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetSingleBasalProfileTest.kt
index 36fdee444e..79e43acd7e 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetSingleBasalProfileTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetSingleBasalProfileTest.kt
@@ -1,20 +1,16 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
-import info.nightscout.androidaps.plugins.bus.RxBusWrapper
-import info.nightscout.androidaps.utils.resources.ResourceHelper
+import info.nightscout.androidaps.danar.comm.MsgSetSingleBasalProfile
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
-import org.mockito.Mock
import org.powermock.modules.junit4.PowerMockRunner
@RunWith(PowerMockRunner::class)
class MsgSetSingleBasalProfileTest : DanaRTestBase() {
- @Mock lateinit var resourceHelper: ResourceHelper
-
@Test fun runTest() {
- val packet = MsgSetSingleBasalProfile(aapsLogger, RxBusWrapper(), resourceHelper, createArray(24, 2.0))
+ val packet = MsgSetSingleBasalProfile(injector, createArray(24, 2.0))
// test message decoding
packet.handleMessage(createArray(34, 7.toByte()))
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetTempBasalStartTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetTempBasalStartTest.kt
index cee42aea82..715a491779 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetTempBasalStartTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetTempBasalStartTest.kt
@@ -1,5 +1,6 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
+import info.nightscout.androidaps.danar.comm.MsgSetTempBasalStart
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -9,7 +10,7 @@ import org.powermock.modules.junit4.PowerMockRunner
class MsgSetTempBasalStartTest : DanaRTestBase() {
@Test fun runTest() {
- val packet = MsgSetTempBasalStart(aapsLogger, 250, 1)
+ val packet = MsgSetTempBasalStart(injector, 250, 1)
// test message decoding
packet.handleMessage(createArray(34, 7.toByte()))
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetTimeTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetTimeTest.kt
index 067d368591..44a1c64ddb 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetTimeTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetTimeTest.kt
@@ -1,16 +1,16 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
+import info.nightscout.androidaps.danar.comm.MsgSetTime
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
import org.powermock.modules.junit4.PowerMockRunner
-import java.util.*
@RunWith(PowerMockRunner::class)
class MsgSetTimeTest : DanaRTestBase() {
@Test fun runTest() {
- val packet = MsgSetTime(aapsLogger, Date(System.currentTimeMillis()))
+ val packet = MsgSetTime(injector, System.currentTimeMillis())
// test message decoding
packet.handleMessage(createArray(34, 7.toByte()))
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetUserOptionsTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetUserOptionsTest.kt
index d151b539c0..14c70f4a04 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetUserOptionsTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetUserOptionsTest.kt
@@ -1,5 +1,6 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
+import info.nightscout.androidaps.danar.comm.MsgSetUserOptions
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -9,7 +10,7 @@ import org.powermock.modules.junit4.PowerMockRunner
class MsgSetUserOptionsTest : DanaRTestBase() {
@Test fun runTest() {
- val packet = MsgSetUserOptions(aapsLogger, danaRPump)
+ val packet = MsgSetUserOptions(injector)
// test message decoding
packet.handleMessage(createArray(34, 7.toByte()))
Assert.assertEquals(true, packet.failed)
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingActiveProfileTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingActiveProfileTest.kt
index 3af752abe9..532d6e0c7b 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingActiveProfileTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingActiveProfileTest.kt
@@ -1,5 +1,6 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
+import info.nightscout.androidaps.danar.comm.MsgSettingActiveProfile
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -9,10 +10,10 @@ import org.powermock.modules.junit4.PowerMockRunner
class MsgSettingActiveProfileTest : DanaRTestBase() {
@Test fun runTest() {
- val packet = MsgSettingActiveProfile(aapsLogger, danaRPump)
+ val packet = MsgSettingActiveProfile(injector)
// test message decoding
packet.handleMessage(createArray(34, 7.toByte()))
- Assert.assertEquals(MessageBase.intFromBuff(createArray(34, 7.toByte()), 0, 1), danaRPump.activeProfile)
+ Assert.assertEquals(packet.intFromBuff(createArray(34, 7.toByte()), 0, 1), danaPump.activeProfile)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingBasalProfileAllTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingBasalProfileAllTest.kt
index 2d38ce7bd7..cf172d5f50 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingBasalProfileAllTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingBasalProfileAllTest.kt
@@ -1,5 +1,6 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
+import info.nightscout.androidaps.danar.comm.MsgSettingBasalProfileAll
import org.junit.Test
import org.junit.runner.RunWith
import org.powermock.modules.junit4.PowerMockRunner
@@ -8,7 +9,7 @@ import org.powermock.modules.junit4.PowerMockRunner
class MsgSettingBasalProfileAllTest : DanaRTestBase() {
@Test fun runTest() {
- val packet = MsgSettingBasalProfileAll(aapsLogger, danaRPump)
+ val packet = MsgSettingBasalProfileAll(injector)
// test message decoding
packet.handleMessage(createArray(400, 1.toByte()))
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingBasalTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingBasalTest.kt
index 158a364a6d..7d281f6b50 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingBasalTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingBasalTest.kt
@@ -1,28 +1,25 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
+import info.nightscout.androidaps.danar.comm.MsgSettingBasal
import info.nightscout.androidaps.interfaces.PumpDescription
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPlugin
import org.junit.Assert
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
@RunWith(PowerMockRunner::class)
-@PrepareForTest(DanaRPlugin::class)
+@PrepareForTest(info.nightscout.androidaps.danar.DanaRPlugin::class)
class MsgSettingBasalTest : DanaRTestBase() {
- @Mock lateinit var danaRPlugin: DanaRPlugin
-
@Test fun runTest() {
`when`(danaRPlugin.getPumpDescription()).thenReturn(PumpDescription())
- val packet = MsgSettingBasal(aapsLogger, danaRPump, danaRPlugin)
+ val packet = MsgSettingBasal(injector)
// test message decoding
packet.handleMessage(createArray(100, 1.toByte()))
- val expected = MessageBase.intFromBuff(createArray(100, 1.toByte()), 2 * 1, 2)
- Assert.assertEquals(expected.toDouble() / 100.0, danaRPump.pumpProfiles!![danaRPump.activeProfile][1], 0.0)
+ val expected = packet.intFromBuff(createArray(100, 1.toByte()), 2 * 1, 2)
+ Assert.assertEquals(expected.toDouble() / 100.0, danaPump.pumpProfiles!![danaPump.activeProfile][1], 0.0)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingGlucoseTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingGlucoseTest.kt
index 99da2bbc92..5a779d70b6 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingGlucoseTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingGlucoseTest.kt
@@ -1,5 +1,6 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
+import info.nightscout.androidaps.danar.comm.MsgSettingGlucose
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -9,10 +10,10 @@ import org.powermock.modules.junit4.PowerMockRunner
class MsgSettingGlucoseTest : DanaRTestBase() {
@Test fun runTest() {
- val packet = MsgSettingGlucose(aapsLogger, danaRPump)
+ val packet = MsgSettingGlucose(injector)
// test message decoding
packet.handleMessage(createArray(34, 1.toByte()))
- Assert.assertEquals(1, danaRPump.units)
+ Assert.assertEquals(1, danaPump.units)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingMaxValuesTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingMaxValuesTest.kt
index 07500d1ce5..95152aed97 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingMaxValuesTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingMaxValuesTest.kt
@@ -1,5 +1,6 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
+import info.nightscout.androidaps.danar.comm.MsgSettingMaxValues
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -9,10 +10,10 @@ import org.powermock.modules.junit4.PowerMockRunner
class MsgSettingMaxValuesTest : DanaRTestBase() {
@Test fun runTest() {
- val packet = MsgSettingMaxValues(aapsLogger, danaRPump)
+ val packet = MsgSettingMaxValues(injector)
// test message decoding
packet.handleMessage(createArray(34, 7.toByte()))
- Assert.assertEquals(MessageBase.intFromBuff(createArray(10, 7.toByte()), 0, 2).toDouble() / 100.0, danaRPump.maxBolus, 0.0)
+ Assert.assertEquals(packet.intFromBuff(createArray(10, 7.toByte()), 0, 2).toDouble() / 100.0, danaPump.maxBolus, 0.0)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingMealTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingMealTest.kt
index a56270ad09..1c7126485b 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingMealTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingMealTest.kt
@@ -1,13 +1,11 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
-import info.nightscout.androidaps.plugins.bus.RxBusWrapper
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPlugin
-import info.nightscout.androidaps.plugins.pump.danaRKorean.DanaRKoreanPlugin
-import info.nightscout.androidaps.utils.resources.ResourceHelper
+import info.nightscout.androidaps.danaRKorean.DanaRKoreanPlugin
+import info.nightscout.androidaps.danar.DanaRPlugin
+import info.nightscout.androidaps.danar.comm.MsgSettingMeal
import org.junit.Assert
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
@@ -15,15 +13,11 @@ import org.powermock.modules.junit4.PowerMockRunner
@PrepareForTest(DanaRPlugin::class, DanaRKoreanPlugin::class)
class MsgSettingMealTest : DanaRTestBase() {
- @Mock lateinit var resourceHelper: ResourceHelper
- @Mock lateinit var danaRPlugin: DanaRPlugin
- @Mock lateinit var danaRKoreanPlugin: DanaRKoreanPlugin
-
@Test fun runTest() {
- val packet = MsgSettingMeal(aapsLogger, RxBusWrapper(), resourceHelper, danaRPump, danaRKoreanPlugin)
+ val packet = MsgSettingMeal(injector)
// test message decoding
packet.handleMessage(createArray(34, 1.toByte()))
- Assert.assertEquals(MessageBase.intFromBuff(createArray(10, 1.toByte()), 0, 1).toDouble() / 100.0, danaRPump.bolusStep, 0.0)
+ Assert.assertEquals(packet.intFromBuff(createArray(10, 1.toByte()), 0, 1).toDouble() / 100.0, danaPump.bolusStep, 0.0)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingProfileRatiosAllTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingProfileRatiosAllTest.kt
index be2f65f3ad..d04e4dcfcb 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingProfileRatiosAllTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingProfileRatiosAllTest.kt
@@ -1,6 +1,7 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danar.comm.MsgSettingProfileRatiosAll
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -10,11 +11,11 @@ import org.powermock.modules.junit4.PowerMockRunner
class MsgSettingProfileRatiosAllTest : DanaRTestBase() {
@Test fun runTest() {
- val packet = MsgSettingProfileRatiosAll(aapsLogger, danaRPump)
- danaRPump.units = DanaRPump.UNITS_MGDL
+ val packet = MsgSettingProfileRatiosAll(injector)
+ danaPump.units = DanaPump.UNITS_MGDL
// test message decoding
packet.handleMessage(createArray(34, 7.toByte()))
- Assert.assertEquals(MessageBase.intFromBuff(createArray(10, 7.toByte()), 0, 2), danaRPump.morningCIR)
+ Assert.assertEquals(packet.intFromBuff(createArray(10, 7.toByte()), 0, 2), danaPump.morningCIR)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingProfileRatiosTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingProfileRatiosTest.kt
index 080aef2a8d..2cc012862c 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingProfileRatiosTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingProfileRatiosTest.kt
@@ -1,6 +1,7 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danar.comm.MsgSettingProfileRatios
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -10,10 +11,10 @@ import org.powermock.modules.junit4.PowerMockRunner
class MsgSettingProfileRatiosTest : DanaRTestBase() {
@Test fun runTest() {
- val packet = MsgSettingProfileRatios(aapsLogger, danaRPump)
- danaRPump.units = DanaRPump.UNITS_MGDL
+ val packet = MsgSettingProfileRatios(injector)
+ danaPump.units = DanaPump.UNITS_MGDL
// test message decoding
packet.handleMessage(createArray(34, 7.toByte()))
- Assert.assertEquals(MessageBase.intFromBuff(createArray(10, 7.toByte()), 0, 2), danaRPump.currentCIR)
+ Assert.assertEquals(packet.intFromBuff(createArray(10, 7.toByte()), 0, 2), danaPump.currentCIR)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingPumpTimeTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingPumpTimeTest.kt
index 7a40b86a07..600768548f 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingPumpTimeTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingPumpTimeTest.kt
@@ -1,6 +1,7 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danar.comm.MsgSettingPumpTime
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -11,19 +12,19 @@ import java.util.*
class MsgSettingPumpTimeTest : DanaRTestBase() {
@Test fun runTest() {
- val packet = MsgSettingPumpTime(aapsLogger, danaRPump)
- danaRPump.units = DanaRPump.UNITS_MGDL
+ val packet = MsgSettingPumpTime(injector)
+ danaPump.units = DanaPump.UNITS_MGDL
// test message decoding
val bytes = createArray(34, 7.toByte())
val time = Date(
- 100 + MessageBase.intFromBuff(bytes, 5, 1),
- MessageBase.intFromBuff(bytes, 4, 1) - 1,
- MessageBase.intFromBuff(bytes, 3, 1),
- MessageBase.intFromBuff(bytes, 2, 1),
- MessageBase.intFromBuff(bytes, 1, 1),
- MessageBase.intFromBuff(bytes, 0, 1)
+ 100 + packet.intFromBuff(bytes, 5, 1),
+ packet.intFromBuff(bytes, 4, 1) - 1,
+ packet.intFromBuff(bytes, 3, 1),
+ packet.intFromBuff(bytes, 2, 1),
+ packet.intFromBuff(bytes, 1, 1),
+ packet.intFromBuff(bytes, 0, 1)
).time
packet.handleMessage(bytes)
- Assert.assertEquals(time, danaRPump.pumpTime)
+ Assert.assertEquals(time, danaPump.getPumpTime())
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingShippingInfoTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingShippingInfoTest.kt
index 7f9e2ea6c3..f75ed71ba7 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingShippingInfoTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingShippingInfoTest.kt
@@ -1,6 +1,8 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danar.comm.MessageBase
+import info.nightscout.androidaps.danar.comm.MsgSettingShippingInfo
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -10,10 +12,10 @@ import org.powermock.modules.junit4.PowerMockRunner
class MsgSettingShippingInfoTest : DanaRTestBase() {
@Test fun runTest() {
- val packet = MsgSettingShippingInfo(aapsLogger, danaRPump)
- danaRPump.units = DanaRPump.UNITS_MGDL
+ val packet = MsgSettingShippingInfo(injector)
+ danaPump.units = DanaPump.UNITS_MGDL
// test message decoding
packet.handleMessage(createArray(34, 7.toByte()))
- Assert.assertEquals(MessageBase.stringFromBuff(createArray(34, 7.toByte()), 0, 10), danaRPump.serialNumber)
+ Assert.assertEquals(MessageBase.stringFromBuff(createArray(34, 7.toByte()), 0, 10), danaPump.serialNumber)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingUserOptionsTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingUserOptionsTest.kt
index f18dde576b..c9c300081d 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingUserOptionsTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingUserOptionsTest.kt
@@ -1,20 +1,20 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danar.comm.MsgSettingUserOptions
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
import org.powermock.modules.junit4.PowerMockRunner
-import kotlin.experimental.and
@RunWith(PowerMockRunner::class)
class MsgSettingUserOptionsTest : DanaRTestBase() {
@Test fun runTest() {
- val packet = MsgSettingUserOptions(aapsLogger, danaRPump)
- danaRPump.units = DanaRPump.UNITS_MGDL
+ val packet = MsgSettingUserOptions(injector)
+ danaPump.units = DanaPump.UNITS_MGDL
// test message decoding
packet.handleMessage(createArray(48, 7.toByte()))
- Assert.assertEquals(7, danaRPump.lcdOnTimeSec)
+ Assert.assertEquals(7, danaPump.lcdOnTimeSec)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgStatusBasicTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgStatusBasicTest.kt
index b627d55c86..910e84830f 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgStatusBasicTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgStatusBasicTest.kt
@@ -1,5 +1,6 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
+import info.nightscout.androidaps.danar.comm.MsgStatusBasic
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -9,9 +10,9 @@ import org.powermock.modules.junit4.PowerMockRunner
class MsgStatusBasicTest : DanaRTestBase() {
@Test fun runTest() {
- val packet = MsgStatusBasic(aapsLogger, danaRPump)
+ val packet = MsgStatusBasic(injector)
// test message decoding
packet.handleMessage(createArray(34, 7.toByte()))
- Assert.assertEquals(MessageBase.intFromBuff(createArray(34, 7.toByte()), 0, 3).toDouble() / 750.0, danaRPump.dailyTotalUnits, 0.0)
+ Assert.assertEquals(packet.intFromBuff(createArray(34, 7.toByte()), 0, 3).toDouble() / 750.0, danaPump.dailyTotalUnits, 0.0)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgStatusBolusExtendedTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgStatusBolusExtendedTest.kt
index 67403dfcd3..4621f34029 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgStatusBolusExtendedTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgStatusBolusExtendedTest.kt
@@ -1,28 +1,23 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
-import info.nightscout.androidaps.interfaces.ActivePluginProvider
-import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
+import info.nightscout.androidaps.danar.comm.MsgStatusBolusExtended
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
-import org.mockito.Mock
import org.mockito.Mockito.`when`
import org.powermock.modules.junit4.PowerMockRunner
@RunWith(PowerMockRunner::class)
class MsgStatusBolusExtendedTest : DanaRTestBase() {
- @Mock lateinit var activePlugin: ActivePluginProvider
- @Mock lateinit var treatmentsPlugin: TreatmentsPlugin
-
@Test
fun runTest() {
- `when`(activePlugin.activeTreatments).thenReturn(treatmentsPlugin)
- val packet = MsgStatusBolusExtended(injector, aapsLogger, danaRPump, activePlugin)
+ `when`(activePluginProvider.activeTreatments).thenReturn(treatmentsInterface)
+ val packet = MsgStatusBolusExtended(injector)
// test message decoding
val array = ByteArray(100)
putByteToArray(array, 0, 1)
packet.handleMessage(array)
- Assert.assertEquals(true, danaRPump.isExtendedInProgress)
+ Assert.assertEquals(true, danaPump.isExtendedInProgress)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgStatusProfileTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgStatusProfileTest.kt
index 4af9c12894..3872536d6e 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgStatusProfileTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgStatusProfileTest.kt
@@ -1,6 +1,7 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danar.comm.MsgStatusProfile
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -10,10 +11,10 @@ import org.powermock.modules.junit4.PowerMockRunner
class MsgStatusProfileTest : DanaRTestBase() {
@Test fun runTest() {
- val packet = MsgStatusProfile(aapsLogger, danaRPump)
- danaRPump.units = DanaRPump.UNITS_MGDL
+ val packet = MsgStatusProfile(injector)
+ danaPump.units = DanaPump.UNITS_MGDL
// test message decoding
packet.handleMessage(createArray(34, 7.toByte()))
- Assert.assertEquals(MessageBase.intFromBuff(createArray(10, 7.toByte()), 0, 2), danaRPump.currentCIR)
+ Assert.assertEquals(packet.intFromBuff(createArray(10, 7.toByte()), 0, 2), danaPump.currentCIR)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgStatusTempBasalTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgStatusTempBasalTest.kt
index 7c8fc242cd..8827e59bcb 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgStatusTempBasalTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgStatusTempBasalTest.kt
@@ -1,12 +1,10 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
-import info.nightscout.androidaps.interfaces.ActivePluginProvider
+import info.nightscout.androidaps.danar.comm.MsgStatusTempBasal
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
-import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
import org.junit.Assert
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
@@ -15,18 +13,15 @@ import org.powermock.modules.junit4.PowerMockRunner
@PrepareForTest(ConfigBuilderPlugin::class)
class MsgStatusTempBasalTest : DanaRTestBase() {
- @Mock lateinit var activePlugin: ActivePluginProvider
- @Mock lateinit var treatmentsPlugin: TreatmentsPlugin
-
@Test fun runTest() {
- `when`(activePlugin.activeTreatments).thenReturn(treatmentsPlugin)
- val packet = MsgStatusTempBasal(aapsLogger, danaRPump, activePlugin, injector)
+ `when`(activePluginProvider.activeTreatments).thenReturn(treatmentsInterface)
+ val packet = MsgStatusTempBasal(injector)
// test message decoding
// test message decoding
packet.handleMessage(createArray(34, 1.toByte()))
- Assert.assertEquals(true, danaRPump.isTempBasalInProgress)
+ Assert.assertEquals(true, danaPump.isTempBasalInProgress)
// passing an bigger number
packet.handleMessage(createArray(34, 2.toByte()))
- Assert.assertEquals(false, danaRPump.isTempBasalInProgress)
+ Assert.assertEquals(false, danaPump.isTempBasalInProgress)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgStatusTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgStatusTest.kt
index 8bde4483c0..ad8ef6a2d1 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgStatusTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgStatusTest.kt
@@ -1,5 +1,6 @@
package info.nightscout.androidaps.plugins.pump.danaR.comm
+import info.nightscout.androidaps.danar.comm.MsgStatus
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -9,9 +10,9 @@ import org.powermock.modules.junit4.PowerMockRunner
class MsgStatusTest : DanaRTestBase() {
@Test fun runTest() {
- val packet = MsgStatus(aapsLogger, danaRPump)
+ val packet = MsgStatus(injector)
// test message decoding
packet.handleMessage(createArray(34, 7.toByte()))
- Assert.assertEquals(MessageBase.intFromBuff(createArray(34, 7.toByte()), 0, 3).toDouble() / 750.0, danaRPump.dailyTotalUnits, 0.0)
+ Assert.assertEquals(packet.intFromBuff(createArray(34, 7.toByte()), 0, 3).toDouble() / 750.0, danaPump.dailyTotalUnits, 0.0)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/RecordTypesTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/RecordTypesTest.kt
index 51f06e7ec9..c67d8c0b52 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/RecordTypesTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaR/comm/RecordTypesTest.kt
@@ -6,6 +6,6 @@ import org.junit.Test
class RecordTypesTest {
@Test fun runTest() {
- Assert.assertEquals(1.toByte(), RecordTypes.RECORD_TYPE_BOLUS)
+ Assert.assertEquals(1.toByte(), info.nightscout.androidaps.dana.comm.RecordTypes.RECORD_TYPE_BOLUS)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRKorean/DanaRKoreanPluginTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRKorean/DanaRKoreanPluginTest.kt
index 5dd1c1a3b0..f5e463523a 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRKorean/DanaRKoreanPluginTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRKorean/DanaRKoreanPluginTest.kt
@@ -6,12 +6,12 @@ import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.Constants
import info.nightscout.androidaps.R
import info.nightscout.androidaps.TestBaseWithProfile
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danaRKorean.DanaRKoreanPlugin
import info.nightscout.androidaps.interfaces.CommandQueueProvider
import info.nightscout.androidaps.interfaces.Constraint
import info.nightscout.androidaps.interfaces.PluginType
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
-import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
import info.nightscout.androidaps.utils.sharedPreferences.SP
import org.junit.Assert
import org.junit.Before
@@ -31,7 +31,7 @@ class DanaRKoreanPluginTest : TestBaseWithProfile() {
@Mock lateinit var sp: SP
@Mock lateinit var commandQueue: CommandQueueProvider
- lateinit var danaRPump: DanaRPump
+ lateinit var danaPump: DanaPump
private lateinit var danaRPlugin: DanaRKoreanPlugin
@@ -45,15 +45,15 @@ class DanaRKoreanPluginTest : TestBaseWithProfile() {
`when`(resourceHelper.gs(R.string.pumplimit)).thenReturn("pump limit")
`when`(resourceHelper.gs(R.string.limitingbasalratio)).thenReturn("Limiting max basal rate to %1\$.2f U/h because of %2\$s")
`when`(resourceHelper.gs(R.string.limitingpercentrate)).thenReturn("Limiting max percent rate to %1\$d%% because of %2\$s")
- danaRPump = DanaRPump(aapsLogger, sp, injector)
- danaRPlugin = DanaRKoreanPlugin(injector, aapsLogger, rxBus, danaRPump, context, resourceHelper, constraintChecker, treatmentsPlugin, sp, commandQueue)
+ danaPump = DanaPump(aapsLogger, sp, injector)
+ danaRPlugin = DanaRKoreanPlugin(injector, aapsLogger, rxBus, danaPump, context, resourceHelper, constraintChecker, activePluginProvider, sp, commandQueue, dateUtil, fabricPrivacy)
}
@Test @Throws(Exception::class)
fun basalRateShouldBeLimited() {
danaRPlugin.setPluginEnabled(PluginType.PUMP, true)
danaRPlugin.setPluginEnabled(PluginType.PUMP, true)
- danaRPump.maxBasal = 0.8
+ danaPump.maxBasal = 0.8
val c = Constraint(Constants.REALLYHIGHBASALRATE)
danaRPlugin.applyBasalConstraints(c, validProfile)
Assert.assertEquals(0.8, c.value(), 0.01)
@@ -65,7 +65,7 @@ class DanaRKoreanPluginTest : TestBaseWithProfile() {
fun percentBasalRateShouldBeLimited() {
danaRPlugin.setPluginEnabled(PluginType.PUMP, true)
danaRPlugin.setPluginEnabled(PluginType.PUMP, true)
- danaRPump.maxBasal = 0.8
+ danaPump.maxBasal = 0.8
val c = Constraint(Constants.REALLYHIGHPERCENTBASALRATE)
danaRPlugin.applyBasalPercentConstraints(c, validProfile)
Assert.assertEquals(200, c.value())
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRKorean/comm/MessageHashTableRKoreanTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRKorean/comm/MessageHashTableRKoreanTest.kt
index d3edf9690c..1632760ba7 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRKorean/comm/MessageHashTableRKoreanTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRKorean/comm/MessageHashTableRKoreanTest.kt
@@ -1,38 +1,26 @@
package info.nightscout.androidaps.plugins.pump.danaRKorean.comm
-import info.nightscout.androidaps.interfaces.ActivePluginProvider
-import info.nightscout.androidaps.interfaces.CommandQueueProvider
+import info.nightscout.androidaps.danaRKorean.comm.MessageHashTableRKorean
import info.nightscout.androidaps.interfaces.Constraint
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
import info.nightscout.androidaps.plugins.pump.common.bolusInfo.DetailedBolusInfoStorage
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPlugin
-import info.nightscout.androidaps.plugins.pump.danaRKorean.DanaRKoreanPlugin
-import info.nightscout.androidaps.plugins.pump.danaRS.comm.DanaRSTestBase
-import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
+import info.nightscout.androidaps.plugins.pump.danaR.comm.DanaRTestBase
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
-import org.mockito.Mock
import org.mockito.Mockito
import org.powermock.core.classloader.annotations.PrepareForTest
import org.powermock.modules.junit4.PowerMockRunner
@RunWith(PowerMockRunner::class)
@PrepareForTest(ConstraintChecker::class, DetailedBolusInfoStorage::class, ConfigBuilderPlugin::class)
-class MessageHashTableRKoreanTest : DanaRSTestBase() {
+class MessageHashTableRKoreanTest : DanaRTestBase() {
- @Mock lateinit var constraintChecker: ConstraintChecker
- @Mock lateinit var danaRPlugin: DanaRPlugin
- @Mock lateinit var danaRKoreanPlugin: DanaRKoreanPlugin
- @Mock lateinit var configBuilderPlugin: ConfigBuilderPlugin
- @Mock lateinit var commandQueue: CommandQueueProvider
- @Mock lateinit var activePlugin: ActivePluginProvider
- @Mock lateinit var detailedBolusInfoStorage: DetailedBolusInfoStorage
@Test fun runTest() {
Mockito.`when`(constraintChecker.applyBolusConstraints(anyObject())).thenReturn(Constraint(0.0))
- val messageHashTable = MessageHashTableRKorean(aapsLogger, rxBus, resourceHelper, constraintChecker, danaRPump, danaRPlugin, danaRKoreanPlugin, configBuilderPlugin, commandQueue, activePlugin, injector)
+ val messageHashTable = MessageHashTableRKorean(injector)
val testMessage = messageHashTable.findMessage(0x41f2)
Assert.assertEquals("CMD_HISTORY_ALL", testMessage.messageName)
}
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/DanaRSPluginTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/DanaRSPluginTest.kt
index 6df25b94c7..d1619600d5 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/DanaRSPluginTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/DanaRSPluginTest.kt
@@ -3,17 +3,17 @@ package info.nightscout.androidaps.plugins.pump.danaRS
import android.content.Context
import dagger.android.AndroidInjector
import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.Config
import info.nightscout.androidaps.Constants
import info.nightscout.androidaps.R
+import info.nightscout.androidaps.danars.DanaRSPlugin
+import info.nightscout.androidaps.danars.comm.DanaRSTestBase
import info.nightscout.androidaps.interfaces.CommandQueueProvider
import info.nightscout.androidaps.interfaces.Constraint
import info.nightscout.androidaps.interfaces.PluginType
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
import info.nightscout.androidaps.plugins.pump.common.bolusInfo.DetailedBolusInfoStorage
-import info.nightscout.androidaps.plugins.pump.danaRS.comm.DanaRSTestBase
-import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
import org.junit.Assert
import org.junit.Before
import org.junit.Test
@@ -39,7 +39,7 @@ class DanaRSPluginTest : DanaRSTestBase() {
fun basalRateShouldBeLimited() {
danaRSPlugin.setPluginEnabled(PluginType.PUMP, true)
danaRSPlugin.setPluginEnabled(PluginType.PUMP, true)
- danaRPump.maxBasal = 0.8
+ danaPump.maxBasal = 0.8
val c = Constraint(Constants.REALLYHIGHBASALRATE)
danaRSPlugin.applyBasalConstraints(c, validProfile)
Assert.assertEquals(java.lang.Double.valueOf(0.8), c.value(), 0.0001)
@@ -51,7 +51,7 @@ class DanaRSPluginTest : DanaRSTestBase() {
fun percentBasalRateShouldBeLimited() {
danaRSPlugin.setPluginEnabled(PluginType.PUMP, true)
danaRSPlugin.setPluginEnabled(PluginType.PUMP, true)
- danaRPump.maxBasal = 0.8
+ danaPump.maxBasal = 0.8
val c = Constraint(Constants.REALLYHIGHPERCENTBASALRATE)
danaRSPlugin.applyBasalPercentConstraints(c, validProfile)
Assert.assertEquals(200, c.value())
@@ -65,6 +65,6 @@ class DanaRSPluginTest : DanaRSTestBase() {
Mockito.`when`(resourceHelper.gs(eq(R.string.limitingbasalratio), anyObject(), anyObject())).thenReturn("limitingbasalratio")
Mockito.`when`(resourceHelper.gs(eq(R.string.limitingpercentrate), anyObject(), anyObject())).thenReturn("limitingpercentrate")
- danaRSPlugin = DanaRSPlugin(HasAndroidInjector { AndroidInjector { Unit } }, aapsLogger, rxBus, context, resourceHelper, constraintChecker, profileFunction, treatmentsPlugin, sp, commandQueue, danaRPump, detailedBolusInfoStorage)
+ danaRSPlugin = DanaRSPlugin(HasAndroidInjector { AndroidInjector { Unit } }, aapsLogger, rxBus, context, resourceHelper, constraintChecker, profileFunction, activePluginProvider, sp, commandQueue, danaPump, detailedBolusInfoStorage, fabricPrivacy, dateUtil)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Step_Bolus_InformationTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Step_Bolus_InformationTest.kt
deleted file mode 100644
index 86239a8ea1..0000000000
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Step_Bolus_InformationTest.kt
+++ /dev/null
@@ -1,25 +0,0 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
-
-import org.junit.Assert
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.powermock.core.classloader.annotations.PrepareForTest
-import org.powermock.modules.junit4.PowerMockRunner
-
-@RunWith(PowerMockRunner::class)
-@PrepareForTest()
-class DanaRS_Packet_Bolus_Get_Step_Bolus_InformationTest : DanaRSTestBase() {
-
- @Test fun runTest() {
- val packet = DanaRS_Packet_Bolus_Get_Step_Bolus_Information(aapsLogger, danaRPump)
- Assert.assertEquals(null, packet.requestParams)
- // test message decoding
- packet.handleMessage(createArray(34, 0.toByte()))
- Assert.assertEquals(false, packet.failed)
- packet.handleMessage(createArray(34, 1.toByte()))
- val valueRequested: Int = (1 and 0x000000FF shl 8) + (1 and 0x000000FF)
- Assert.assertEquals(valueRequested / 100.0, danaRPump.lastBolusAmount, 0.0)
- Assert.assertEquals(true, packet.failed)
- Assert.assertEquals("BOLUS__GET_STEP_BOLUS_INFORMATION", packet.friendlyName)
- }
-}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Get_More_InformationTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Get_More_InformationTest.kt
deleted file mode 100644
index 327aa1c8a6..0000000000
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Get_More_InformationTest.kt
+++ /dev/null
@@ -1,27 +0,0 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
-
-import org.junit.Assert
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.powermock.core.classloader.annotations.PrepareForTest
-import org.powermock.modules.junit4.PowerMockRunner
-
-@RunWith(PowerMockRunner::class)
-@PrepareForTest()
-class DanaRS_Packet_General_Get_More_InformationTest : DanaRSTestBase() {
-
- @Test fun runTest() {
- var packet = DanaRS_Packet_General_Get_More_Information(aapsLogger, danaRPump)
- Assert.assertEquals(null, packet.requestParams)
- // test message decoding
- // test for the length message
- packet.handleMessage(createArray(13, 0.toByte()))
- Assert.assertEquals(true, packet.failed)
- packet = DanaRS_Packet_General_Get_More_Information(aapsLogger, danaRPump)
- packet.handleMessage(createArray(15, 0.toByte()))
- Assert.assertEquals(false, packet.failed)
- packet.handleMessage(createArray(15, 161.toByte()))
- Assert.assertEquals(true, packet.failed)
- Assert.assertEquals("REVIEW__GET_MORE_INFORMATION", packet.friendlyName)
- }
-}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_AlarmTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_AlarmTest.kt
deleted file mode 100644
index 743d3f66e7..0000000000
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_AlarmTest.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
-
-import org.junit.Assert
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.powermock.core.classloader.annotations.PrepareForTest
-import org.powermock.modules.junit4.PowerMockRunner
-
-@RunWith(PowerMockRunner::class)
-@PrepareForTest()
-class DanaRS_Packet_History_AlarmTest : DanaRSTestBase() {
-
- @Test fun runTest() {
- val packet = DanaRS_Packet_History_Alarm(aapsLogger, rxBus, System.currentTimeMillis())
- Assert.assertEquals("REVIEW__ALARM", packet.friendlyName)
- }
-}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_All_HistoryTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_All_HistoryTest.kt
deleted file mode 100644
index 1f7dd00783..0000000000
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_All_HistoryTest.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
-
-import org.junit.Assert
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.powermock.core.classloader.annotations.PrepareForTest
-import org.powermock.modules.junit4.PowerMockRunner
-
-@RunWith(PowerMockRunner::class)
-@PrepareForTest()
-class DanaRS_Packet_History_All_HistoryTest : DanaRSTestBase() {
-
- @Test fun runTest() {
- val packet = DanaRS_Packet_History_All_History(aapsLogger, rxBus, System.currentTimeMillis())
- Assert.assertEquals("REVIEW__ALL_HISTORY", packet.friendlyName)
- }
-}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_BasalTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_BasalTest.kt
deleted file mode 100644
index 8451e90b0f..0000000000
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_BasalTest.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
-
-import org.junit.Assert
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.powermock.core.classloader.annotations.PrepareForTest
-import org.powermock.modules.junit4.PowerMockRunner
-
-@RunWith(PowerMockRunner::class)
-@PrepareForTest()
-class DanaRS_Packet_History_BasalTest : DanaRSTestBase() {
-
- @Test fun runTest() {
- val packet = DanaRS_Packet_History_Basal(aapsLogger, rxBus, System.currentTimeMillis())
- Assert.assertEquals("REVIEW__BASAL", packet.friendlyName)
- }
-}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_Blood_GlucoseTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_Blood_GlucoseTest.kt
deleted file mode 100644
index 0442ea98b9..0000000000
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_Blood_GlucoseTest.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
-
-import org.junit.Assert
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.powermock.core.classloader.annotations.PrepareForTest
-import org.powermock.modules.junit4.PowerMockRunner
-
-@RunWith(PowerMockRunner::class)
-@PrepareForTest()
-class DanaRS_Packet_History_Blood_GlucoseTest : DanaRSTestBase() {
-
- @Test fun runTest() {
- val packet = DanaRS_Packet_History_Blood_Glucose(aapsLogger, rxBus, System.currentTimeMillis())
- Assert.assertEquals("REVIEW__BLOOD_GLUCOSE", packet.friendlyName)
- }
-}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_BolusTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_BolusTest.kt
deleted file mode 100644
index badaa0aa10..0000000000
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_BolusTest.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
-
-import org.junit.Assert
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.powermock.core.classloader.annotations.PrepareForTest
-import org.powermock.modules.junit4.PowerMockRunner
-
-@RunWith(PowerMockRunner::class)
-@PrepareForTest()
-class DanaRS_Packet_History_BolusTest : DanaRSTestBase() {
-
- @Test fun runTest() {
- val packet = DanaRS_Packet_History_Bolus(aapsLogger, rxBus, System.currentTimeMillis())
- Assert.assertEquals("REVIEW__BOLUS", packet.friendlyName)
- }
-}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_CarbohydrateTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_CarbohydrateTest.kt
deleted file mode 100644
index 22a99fcc53..0000000000
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_CarbohydrateTest.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
-
-import org.junit.Assert
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.powermock.core.classloader.annotations.PrepareForTest
-import org.powermock.modules.junit4.PowerMockRunner
-
-@RunWith(PowerMockRunner::class)
-@PrepareForTest()
-class DanaRS_Packet_History_CarbohydrateTest : DanaRSTestBase() {
-
- @Test fun runTest() {
- val packet = DanaRS_Packet_History_Carbohydrate(aapsLogger, rxBus, System.currentTimeMillis())
- Assert.assertEquals("REVIEW__CARBOHYDRATE", packet.friendlyName)
- }
-}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_DailyTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_DailyTest.kt
deleted file mode 100644
index 91d4bea862..0000000000
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_DailyTest.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
-
-import org.junit.Assert
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.powermock.core.classloader.annotations.PrepareForTest
-import org.powermock.modules.junit4.PowerMockRunner
-
-@RunWith(PowerMockRunner::class)
-@PrepareForTest()
-class DanaRS_Packet_History_DailyTest : DanaRSTestBase() {
-
- @Test fun runTest() {
- val packet = DanaRS_Packet_History_Daily(aapsLogger, rxBus, System.currentTimeMillis())
- Assert.assertEquals("REVIEW__DAILY", packet.friendlyName)
- }
-}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_PrimeTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_PrimeTest.kt
deleted file mode 100644
index 19c8d2ef4e..0000000000
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_PrimeTest.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
-
-import org.junit.Assert
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.powermock.core.classloader.annotations.PrepareForTest
-import org.powermock.modules.junit4.PowerMockRunner
-
-@RunWith(PowerMockRunner::class)
-@PrepareForTest()
-class DanaRS_Packet_History_PrimeTest : DanaRSTestBase() {
-
- @Test fun runTest() {
- val packet = DanaRS_Packet_History_Prime(aapsLogger, rxBus, System.currentTimeMillis())
- Assert.assertEquals("REVIEW__PRIME", packet.friendlyName)
- }
-}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_RefillTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_RefillTest.kt
deleted file mode 100644
index 8b75ec344f..0000000000
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_RefillTest.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
-
-import org.junit.Assert
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.powermock.core.classloader.annotations.PrepareForTest
-import org.powermock.modules.junit4.PowerMockRunner
-
-@RunWith(PowerMockRunner::class)
-@PrepareForTest()
-class DanaRS_Packet_History_RefillTest : DanaRSTestBase() {
-
- @Test fun runTest() {
- val packet = DanaRS_Packet_History_Refill(aapsLogger, rxBus, System.currentTimeMillis())
- Assert.assertEquals("REVIEW__REFILL", packet.friendlyName)
- }
-}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_SuspendTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_SuspendTest.kt
deleted file mode 100644
index 66b06f4ed7..0000000000
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_SuspendTest.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
-
-import org.junit.Assert
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.powermock.core.classloader.annotations.PrepareForTest
-import org.powermock.modules.junit4.PowerMockRunner
-
-@RunWith(PowerMockRunner::class)
-@PrepareForTest()
-class DanaRS_Packet_History_SuspendTest : DanaRSTestBase() {
-
- @Test fun runTest() {
- val packet = DanaRS_Packet_History_Suspend(aapsLogger, rxBus, System.currentTimeMillis())
- Assert.assertEquals("REVIEW__SUSPEND", packet.friendlyName)
- }
-}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_TemporaryTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_TemporaryTest.kt
deleted file mode 100644
index a4e436a373..0000000000
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_TemporaryTest.kt
+++ /dev/null
@@ -1,17 +0,0 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
-
-import org.junit.Assert
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.powermock.core.classloader.annotations.PrepareForTest
-import org.powermock.modules.junit4.PowerMockRunner
-
-@RunWith(PowerMockRunner::class)
-@PrepareForTest()
-class DanaRS_Packet_History_TemporaryTest : DanaRSTestBase() {
-
- @Test fun runTest() {
- val packet = DanaRS_Packet_History_Temporary(aapsLogger, rxBus, System.currentTimeMillis())
- Assert.assertEquals("REVIEW__TEMPORARY", packet.friendlyName)
- }
-}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Option_Get_Pump_TimeTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Option_Get_Pump_TimeTest.kt
deleted file mode 100644
index 8f74812e9e..0000000000
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Option_Get_Pump_TimeTest.kt
+++ /dev/null
@@ -1,25 +0,0 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
-
-import org.junit.Assert
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.powermock.core.classloader.annotations.PrepareForTest
-import org.powermock.modules.junit4.PowerMockRunner
-
-@RunWith(PowerMockRunner::class)
-@PrepareForTest()
-class DanaRS_Packet_Option_Get_Pump_TimeTest : DanaRSTestBase() {
-
- @Test fun runTest() {
- val packet = DanaRS_Packet_Option_Get_Pump_Time(aapsLogger, danaRPump)
- // test params
- Assert.assertEquals(null, packet.requestParams)
- // test message decoding
- packet.handleMessage(createArray(8, 0.toByte()))
- Assert.assertEquals(false, packet.failed)
- // this should fail
- packet.handleMessage(createArray(8, 1.toByte()))
- Assert.assertEquals(true, packet.failed)
- Assert.assertEquals("OPTION__GET_PUMP_TIME", packet.friendlyName)
- }
-}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Option_Set_Pump_TimeTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Option_Set_Pump_TimeTest.kt
deleted file mode 100644
index 5fd034e5b6..0000000000
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Option_Set_Pump_TimeTest.kt
+++ /dev/null
@@ -1,28 +0,0 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
-
-import info.nightscout.androidaps.utils.DateUtil
-import org.junit.Assert
-import org.junit.Test
-import org.junit.runner.RunWith
-import org.powermock.core.classloader.annotations.PrepareForTest
-import org.powermock.modules.junit4.PowerMockRunner
-import java.util.*
-
-@RunWith(PowerMockRunner::class)
-@PrepareForTest()
-class DanaRS_Packet_Option_Set_Pump_TimeTest : DanaRSTestBase() {
-
- @Test fun runTest() {
- val packet = DanaRS_Packet_Option_Set_Pump_Time(aapsLogger, DateUtil.now())
- // test params
- val params = packet.requestParams
- Assert.assertEquals((Date().date and 0xff).toByte(), params[2])
- // test message decoding
- packet.handleMessage(createArray(3, 0.toByte()))
- Assert.assertEquals(false, packet.failed)
- // everything ok :)
- packet.handleMessage(createArray(17, 1.toByte()))
- Assert.assertEquals(true, packet.failed)
- Assert.assertEquals("OPTION__SET_PUMP_TIME", packet.friendlyName)
- }
-}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/DanaRv2PluginTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/DanaRv2PluginTest.kt
index dca4d1e3ad..ec4bee9761 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/DanaRv2PluginTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/DanaRv2PluginTest.kt
@@ -6,13 +6,13 @@ import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.Constants
import info.nightscout.androidaps.R
import info.nightscout.androidaps.TestBaseWithProfile
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danaRv2.DanaRv2Plugin
import info.nightscout.androidaps.interfaces.CommandQueueProvider
import info.nightscout.androidaps.interfaces.Constraint
import info.nightscout.androidaps.interfaces.PluginType
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
import info.nightscout.androidaps.plugins.pump.common.bolusInfo.DetailedBolusInfoStorage
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
-import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
@@ -31,7 +31,7 @@ class DanaRv2PluginTest : TestBaseWithProfile() {
@Mock lateinit var commandQueue: CommandQueueProvider
@Mock lateinit var detailedBolusInfoStorage: DetailedBolusInfoStorage
- lateinit var danaRPump: DanaRPump
+ lateinit var danaPump: DanaPump
private lateinit var danaRv2Plugin: DanaRv2Plugin
@@ -45,15 +45,15 @@ class DanaRv2PluginTest : TestBaseWithProfile() {
`when`(resourceHelper.gs(R.string.pumplimit)).thenReturn("pump limit")
`when`(resourceHelper.gs(R.string.limitingbasalratio)).thenReturn("Limiting max basal rate to %1\$.2f U/h because of %2\$s")
`when`(resourceHelper.gs(R.string.limitingpercentrate)).thenReturn("Limiting max percent rate to %1\$d%% because of %2\$s")
- danaRPump = DanaRPump(aapsLogger, sp, injector)
- danaRv2Plugin = DanaRv2Plugin(injector, aapsLogger, rxBus, context, danaRPump, resourceHelper, constraintChecker, treatmentsPlugin, sp, commandQueue, detailedBolusInfoStorage)
+ danaPump = DanaPump(aapsLogger, sp, injector)
+ danaRv2Plugin = DanaRv2Plugin(injector, aapsLogger, rxBus, context, danaPump, resourceHelper, constraintChecker, activePluginProvider, sp, commandQueue, detailedBolusInfoStorage, dateUtil, fabricPrivacy)
}
@Test
fun basalRateShouldBeLimited() {
danaRv2Plugin.setPluginEnabled(PluginType.PUMP, true)
danaRv2Plugin.setPluginEnabled(PluginType.PUMP, true)
- danaRPump.maxBasal = 0.8
+ danaPump.maxBasal = 0.8
val c = Constraint(Constants.REALLYHIGHBASALRATE)
danaRv2Plugin.applyBasalConstraints(c, validProfile)
org.junit.Assert.assertEquals(0.8, c.value(), 0.01)
@@ -65,7 +65,7 @@ class DanaRv2PluginTest : TestBaseWithProfile() {
fun percentBasalRateShouldBeLimited() {
danaRv2Plugin.setPluginEnabled(PluginType.PUMP, true)
danaRv2Plugin.setPluginEnabled(PluginType.PUMP, true)
- danaRPump.maxBasal = 0.8
+ danaPump.maxBasal = 0.8
val c = Constraint(Constants.REALLYHIGHPERCENTBASALRATE)
danaRv2Plugin.applyBasalPercentConstraints(c, validProfile)
org.junit.Assert.assertEquals(200, c.value())
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MessageHashTable_rv2Test.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MessageHashTable_rv2Test.kt
index b84258c00b..f531aa25ad 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MessageHashTable_rv2Test.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MessageHashTable_rv2Test.kt
@@ -1,23 +1,16 @@
package info.nightscout.androidaps.plugins.pump.danaRv2.comm
-import info.nightscout.androidaps.interfaces.ActivePluginProvider
-import info.nightscout.androidaps.interfaces.CommandQueueProvider
+import info.nightscout.androidaps.danaRv2.comm.MessageHashTableRv2
+import info.nightscout.androidaps.danaRv2.comm.MsgStatusAPS_v2
+import info.nightscout.androidaps.danar.comm.MessageBase
import info.nightscout.androidaps.interfaces.Constraint
-import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
import info.nightscout.androidaps.plugins.pump.common.bolusInfo.DetailedBolusInfoStorage
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPlugin
import info.nightscout.androidaps.plugins.pump.danaR.comm.DanaRTestBase
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MessageBase
-import info.nightscout.androidaps.plugins.pump.danaRKorean.DanaRKoreanPlugin
-import info.nightscout.androidaps.plugins.pump.danaRv2.DanaRv2Plugin
-import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
-import info.nightscout.androidaps.utils.resources.ResourceHelper
import org.junit.Assert
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
@@ -26,27 +19,15 @@ import org.powermock.modules.junit4.PowerMockRunner
@PrepareForTest(ConstraintChecker::class, DetailedBolusInfoStorage::class, ConfigBuilderPlugin::class)
class MessageHashTable_rv2Test : DanaRTestBase() {
- @Mock lateinit var rxBus: RxBusWrapper
- @Mock lateinit var resourceHelper: ResourceHelper
- @Mock lateinit var constraintChecker: ConstraintChecker
- @Mock lateinit var danaRPlugin: DanaRPlugin
- @Mock lateinit var danaRKoreanPlugin: DanaRKoreanPlugin
- @Mock lateinit var danaRv2Plugin: DanaRv2Plugin
- @Mock lateinit var configBuilderPlugin: ConfigBuilderPlugin
- @Mock lateinit var commandQueue: CommandQueueProvider
- @Mock lateinit var activePlugin: ActivePluginProvider
- @Mock lateinit var detailedBolusInfoStorage: DetailedBolusInfoStorage
- @Mock lateinit var treatmentsPlugin: TreatmentsPlugin
-
@Test
fun runTest() {
`when`(constraintChecker.applyBolusConstraints(anyObject())).thenReturn(Constraint(0.0))
- val messageHashTableRv2 = MessageHashTableRv2(aapsLogger, rxBus, resourceHelper, constraintChecker, danaRPump, danaRPlugin, danaRKoreanPlugin, danaRv2Plugin, configBuilderPlugin, commandQueue, activePlugin, detailedBolusInfoStorage, treatmentsPlugin, injector)
- val forTesting: MessageBase = MsgStatusAPS_v2(aapsLogger, danaRPump)
+ val messageHashTableRv2 = MessageHashTableRv2(injector)
+ val forTesting: MessageBase = MsgStatusAPS_v2(injector)
val testPacket: MessageBase = messageHashTableRv2.findMessage(forTesting.command)
Assert.assertEquals(0xE001, testPacket.command.toLong())
// try putting another command
- val testMessage = MessageBase()
+ val testMessage = MessageBase(injector)
testMessage.SetCommand(0xE005)
messageHashTableRv2.put(testMessage)
Assert.assertEquals(0xE005, messageHashTableRv2.findMessage(0xE005).command.toLong())
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgCheckValue_v2Test.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgCheckValue_v2Test.kt
index 961c494983..f8aeb37b1d 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgCheckValue_v2Test.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgCheckValue_v2Test.kt
@@ -1,18 +1,15 @@
package info.nightscout.androidaps.plugins.pump.danaRv2.comm
-import info.nightscout.androidaps.interfaces.CommandQueueProvider
-import info.nightscout.androidaps.plugins.bus.RxBusWrapper
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danaRKorean.DanaRKoreanPlugin
+import info.nightscout.androidaps.danaRv2.DanaRv2Plugin
+import info.nightscout.androidaps.danaRv2.comm.MsgCheckValue_v2
+import info.nightscout.androidaps.danar.DanaRPlugin
import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPlugin
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
import info.nightscout.androidaps.plugins.pump.danaR.comm.DanaRTestBase
-import info.nightscout.androidaps.plugins.pump.danaRKorean.DanaRKoreanPlugin
-import info.nightscout.androidaps.plugins.pump.danaRv2.DanaRv2Plugin
-import info.nightscout.androidaps.utils.resources.ResourceHelper
import org.junit.Assert
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
@@ -20,19 +17,11 @@ import org.powermock.modules.junit4.PowerMockRunner
@PrepareForTest(DanaRKoreanPlugin::class, DanaRPlugin::class, DanaRv2Plugin::class, ConfigBuilderPlugin::class)
class MsgCheckValue_v2Test : DanaRTestBase() {
- val rxBus = RxBusWrapper()
- @Mock lateinit var resourceHelper: ResourceHelper
- @Mock lateinit var danaRPlugin: DanaRPlugin
- @Mock lateinit var danaRKoreanPlugin: DanaRKoreanPlugin
- @Mock lateinit var danaRv2Plugin: DanaRv2Plugin
- @Mock lateinit var configBuilderPlugin: ConfigBuilderPlugin
- @Mock lateinit var commandQueue: CommandQueueProvider
-
@Test
fun runTest() {
- val packet = MsgCheckValue_v2(aapsLogger, rxBus, resourceHelper, danaRPump, danaRPlugin, danaRKoreanPlugin, danaRv2Plugin, configBuilderPlugin, commandQueue)
+ val packet = MsgCheckValue_v2(injector)
// test message decoding
packet.handleMessage(createArray(34, 3.toByte()))
- Assert.assertEquals(DanaRPump.EXPORT_MODEL, danaRPump.model)
+ Assert.assertEquals(DanaPump.EXPORT_MODEL, danaPump.hwModel)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgHistoryEvents_v2Test.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgHistoryEvents_v2Test.kt
index 0c3d40916a..1adaee10a3 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgHistoryEvents_v2Test.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgHistoryEvents_v2Test.kt
@@ -1,15 +1,11 @@
package info.nightscout.androidaps.plugins.pump.danaRv2.comm
-import info.nightscout.androidaps.plugins.bus.RxBusWrapper
+import info.nightscout.androidaps.danaRv2.comm.MsgHistoryEvents_v2
import info.nightscout.androidaps.plugins.pump.common.bolusInfo.DetailedBolusInfoStorage
import info.nightscout.androidaps.plugins.pump.danaR.comm.DanaRTestBase
-import info.nightscout.androidaps.plugins.pump.danaRv2.DanaRv2Plugin
-import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
-import info.nightscout.androidaps.utils.resources.ResourceHelper
import org.junit.Assert
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
@@ -17,16 +13,11 @@ import org.powermock.modules.junit4.PowerMockRunner
@PrepareForTest(DetailedBolusInfoStorage::class)
class MsgHistoryEvents_v2Test : DanaRTestBase() {
- @Mock lateinit var resourceHelper: ResourceHelper
- @Mock lateinit var detailedBolusInfoStorage: DetailedBolusInfoStorage
- @Mock lateinit var danaRv2Plugin: DanaRv2Plugin
- @Mock lateinit var treatmentsPlugin: TreatmentsPlugin
-
@Test @Throws(Exception::class) fun runTest() {
- var packet = MsgHistoryEvents_v2(aapsLogger, resourceHelper, detailedBolusInfoStorage, danaRv2Plugin, RxBusWrapper(), treatmentsPlugin, injector, 0)
+ val packet = MsgHistoryEvents_v2(injector, 0)
// test message decoding
- val array = ByteArray(100)
+ val array = createArray(100, 2)
putByteToArray(array, 0, 0xFF.toByte())
packet.handleMessage(array)
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgSetAPSTempBasalStart_v2Test.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgSetAPSTempBasalStart_v2Test.kt
index 92ea976697..228a953b5c 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgSetAPSTempBasalStart_v2Test.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgSetAPSTempBasalStart_v2Test.kt
@@ -1,8 +1,7 @@
package info.nightscout.androidaps.plugins.pump.danaRv2.comm
+import info.nightscout.androidaps.danars.comm.DanaRS_Packet_APS_Basal_Set_Temporary_Basal.Companion.PARAM30MIN
import info.nightscout.androidaps.plugins.pump.danaR.comm.DanaRTestBase
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MessageBase.intFromBuff
-import info.nightscout.androidaps.plugins.pump.danaRS.comm.DanaRS_Packet_APS_Basal_Set_Temporary_Basal.Companion.PARAM30MIN
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -14,33 +13,33 @@ class MsgSetAPSTempBasalStart_v2Test : DanaRTestBase() {
@Test fun runTest() {
// test low hard limit
- var packet = MsgSetAPSTempBasalStart_v2(aapsLogger, -1, true, false)
- Assert.assertEquals(0, intFromBuff(packet.buffer, 0, 2))
- Assert.assertEquals(packet.PARAM15MIN, intFromBuff(packet.buffer, 2, 1))
+ var packet = info.nightscout.androidaps.danaRv2.comm.MsgSetAPSTempBasalStart_v2(injector, -1, true, false)
+ Assert.assertEquals(0, packet.intFromBuff(packet.buffer, 0, 2))
+ Assert.assertEquals(packet.PARAM15MIN, packet.intFromBuff(packet.buffer, 2, 1))
// test high hard limit
- packet = MsgSetAPSTempBasalStart_v2(aapsLogger, 550, true, false)
- Assert.assertEquals(500, intFromBuff(packet.buffer, 0, 2))
- Assert.assertEquals(packet.PARAM15MIN, intFromBuff(packet.buffer, 2, 1))
+ packet = info.nightscout.androidaps.danaRv2.comm.MsgSetAPSTempBasalStart_v2(injector, 550, true, false)
+ Assert.assertEquals(500, packet.intFromBuff(packet.buffer, 0, 2))
+ Assert.assertEquals(packet.PARAM15MIN, packet.intFromBuff(packet.buffer, 2, 1))
// test setting 15 min
- packet = MsgSetAPSTempBasalStart_v2(aapsLogger, 50, true, false)
- Assert.assertEquals(50, intFromBuff(packet.buffer, 0, 2))
- Assert.assertEquals(packet.PARAM15MIN, intFromBuff(packet.buffer, 2, 1))
+ packet = info.nightscout.androidaps.danaRv2.comm.MsgSetAPSTempBasalStart_v2(injector, 50, true, false)
+ Assert.assertEquals(50, packet.intFromBuff(packet.buffer, 0, 2))
+ Assert.assertEquals(packet.PARAM15MIN, packet.intFromBuff(packet.buffer, 2, 1))
// test setting 30 min
- packet = MsgSetAPSTempBasalStart_v2(aapsLogger, 50, false, true)
- Assert.assertEquals(50, intFromBuff(packet.buffer, 0, 2))
- Assert.assertEquals(PARAM30MIN, intFromBuff(packet.buffer, 2, 1))
+ packet = info.nightscout.androidaps.danaRv2.comm.MsgSetAPSTempBasalStart_v2(injector, 50, false, true)
+ Assert.assertEquals(50, packet.intFromBuff(packet.buffer, 0, 2))
+ Assert.assertEquals(PARAM30MIN, packet.intFromBuff(packet.buffer, 2, 1))
// over 200% set always 15 min
- packet = MsgSetAPSTempBasalStart_v2(aapsLogger, 250, false, true)
- Assert.assertEquals(250, intFromBuff(packet.buffer, 0, 2))
- Assert.assertEquals(packet.PARAM15MIN, intFromBuff(packet.buffer, 2, 1))
+ packet = info.nightscout.androidaps.danaRv2.comm.MsgSetAPSTempBasalStart_v2(injector, 250, false, true)
+ Assert.assertEquals(250, packet.intFromBuff(packet.buffer, 0, 2))
+ Assert.assertEquals(packet.PARAM15MIN, packet.intFromBuff(packet.buffer, 2, 1))
// test low hard limit
- packet = MsgSetAPSTempBasalStart_v2(aapsLogger, -1, false, true)
- Assert.assertEquals(0, intFromBuff(packet.buffer, 0, 2))
- Assert.assertEquals(PARAM30MIN, intFromBuff(packet.buffer, 2, 1))
+ packet = info.nightscout.androidaps.danaRv2.comm.MsgSetAPSTempBasalStart_v2(injector, -1, false, true)
+ Assert.assertEquals(0, packet.intFromBuff(packet.buffer, 0, 2))
+ Assert.assertEquals(PARAM30MIN, packet.intFromBuff(packet.buffer, 2, 1))
// test high hard limit
- packet = MsgSetAPSTempBasalStart_v2(aapsLogger, 550, false, true)
- Assert.assertEquals(500, intFromBuff(packet.buffer, 0, 2))
- Assert.assertEquals(packet.PARAM15MIN, intFromBuff(packet.buffer, 2, 1))
+ packet = info.nightscout.androidaps.danaRv2.comm.MsgSetAPSTempBasalStart_v2(injector, 550, false, true)
+ Assert.assertEquals(500, packet.intFromBuff(packet.buffer, 0, 2))
+ Assert.assertEquals(packet.PARAM15MIN, packet.intFromBuff(packet.buffer, 2, 1))
// test message decoding
packet.handleMessage(byteArrayOf(0.toByte(), 0.toByte(), 0.toByte(), 0.toByte(), 0.toByte(), 0.toByte(), 0.toByte()))
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgSetHistoryEntry_v2Test.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgSetHistoryEntry_v2Test.kt
index 34b0fc8b7b..8d21eab349 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgSetHistoryEntry_v2Test.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgSetHistoryEntry_v2Test.kt
@@ -1,5 +1,6 @@
package info.nightscout.androidaps.plugins.pump.danaRv2.comm
+import info.nightscout.androidaps.danaRv2.comm.MsgSetHistoryEntry_v2
import info.nightscout.androidaps.plugins.pump.danaR.comm.DanaRTestBase
import org.junit.Assert
import org.junit.Test
@@ -10,7 +11,7 @@ import org.powermock.modules.junit4.PowerMockRunner
class MsgSetHistoryEntry_v2Test : DanaRTestBase() {
@Test fun runTest() {
- var packet = MsgSetHistoryEntry_v2(aapsLogger, 1, System.currentTimeMillis(), 1, 0)
+ val packet = MsgSetHistoryEntry_v2(injector, 1, System.currentTimeMillis(), 1, 0)
// test message decoding
// != 1 fails
packet.handleMessage(createArray(34, 2.toByte()))
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgStatusAPS_v2Test.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgStatusAPS_v2Test.kt
index c873d4619b..9f92821b35 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgStatusAPS_v2Test.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgStatusAPS_v2Test.kt
@@ -1,7 +1,7 @@
package info.nightscout.androidaps.plugins.pump.danaRv2.comm
+import info.nightscout.androidaps.danaRv2.comm.MsgStatusAPS_v2
import info.nightscout.androidaps.plugins.pump.danaR.comm.DanaRTestBase
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MessageBase
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -12,12 +12,12 @@ class MsgStatusAPS_v2Test : DanaRTestBase() {
@Test
fun runTest() {
- val packet = MsgStatusAPS_v2(aapsLogger, danaRPump)
+ val packet = MsgStatusAPS_v2(injector)
// test iob
//TODO Find a way to mock treatments plugin
val testArray = createArray(34, 7.toByte())
- val iob = MessageBase.intFromBuff(testArray, 0, 2) / 100.0
+ val iob = packet.intFromBuff(testArray, 0, 2) / 100.0
packet.handleMessage(testArray)
- Assert.assertEquals(iob, danaRPump.iob, 0.0)
+ Assert.assertEquals(iob, danaPump.iob, 0.0)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgStatusBolusExtended_v2Test.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgStatusBolusExtended_v2Test.kt
index 2f55887d29..33f96373eb 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgStatusBolusExtended_v2Test.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgStatusBolusExtended_v2Test.kt
@@ -1,7 +1,7 @@
package info.nightscout.androidaps.plugins.pump.danaRv2.comm
+import info.nightscout.androidaps.danaRv2.comm.MsgStatusBolusExtended_v2
import info.nightscout.androidaps.plugins.pump.danaR.comm.DanaRTestBase
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MessageBase
import org.junit.Assert
import org.junit.Test
import org.junit.runner.RunWith
@@ -12,9 +12,9 @@ class MsgStatusBolusExtended_v2Test : DanaRTestBase() {
@Test
fun runTest() {
- val packet = MsgStatusBolusExtended_v2(aapsLogger, danaRPump)
+ val packet = MsgStatusBolusExtended_v2(injector)
// test message decoding
packet.handleMessage(createArray(34, 7.toByte()))
- Assert.assertEquals(MessageBase.intFromBuff(createArray(10, 7.toByte()), 2, 2).toDouble() / 100.0, danaRPump.extendedBolusAmount, 0.0)
+ Assert.assertEquals(packet.intFromBuff(createArray(10, 7.toByte()), 2, 2).toDouble() / 100.0, danaPump.extendedBolusAmount, 0.0)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgStatusTempBasal_v2Test.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgStatusTempBasal_v2Test.kt
index fa98c68830..b1b6da6960 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgStatusTempBasal_v2Test.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgStatusTempBasal_v2Test.kt
@@ -1,5 +1,6 @@
package info.nightscout.androidaps.plugins.pump.danaRv2.comm
+import info.nightscout.androidaps.danaRv2.comm.MsgStatusTempBasal_v2
import info.nightscout.androidaps.plugins.pump.danaR.comm.DanaRTestBase
import org.junit.Assert
import org.junit.Test
@@ -10,12 +11,12 @@ import org.powermock.modules.junit4.PowerMockRunner
class MsgStatusTempBasal_v2Test : DanaRTestBase() {
@Test fun runTest() {
- val packet = MsgStatusTempBasal_v2(aapsLogger, danaRPump)
+ val packet = MsgStatusTempBasal_v2(injector)
// test message decoding
packet.handleMessage(createArray(34, 1.toByte()))
- Assert.assertEquals(true, danaRPump.isTempBasalInProgress)
+ Assert.assertEquals(true, danaPump.isTempBasalInProgress)
// passing an bigger number
packet.handleMessage(createArray(34, 2.toByte()))
- Assert.assertEquals(false, danaRPump.isTempBasalInProgress)
+ Assert.assertEquals(false, danaPump.isTempBasalInProgress)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/virtual/VirtualPumpPluginUTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/pump/virtual/VirtualPumpPluginUTest.kt
index 7a8c732c62..cdafb560a6 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/virtual/VirtualPumpPluginUTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/pump/virtual/VirtualPumpPluginUTest.kt
@@ -2,14 +2,15 @@ package info.nightscout.androidaps.plugins.pump.virtual
import dagger.android.AndroidInjector
import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.Config
import info.nightscout.androidaps.R
import info.nightscout.androidaps.TestBase
import info.nightscout.androidaps.interfaces.CommandQueueProvider
-import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
+import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.plugins.pump.common.defs.PumpType
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
+import info.nightscout.androidaps.utils.DateUtil
import info.nightscout.androidaps.utils.FabricPrivacy
import info.nightscout.androidaps.utils.resources.ResourceHelper
import info.nightscout.androidaps.utils.sharedPreferences.SP
@@ -33,12 +34,13 @@ class VirtualPumpPluginUTest : TestBase() {
@Mock lateinit var profileFunction: ProfileFunction
@Mock lateinit var treatmentsPlugin: TreatmentsPlugin
@Mock lateinit var commandQueue: CommandQueueProvider
+ @Mock lateinit var dateUtil: DateUtil
lateinit var virtualPumpPlugin: VirtualPumpPlugin
@Before
fun prepareMocks() {
- virtualPumpPlugin = VirtualPumpPlugin(HasAndroidInjector { AndroidInjector { } }, aapsLogger, rxBus, fabricPrivacy, resourceHelper, sp, profileFunction, treatmentsPlugin, commandQueue)
+ virtualPumpPlugin = VirtualPumpPlugin(HasAndroidInjector { AndroidInjector { } }, aapsLogger, rxBus, fabricPrivacy, resourceHelper, sp, profileFunction, treatmentsPlugin, commandQueue, Config(), dateUtil)
}
@Test
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/sensitivity/AbstractSensitivityPluginTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/sensitivity/AbstractSensitivityPluginTest.kt
index 000a718c01..f410b29a94 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/sensitivity/AbstractSensitivityPluginTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/sensitivity/AbstractSensitivityPluginTest.kt
@@ -3,6 +3,7 @@ package info.nightscout.androidaps.plugins.sensitivity
import dagger.android.AndroidInjector
import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.TestBase
+import info.nightscout.androidaps.interfaces.IobCobCalculatorInterface
import info.nightscout.androidaps.interfaces.PluginDescription
import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.AutosensResult
@@ -24,7 +25,7 @@ class AbstractSensitivityPluginTest : TestBase() {
private inner class SensitivityTestClass(pluginDescription: PluginDescription, aapsLogger: AAPSLogger, resourceHelper: ResourceHelper, sp: SP) : AbstractSensitivityPlugin(pluginDescription, HasAndroidInjector { AndroidInjector { Unit } }, aapsLogger, resourceHelper, sp) {
- override fun detectSensitivity(plugin: IobCobCalculatorPlugin, fromTime: Long, toTime: Long): AutosensResult {
+ override fun detectSensitivity(plugin: IobCobCalculatorInterface, fromTime: Long, toTime: Long): AutosensResult {
return AutosensResult()
}
}
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/source/NSClientPluginTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/source/NSClientPluginTest.kt
index 3cbdb53a7e..1f2da4c70d 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/source/NSClientPluginTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/source/NSClientPluginTest.kt
@@ -2,6 +2,7 @@ package info.nightscout.androidaps.plugins.source
import dagger.android.AndroidInjector
import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.Config
import info.nightscout.androidaps.TestBase
import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.utils.resources.ResourceHelper
@@ -23,7 +24,7 @@ class NSClientPluginTest : TestBase() {
@Before
fun setup() {
- nsClientSourcePlugin = NSClientSourcePlugin(HasAndroidInjector { AndroidInjector { } }, resourceHelper, aapsLogger, sp)
+ nsClientSourcePlugin = NSClientSourcePlugin(HasAndroidInjector { AndroidInjector { } }, resourceHelper, aapsLogger, sp, Config())
}
@Test fun advancedFilteringSupported() {
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/treatments/TreatmentsPluginTest.kt b/app/src/test/java/info/nightscout/androidaps/plugins/treatments/TreatmentsPluginTest.kt
index 8aa4ccad2d..a5a6e81bfb 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/treatments/TreatmentsPluginTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/plugins/treatments/TreatmentsPluginTest.kt
@@ -7,7 +7,7 @@ import info.nightscout.androidaps.MainApp
import info.nightscout.androidaps.TestBaseWithProfile
import info.nightscout.androidaps.db.DatabaseHelper
import info.nightscout.androidaps.db.TemporaryBasal
-import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.plugins.general.nsclient.NSUpload
import info.nightscout.androidaps.plugins.insulin.InsulinOrefRapidActingPlugin
import info.nightscout.androidaps.utils.DateUtil
import info.nightscout.androidaps.utils.FabricPrivacy
@@ -19,7 +19,6 @@ 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
@@ -33,6 +32,7 @@ class TreatmentsPluginTest : TestBaseWithProfile() {
@Mock lateinit var sp: SP
@Mock lateinit var databaseHelper: DatabaseHelper
@Mock lateinit var treatmentService: TreatmentService
+ @Mock lateinit var nsUpload: NSUpload
val injector = HasAndroidInjector {
AndroidInjector {
@@ -58,18 +58,18 @@ class TreatmentsPluginTest : TestBaseWithProfile() {
`when`(profileFunction.getProfile(ArgumentMatchers.anyLong())).thenReturn(validProfile)
`when`(activePluginProvider.activeInsulin).thenReturn(insulinOrefRapidActingPlugin)
- sot = TreatmentsPlugin(profileInjector, aapsLogger, rxBus, resourceHelper, context, sp, profileFunction, activePluginProvider, fabricPrivacy)
+ sot = TreatmentsPlugin(profileInjector, aapsLogger, rxBus, resourceHelper, context, sp, profileFunction, activePluginProvider, nsUpload, fabricPrivacy, dateUtil)
sot.service = treatmentService
}
@Test
fun `zero TBR should produce zero absolute insulin`() {
val now = DateUtil.now()
- val tbrs : MutableList = ArrayList()
- tbrs.add(TemporaryBasal(injector).date(now - T.hours(30). msecs()).duration(10000).percent(0))
+ val tbrs: MutableList = ArrayList()
+ tbrs.add(TemporaryBasal(injector).date(now - T.hours(30).msecs()).duration(10000).percent(0))
`when`(databaseHelper.getTemporaryBasalsDataFromTime(ArgumentMatchers.anyLong(), ArgumentMatchers.anyBoolean())).thenReturn(tbrs)
- sot.initializeData(T.hours(30). msecs())
+ sot.initializeData(T.hours(30).msecs())
val iob = sot.getAbsoluteIOBTempBasals(now)
Assert.assertEquals(0.0, iob.iob, 0.0)
}
@@ -77,28 +77,28 @@ class TreatmentsPluginTest : TestBaseWithProfile() {
@Test
fun `90% TBR and should produce less absolute insulin`() {
val now = DateUtil.now()
- val tbrs : MutableList = ArrayList()
+ val tbrs: MutableList = ArrayList()
`when`(databaseHelper.getTemporaryBasalsDataFromTime(ArgumentMatchers.anyLong(), ArgumentMatchers.anyBoolean())).thenReturn(tbrs)
- sot.initializeData(T.hours(30). msecs())
+ sot.initializeData(T.hours(30).msecs())
val iob100pct = sot.getAbsoluteIOBTempBasals(now)
- tbrs.add(TemporaryBasal(injector).date(now - T.hours(30). msecs()).duration(10000).percent(90))
- sot.initializeData(T.hours(30). msecs())
+ tbrs.add(TemporaryBasal(injector).date(now - T.hours(30).msecs()).duration(10000).percent(90))
+ sot.initializeData(T.hours(30).msecs())
val iob90pct = sot.getAbsoluteIOBTempBasals(now)
- Assert.assertTrue(iob100pct.iob > iob90pct.iob)
+ Assert.assertTrue(iob100pct.basaliob > iob90pct.basaliob)
}
@Test
fun `110% TBR and should produce 10% more absolute insulin`() {
val now = DateUtil.now()
- val tbrs : MutableList = ArrayList()
+ val tbrs: MutableList = ArrayList()
`when`(databaseHelper.getTemporaryBasalsDataFromTime(ArgumentMatchers.anyLong(), ArgumentMatchers.anyBoolean())).thenReturn(tbrs)
- sot.initializeData(T.hours(30). msecs())
+ sot.initializeData(T.hours(30).msecs())
val iob100pct = sot.getAbsoluteIOBTempBasals(now)
- tbrs.add(TemporaryBasal(injector).date(now - T.hours(30). msecs()).duration(10000).percent(110))
- sot.initializeData(T.hours(30). msecs())
+ tbrs.add(TemporaryBasal(injector).date(now - T.hours(30).msecs()).duration(10000).percent(110))
+ sot.initializeData(T.hours(30).msecs())
val iob110pct = sot.getAbsoluteIOBTempBasals(now)
- Assert.assertEquals(1.1, iob110pct.iob / iob100pct.iob, 0.0001)
+ Assert.assertEquals(1.1, iob110pct.basaliob / iob100pct.basaliob, 0.0001)
}
}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/queue/CommandQueueTest.kt b/app/src/test/java/info/nightscout/androidaps/queue/CommandQueueTest.kt
index 5dd11ba4a0..b375602bfb 100644
--- a/app/src/test/java/info/nightscout/androidaps/queue/CommandQueueTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/queue/CommandQueueTest.kt
@@ -4,22 +4,19 @@ import android.content.Context
import dagger.Lazy
import dagger.android.AndroidInjector
import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.Config
import info.nightscout.androidaps.TestBaseWithProfile
import info.nightscout.androidaps.data.DetailedBolusInfo
import info.nightscout.androidaps.interfaces.ActivePluginProvider
import info.nightscout.androidaps.interfaces.Constraint
import info.nightscout.androidaps.interfaces.PumpDescription
-import info.nightscout.androidaps.logging.AAPSLogger
-import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
import info.nightscout.androidaps.plugins.pump.virtual.VirtualPumpPlugin
import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
import info.nightscout.androidaps.queue.commands.Command
import info.nightscout.androidaps.utils.FabricPrivacy
import info.nightscout.androidaps.utils.ToastUtils
import info.nightscout.androidaps.utils.buildHelper.BuildHelper
-import info.nightscout.androidaps.utils.resources.ResourceHelper
import info.nightscout.androidaps.utils.sharedPreferences.SP
import org.junit.Assert
import org.junit.Before
@@ -42,7 +39,7 @@ class CommandQueueTest : TestBaseWithProfile() {
@Mock lateinit var virtualPumpPlugin: VirtualPumpPlugin
@Mock lateinit var sp: SP
- private val buildHelper = BuildHelper()
+ private val buildHelper = BuildHelper(Config())
val injector = HasAndroidInjector {
AndroidInjector {
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 0edbe93c11..3a70e1a34c 100644
--- a/app/src/test/java/info/nightscout/androidaps/utils/DateUtilTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/utils/DateUtilTest.kt
@@ -1,5 +1,6 @@
package info.nightscout.androidaps.utils
+import android.content.Context
import info.nightscout.androidaps.TestBase
import info.nightscout.androidaps.R
import info.nightscout.androidaps.utils.resources.ResourceHelper
@@ -14,6 +15,7 @@ import java.util.*
@RunWith(PowerMockRunner::class)
class DateUtilTest : TestBase() {
+ @Mock lateinit var context: Context
@Mock lateinit var resourceHelper: ResourceHelper
@Test
@@ -46,22 +48,22 @@ class DateUtilTest : TestBase() {
}
@Test fun timeStringTest() {
- Assert.assertTrue(DateUtil.timeString(Date(1513902750000L)).contains("32"))
- Assert.assertTrue(DateUtil.timeString(1513902750000L).contains("32"))
+ Assert.assertTrue(DateUtil(context, resourceHelper).timeString(Date(1513902750000L)).contains("32"))
+ Assert.assertTrue(DateUtil(context, resourceHelper).timeString(1513902750000L).contains("32"))
}
@Test fun dateAndTimeStringTest() {
- Assert.assertTrue(DateUtil.dateAndTimeString(1513902750000L).contains("22"))
- Assert.assertTrue(DateUtil.dateAndTimeString(1513902750000L).contains("32"))
- Assert.assertTrue(DateUtil.dateAndTimeString(Date(1513902750000L)).contains("22"))
- Assert.assertTrue(DateUtil.dateAndTimeString(Date(1513902750000L)).contains("32"))
+ 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"))
}
@Test fun dateAndTimeRangeStringTest() {
- Assert.assertTrue(DateUtil.dateAndTimeRangeString(1513902750000L, 1513902750000L).contains("22"))
- Assert.assertTrue(DateUtil.dateAndTimeRangeString(1513902750000L, 1513902750000L).contains("32"))
- Assert.assertTrue(DateUtil.dateAndTimeRangeString(1513902750000L, 1513902750000L).contains("22"))
- Assert.assertTrue(DateUtil.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, resourceHelper).dateAndTimeRangeString(1513902750000L, 1513902750000L).contains("22"))
+ Assert.assertTrue(DateUtil(context, resourceHelper).dateAndTimeRangeString(1513902750000L, 1513902750000L).contains("32"))
}
/*
diff --git a/app/src/test/java/info/nightscout/androidaps/utils/DecimalFormatterTest.java b/app/src/test/java/info/nightscout/androidaps/utils/DecimalFormatterTest.java
index e02e5fe28b..a7112fae48 100644
--- a/app/src/test/java/info/nightscout/androidaps/utils/DecimalFormatterTest.java
+++ b/app/src/test/java/info/nightscout/androidaps/utils/DecimalFormatterTest.java
@@ -10,26 +10,26 @@ public class DecimalFormatterTest {
@Test
public void to0DecimalTest() {
- Assert.assertEquals("1", DecimalFormatter.to0Decimal(1.33d));
- Assert.assertEquals("1U", DecimalFormatter.to0Decimal(1.33d, "U"));
+ Assert.assertEquals("1", DecimalFormatter.to0Decimal(1.33d).replace(",", "."));
+ Assert.assertEquals("1U", DecimalFormatter.to0Decimal(1.33d, "U").replace(",", "."));
}
@Test
public void to1DecimalTest() {
- Assert.assertEquals("1.3", DecimalFormatter.to1Decimal(1.33d));
- Assert.assertEquals("1.3U", DecimalFormatter.to1Decimal(1.33d, "U"));
+ Assert.assertEquals("1.3", DecimalFormatter.to1Decimal(1.33d).replace(",", "."));
+ Assert.assertEquals("1.3U", DecimalFormatter.to1Decimal(1.33d, "U").replace(",", "."));
}
@Test
public void to2DecimalTest() {
- Assert.assertEquals("1.33", DecimalFormatter.to2Decimal(1.3333d));
- Assert.assertEquals("1.33U", DecimalFormatter.to2Decimal(1.3333d, "U"));
+ Assert.assertEquals("1.33", DecimalFormatter.to2Decimal(1.3333d).replace(",", "."));
+ Assert.assertEquals("1.33U", DecimalFormatter.to2Decimal(1.3333d, "U").replace(",", "."));
}
@Test
public void to3DecimalTest() {
- Assert.assertEquals("1.333", DecimalFormatter.to3Decimal(1.3333d));
- Assert.assertEquals("1.333U", DecimalFormatter.to3Decimal(1.3333d, "U"));
+ Assert.assertEquals("1.333", DecimalFormatter.to3Decimal(1.3333d).replace(",", "."));
+ Assert.assertEquals("1.333U", DecimalFormatter.to3Decimal(1.3333d, "U").replace(",", "."));
}
@Test
diff --git a/app/src/test/java/info/nightscout/androidaps/utils/SntpClientTest.java b/app/src/test/java/info/nightscout/androidaps/utils/SntpClientTest.java
deleted file mode 100644
index 166ce04b10..0000000000
--- a/app/src/test/java/info/nightscout/androidaps/utils/SntpClientTest.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package info.nightscout.androidaps.utils;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-public class SntpClientTest {
-
- @Test
- public void ntpTimeTest() {
- // no internet
- SntpClient.ntpTime(new SntpClient.Callback() {
- @Override
- public void run() {
- Assert.assertFalse(networkConnected);
- Assert.assertFalse(success);
- Assert.assertEquals(0L, time);
- }
- }, false);
- // internet
- SntpClient.doNtpTime(new SntpClient.Callback() {
- @Override
- public void run() {
- Assert.assertTrue(success);
- Assert.assertTrue(Math.abs(time - DateUtil.now()) < 60000);
- }
- });
- }
-}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/utils/SntpClientTest.kt b/app/src/test/java/info/nightscout/androidaps/utils/SntpClientTest.kt
new file mode 100644
index 0000000000..79a8541daf
--- /dev/null
+++ b/app/src/test/java/info/nightscout/androidaps/utils/SntpClientTest.kt
@@ -0,0 +1,29 @@
+package info.nightscout.androidaps.utils
+
+import info.nightscout.androidaps.TestBase
+import org.junit.Assert
+import org.junit.Test
+import org.mockito.Mock
+
+class SntpClientTest : TestBase() {
+ @Mock lateinit var dateUtil: DateUtil
+
+ @Test
+ fun ntpTimeTest() {
+ // no internet
+ SntpClient(aapsLogger, dateUtil).ntpTime(object : SntpClient.Callback() {
+ override fun run() {
+ Assert.assertFalse(networkConnected)
+ Assert.assertFalse(success)
+ Assert.assertEquals(0L, time)
+ }
+ }, false)
+ // internet
+ SntpClient(aapsLogger, dateUtil).doNtpTime(object : SntpClient.Callback() {
+ override fun run() {
+ Assert.assertTrue(success)
+ Assert.assertTrue(Math.abs(time - DateUtil.now()) < 60000)
+ }
+ })
+ }
+}
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/utils/wizard/BolusWizardTest.kt b/app/src/test/java/info/nightscout/androidaps/utils/wizard/BolusWizardTest.kt
index e44b95c950..4bbe3736b5 100644
--- a/app/src/test/java/info/nightscout/androidaps/utils/wizard/BolusWizardTest.kt
+++ b/app/src/test/java/info/nightscout/androidaps/utils/wizard/BolusWizardTest.kt
@@ -11,11 +11,10 @@ import info.nightscout.androidaps.interfaces.ActivePluginProvider
import info.nightscout.androidaps.interfaces.CommandQueueProvider
import info.nightscout.androidaps.interfaces.Constraint
import info.nightscout.androidaps.interfaces.PumpDescription
-import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
+import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.GlucoseStatus
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin
import info.nightscout.androidaps.plugins.pump.virtual.VirtualPumpPlugin
diff --git a/build.gradle b/build.gradle
index b340946773..aeeb75768d 100644
--- a/build.gradle
+++ b/build.gradle
@@ -3,25 +3,26 @@
buildscript {
ext {
kotlin_version = '1.3.72'
- android_ktx_version = '1.2.0'
+ coreVersion = '1.3.0'
rxjava_version = '2.2.19'
rxandroid_version = '2.1.1'
rxkotlin_version = '2.4.0'
room_version = '2.2.5'
lifecycle_version = '2.2.0'
- dagger_version = '2.27'
- coroutinesVersion = '1.3.5'
- activityVersion = '1.2.0-alpha04'
+ dagger_version = '2.28.1'
+ coroutinesVersion = '1.3.7'
+ activityVersion = '1.2.0-alpha06'
+ fragmentVersion = '1.3.0-alpha07'
+ ormLiteVersion = "4.46"
}
repositories {
google()
jcenter()
- maven { url 'https://maven.fabric.io/public' }
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.6.3'
+ classpath 'com.android.tools.build:gradle:4.0.1'
classpath 'com.google.gms:google-services:4.3.3'
- classpath 'io.fabric.tools:gradle:1.31.2'
+ classpath 'com.google.firebase:firebase-crashlytics-gradle:2.1.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
@@ -57,3 +58,9 @@ allprojects {
task clean(type: Delete) {
delete rootProject.buildDir
}
+
+subprojects {
+ tasks.withType(Test) {
+ maxParallelForks = Runtime.runtime.availableProcessors().intdiv(2) ?: 1
+ }
+}
diff --git a/core/build.gradle b/core/build.gradle
index e81f23f7b6..b79909271a 100644
--- a/core/build.gradle
+++ b/core/build.gradle
@@ -7,7 +7,7 @@ android {
compileSdkVersion 28
defaultConfig {
- minSdkVersion 23
+ minSdkVersion 24
targetSdkVersion 28
versionCode 1
versionName "1.0"
@@ -46,6 +46,7 @@ dependencies {
implementation "androidx.preference:preference-ktx:1.1.1"
implementation "androidx.activity:activity:${activityVersion}"
implementation "androidx.activity:activity-ktx:${activityVersion}"
+ implementation 'com.google.android.material:material:1.1.0'
implementation "com.google.dagger:dagger-android:$dagger_version"
implementation "com.google.dagger:dagger-android-support:$dagger_version"
@@ -57,14 +58,26 @@ dependencies {
//Logger
implementation 'org.slf4j:slf4j-api:1.7.30'
//Fabric
- implementation 'com.google.firebase:firebase-core:17.4.0'
- implementation('com.crashlytics.sdk.android:crashlytics:2.10.1@aar') {
- transitive = true;
- }
+ implementation 'com.google.firebase:firebase-analytics-ktx:17.4.3'
+ implementation 'com.google.firebase:firebase-crashlytics:17.1.0'
+
//RxBus
- implementation "io.reactivex.rxjava2:rxandroid:2.1.1"
+ implementation "io.reactivex.rxjava2:rxandroid:${rxandroid_version}"
implementation 'org.apache.commons:commons-lang3:3.10'
+ // Graphview cannot be upgraded
+ implementation "com.jjoe64:graphview:4.0.1"
+
+ //DateUtil
+ implementation 'net.danlew:android.joda:2.10.6'
+
+ //db
+ implementation "com.j256.ormlite:ormlite-core:${ormLiteVersion}"
+ implementation "com.j256.ormlite:ormlite-android:${ormLiteVersion}"
+
+ // pumpCommon
+ implementation "com.google.code.gson:gson:2.8.6"
+
testImplementation 'junit:junit:4.13'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
diff --git a/core/src/main/AndroidManifest.xml b/core/src/main/AndroidManifest.xml
index 0ff2fcd7b8..9ef7e793bf 100644
--- a/core/src/main/AndroidManifest.xml
+++ b/core/src/main/AndroidManifest.xml
@@ -1,5 +1,20 @@
+ package="info.nightscout.androidaps.core">
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/java/info/nightscout/androidaps/Constants.java b/core/src/main/java/info/nightscout/androidaps/Constants.java
similarity index 97%
rename from app/src/main/java/info/nightscout/androidaps/Constants.java
rename to core/src/main/java/info/nightscout/androidaps/Constants.java
index 38767ebfb9..f66342de7e 100644
--- a/app/src/main/java/info/nightscout/androidaps/Constants.java
+++ b/core/src/main/java/info/nightscout/androidaps/Constants.java
@@ -86,6 +86,9 @@ public class Constants {
public static final double STATS_RANGE_LOW_MMOL = 3.9;
public static final double STATS_RANGE_HIGH_MMOL = 10.0;
+ // Local profile
+ public static final String LOCAL_PROFILE = "LocalProfile";
+
// One Time Password
diff --git a/app/src/main/java/info/nightscout/androidaps/activities/BolusProgressHelperActivity.kt b/core/src/main/java/info/nightscout/androidaps/activities/BolusProgressHelperActivity.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/activities/BolusProgressHelperActivity.kt
rename to core/src/main/java/info/nightscout/androidaps/activities/BolusProgressHelperActivity.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/activities/DialogAppCompatActivity.kt b/core/src/main/java/info/nightscout/androidaps/activities/DialogAppCompatActivity.kt
similarity index 84%
rename from app/src/main/java/info/nightscout/androidaps/activities/DialogAppCompatActivity.kt
rename to core/src/main/java/info/nightscout/androidaps/activities/DialogAppCompatActivity.kt
index e2aa70d960..14f941a422 100644
--- a/app/src/main/java/info/nightscout/androidaps/activities/DialogAppCompatActivity.kt
+++ b/core/src/main/java/info/nightscout/androidaps/activities/DialogAppCompatActivity.kt
@@ -2,7 +2,7 @@ package info.nightscout.androidaps.activities
import android.content.Context
import dagger.android.support.DaggerAppCompatActivity
-import info.nightscout.androidaps.utils.LocaleHelper
+import info.nightscout.androidaps.utils.locale.LocaleHelper
open class DialogAppCompatActivity : DaggerAppCompatActivity() {
public override fun attachBaseContext(newBase: Context) {
diff --git a/app/src/main/java/info/nightscout/androidaps/activities/ErrorHelperActivity.kt b/core/src/main/java/info/nightscout/androidaps/activities/ErrorHelperActivity.kt
similarity index 86%
rename from app/src/main/java/info/nightscout/androidaps/activities/ErrorHelperActivity.kt
rename to core/src/main/java/info/nightscout/androidaps/activities/ErrorHelperActivity.kt
index ce02742381..11affb41d3 100644
--- a/app/src/main/java/info/nightscout/androidaps/activities/ErrorHelperActivity.kt
+++ b/core/src/main/java/info/nightscout/androidaps/activities/ErrorHelperActivity.kt
@@ -1,7 +1,7 @@
package info.nightscout.androidaps.activities
import android.os.Bundle
-import info.nightscout.androidaps.R
+import info.nightscout.androidaps.core.R
import info.nightscout.androidaps.dialogs.ErrorDialog
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload
import info.nightscout.androidaps.utils.sharedPreferences.SP
@@ -9,6 +9,7 @@ import javax.inject.Inject
class ErrorHelperActivity : DialogAppCompatActivity() {
@Inject lateinit var sp : SP
+ @Inject lateinit var nsUpload: NSUpload
@Override
override fun onCreate(savedInstanceState: Bundle?) {
@@ -21,7 +22,7 @@ class ErrorHelperActivity : DialogAppCompatActivity() {
errorDialog.show(supportFragmentManager, "Error")
if (sp.getBoolean(R.string.key_ns_create_announcements_from_errors, true)) {
- NSUpload.uploadError(intent.getStringExtra("status"))
+ nsUpload.uploadError(intent.getStringExtra("status"))
}
}
}
diff --git a/core/src/main/java/info/nightscout/androidaps/activities/NoSplashAppCompatActivity.kt b/core/src/main/java/info/nightscout/androidaps/activities/NoSplashAppCompatActivity.kt
index 060f1a8c2e..6ded8b95b5 100644
--- a/core/src/main/java/info/nightscout/androidaps/activities/NoSplashAppCompatActivity.kt
+++ b/core/src/main/java/info/nightscout/androidaps/activities/NoSplashAppCompatActivity.kt
@@ -4,7 +4,7 @@ import android.content.Context
import android.os.Bundle
import dagger.android.support.DaggerAppCompatActivity
import info.nightscout.androidaps.core.R
-import info.nightscout.androidaps.utils.LocaleHelper
+import info.nightscout.androidaps.utils.locale.LocaleHelper
//@Suppress("registered")
open class NoSplashAppCompatActivity : DaggerAppCompatActivity() {
diff --git a/app/src/main/java/info/nightscout/androidaps/activities/TDDStatsActivity.java b/core/src/main/java/info/nightscout/androidaps/activities/TDDStatsActivity.java
similarity index 90%
rename from app/src/main/java/info/nightscout/androidaps/activities/TDDStatsActivity.java
rename to core/src/main/java/info/nightscout/androidaps/activities/TDDStatsActivity.java
index ae337b8e59..905655587f 100644
--- a/app/src/main/java/info/nightscout/androidaps/activities/TDDStatsActivity.java
+++ b/core/src/main/java/info/nightscout/androidaps/activities/TDDStatsActivity.java
@@ -29,23 +29,18 @@ import java.util.Locale;
import javax.inject.Inject;
-import info.nightscout.androidaps.MainApp;
-import info.nightscout.androidaps.R;
+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.configBuilder.ConfigBuilderPlugin;
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction;
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPlugin;
-import info.nightscout.androidaps.plugins.pump.danaR.events.EventDanaRSyncStatus;
-import info.nightscout.androidaps.plugins.pump.danaRKorean.DanaRKoreanPlugin;
-import info.nightscout.androidaps.plugins.pump.danaRS.DanaRSPlugin;
-import info.nightscout.androidaps.plugins.pump.danaRv2.DanaRv2Plugin;
-import info.nightscout.androidaps.plugins.pump.insight.LocalInsightPlugin;
+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;
@@ -61,13 +56,8 @@ public class TDDStatsActivity extends NoSplashAppCompatActivity {
@Inject SP sp;
@Inject ProfileFunction profileFunction;
@Inject ActivePluginProvider activePlugin;
- @Inject DanaRSPlugin danaRSPlugin;
- @Inject DanaRPlugin danaRPlugin;
- @Inject DanaRv2Plugin danaRv2Plugin;
- @Inject DanaRKoreanPlugin danaRKoreanPlugin;
- @Inject LocalInsightPlugin localInsightPlugin;
- @Inject ConfigBuilderPlugin configBuilderPlugin;
@Inject CommandQueueProvider commandQueue;
+ @Inject DatabaseHelperInterface databaseHelper;
@Inject FabricPrivacy fabricPrivacy;
private CompositeDisposable disposable = new CompositeDisposable();
@@ -171,27 +161,27 @@ public class TDDStatsActivity extends NoSplashAppCompatActivity {
TableLayout.LayoutParams.WRAP_CONTENT));
TextView label_date = new TextView(this);
- label_date.setText(resourceHelper.gs(R.string.danar_stats_date));
+ 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.danar_stats_basalrate));
+ 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.danar_stats_bolus));
+ 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.danar_stats_tdd));
+ 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.danar_stats_ratio));
+ label_ratio.setText(resourceHelper.gs(R.string.ratio));
label_ratio.setTextColor(Color.WHITE);
tr_head.addView(label_ratio);
@@ -209,17 +199,17 @@ public class TDDStatsActivity extends NoSplashAppCompatActivity {
TableLayout.LayoutParams.WRAP_CONTENT));
TextView label_cum_amount_days = new TextView(this);
- label_cum_amount_days.setText(resourceHelper.gs(R.string.danar_stats_amount_days));
+ 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.danar_stats_tdd));
+ 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.danar_stats_ratio));
+ label_cum_ratio.setText(resourceHelper.gs(R.string.ratio));
label_cum_ratio.setTextColor(Color.WHITE);
ctr_head.addView(label_cum_ratio);
@@ -237,17 +227,17 @@ public class TDDStatsActivity extends NoSplashAppCompatActivity {
TableLayout.LayoutParams.WRAP_CONTENT));
TextView label_exp_weight = new TextView(this);
- label_exp_weight.setText(resourceHelper.gs(R.string.danar_stats_weight));
+ 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.danar_stats_tdd));
+ 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.danar_stats_ratio));
+ label_exp_ratio.setText(resourceHelper.gs(R.string.ratio));
label_exp_ratio.setTextColor(Color.WHITE);
etr_head.addView(label_exp_ratio);
@@ -261,7 +251,7 @@ public class TDDStatsActivity extends NoSplashAppCompatActivity {
reloadButton.setVisibility(View.GONE);
statusView.setVisibility(View.VISIBLE);
statsMessage.setVisibility(View.VISIBLE);
- statsMessage.setText(resourceHelper.gs(R.string.danar_stats_warning_Message));
+ statsMessage.setText(resourceHelper.gs(R.string.warning_Message));
});
commandQueue.loadTDDs(new Callback() {
@Override
@@ -300,13 +290,13 @@ public class TDDStatsActivity extends NoSplashAppCompatActivity {
}
private void loadDataFromDB() {
- historyList = MainApp.getDbHelper().getTDDs();
+ historyList = databaseHelper.getTDDs();
//only use newest 10
historyList = historyList.subList(0, Math.min(10, historyList.size()));
//fill single gaps
- dummies = new LinkedList();
+ 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);
@@ -449,7 +439,7 @@ public class TDDStatsActivity extends NoSplashAppCompatActivity {
if (isOldData(historyList) && activePlugin.getActivePump().getPumpDescription().needsManualTDDLoad) {
statsMessage.setVisibility(View.VISIBLE);
- statsMessage.setText(resourceHelper.gs(R.string.danar_stats_olddata_Message));
+ statsMessage.setText(resourceHelper.gs(R.string.olddata_Message));
} else {
tl.setBackgroundColor(Color.TRANSPARENT);
@@ -527,7 +517,8 @@ public class TDDStatsActivity extends NoSplashAppCompatActivity {
public boolean isOldData(List historyList) {
- boolean startsYesterday = danaRPlugin.isEnabled() || danaRSPlugin.isEnabled() || danaRv2Plugin.isEnabled() || danaRKoreanPlugin.isEnabled() || localInsightPlugin.isEnabled();
+ 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))))));
diff --git a/core/src/main/java/info/nightscout/androidaps/core/di/CoreDataClassesModule.kt b/core/src/main/java/info/nightscout/androidaps/core/di/CoreDataClassesModule.kt
new file mode 100644
index 0000000000..d17e1d0168
--- /dev/null
+++ b/core/src/main/java/info/nightscout/androidaps/core/di/CoreDataClassesModule.kt
@@ -0,0 +1,28 @@
+package info.nightscout.androidaps.core.di
+
+import dagger.Module
+import dagger.android.ContributesAndroidInjector
+import info.nightscout.androidaps.data.Profile
+import info.nightscout.androidaps.data.PumpEnactResult
+import info.nightscout.androidaps.db.*
+import info.nightscout.androidaps.interfaces.ProfileStore
+import info.nightscout.androidaps.plugins.aps.loop.APSResult
+import info.nightscout.androidaps.plugins.iob.iobCobCalculator.data.AutosensData
+
+@Module
+@Suppress("unused")
+abstract class CoreDataClassesModule {
+
+ @ContributesAndroidInjector abstract fun pumpEnactResultInjector(): PumpEnactResult
+ @ContributesAndroidInjector abstract fun apsResultInjector(): APSResult
+ @ContributesAndroidInjector abstract fun autosensDataInjector(): AutosensData
+
+ @ContributesAndroidInjector abstract fun profileInjector(): Profile
+ @ContributesAndroidInjector abstract fun profileStoreInjector(): ProfileStore
+ @ContributesAndroidInjector abstract fun bgReadingInjector(): BgReading
+ @ContributesAndroidInjector abstract fun treatmentInjector(): Treatment
+ @ContributesAndroidInjector abstract fun profileSwitchInjector(): ProfileSwitch
+ @ContributesAndroidInjector abstract fun temporaryBasalInjector(): TemporaryBasal
+ @ContributesAndroidInjector abstract fun careportalEventInjector(): CareportalEvent
+ @ContributesAndroidInjector abstract fun extendedBolusInjector(): ExtendedBolus
+}
diff --git a/core/src/main/java/info/nightscout/androidaps/core/di/CoreFragmentsModule.kt b/core/src/main/java/info/nightscout/androidaps/core/di/CoreFragmentsModule.kt
new file mode 100644
index 0000000000..43bfc39cca
--- /dev/null
+++ b/core/src/main/java/info/nightscout/androidaps/core/di/CoreFragmentsModule.kt
@@ -0,0 +1,26 @@
+package info.nightscout.androidaps.core.di
+
+import dagger.Module
+import dagger.android.ContributesAndroidInjector
+import info.nightscout.androidaps.activities.BolusProgressHelperActivity
+import info.nightscout.androidaps.activities.ErrorHelperActivity
+import info.nightscout.androidaps.activities.TDDStatsActivity
+import info.nightscout.androidaps.dialogs.BolusProgressDialog
+import info.nightscout.androidaps.dialogs.ErrorDialog
+import info.nightscout.androidaps.dialogs.NtpProgressDialog
+import info.nightscout.androidaps.dialogs.ProfileViewerDialog
+
+@Module
+@Suppress("unused")
+abstract class CoreFragmentsModule {
+
+ @ContributesAndroidInjector abstract fun contributesTDDStatsActivity(): TDDStatsActivity
+ @ContributesAndroidInjector abstract fun contributeBolusProgressHelperActivity(): BolusProgressHelperActivity
+ @ContributesAndroidInjector abstract fun contributeErrorHelperActivity(): ErrorHelperActivity
+
+ @ContributesAndroidInjector abstract fun contributesBolusProgressDialog(): BolusProgressDialog
+ @ContributesAndroidInjector abstract fun contributesErrorDialog(): ErrorDialog
+ @ContributesAndroidInjector abstract fun contributesNtpProgressDialog(): NtpProgressDialog
+ @ContributesAndroidInjector abstract fun contributesProfileViewerDialog(): ProfileViewerDialog
+
+}
diff --git a/core/src/main/java/info/nightscout/androidaps/core/dependencyInjection/CoreModule.kt b/core/src/main/java/info/nightscout/androidaps/core/di/CoreModule.kt
similarity index 55%
rename from core/src/main/java/info/nightscout/androidaps/core/dependencyInjection/CoreModule.kt
rename to core/src/main/java/info/nightscout/androidaps/core/di/CoreModule.kt
index 19e64742fc..013e0459c2 100644
--- a/core/src/main/java/info/nightscout/androidaps/core/dependencyInjection/CoreModule.kt
+++ b/core/src/main/java/info/nightscout/androidaps/core/di/CoreModule.kt
@@ -1,21 +1,36 @@
-package info.nightscout.androidaps.core.dependencyInjection
+package info.nightscout.androidaps.core.di
import android.content.Context
import android.preference.PreferenceManager
import dagger.Module
import dagger.Provides
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.interfaces.ActivePluginProvider
+import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.AAPSLoggerProduction
import info.nightscout.androidaps.logging.L
+import info.nightscout.androidaps.plugins.configBuilder.ProfileFunctionImplementation
+import info.nightscout.androidaps.utils.FabricPrivacy
import info.nightscout.androidaps.utils.resources.ResourceHelper
import info.nightscout.androidaps.utils.resources.ResourceHelperImplementation
import info.nightscout.androidaps.utils.sharedPreferences.SP
import info.nightscout.androidaps.utils.sharedPreferences.SPImplementation
import javax.inject.Singleton
-@Module
+@Module(includes = [
+ CoreReceiversModule::class,
+ CoreFragmentsModule::class,
+ CoreDataClassesModule::class
+])
open class CoreModule {
+ @Provides
+ @Singleton
+ fun provideProfileFunction(injector: HasAndroidInjector, aapsLogger: AAPSLogger, sp: SP, resourceHelper: ResourceHelper, activePlugin: ActivePluginProvider, fabricPrivacy: FabricPrivacy): ProfileFunction {
+ return ProfileFunctionImplementation(injector, aapsLogger, sp, resourceHelper, activePlugin, fabricPrivacy)
+ }
+
@Provides
@Singleton
fun provideResources(context: Context): ResourceHelper = ResourceHelperImplementation(context)
diff --git a/core/src/main/java/info/nightscout/androidaps/core/di/CoreReceiversModule.kt b/core/src/main/java/info/nightscout/androidaps/core/di/CoreReceiversModule.kt
new file mode 100644
index 0000000000..a4284c6c0b
--- /dev/null
+++ b/core/src/main/java/info/nightscout/androidaps/core/di/CoreReceiversModule.kt
@@ -0,0 +1,11 @@
+package info.nightscout.androidaps.core.di
+
+import dagger.Module
+import dagger.android.ContributesAndroidInjector
+import info.nightscout.androidaps.receivers.NetworkChangeReceiver
+
+@Module
+abstract class CoreReceiversModule {
+
+ @ContributesAndroidInjector abstract fun contributesNetworkChangeReceiver(): NetworkChangeReceiver
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/data/DetailedBolusInfo.java b/core/src/main/java/info/nightscout/androidaps/data/DetailedBolusInfo.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/data/DetailedBolusInfo.java
rename to core/src/main/java/info/nightscout/androidaps/data/DetailedBolusInfo.java
diff --git a/app/src/main/java/info/nightscout/androidaps/data/Intervals.java b/core/src/main/java/info/nightscout/androidaps/data/Intervals.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/data/Intervals.java
rename to core/src/main/java/info/nightscout/androidaps/data/Intervals.java
diff --git a/app/src/main/java/info/nightscout/androidaps/data/Iob.java b/core/src/main/java/info/nightscout/androidaps/data/Iob.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/data/Iob.java
rename to core/src/main/java/info/nightscout/androidaps/data/Iob.java
diff --git a/app/src/main/java/info/nightscout/androidaps/data/IobTotal.java b/core/src/main/java/info/nightscout/androidaps/data/IobTotal.java
similarity index 93%
rename from app/src/main/java/info/nightscout/androidaps/data/IobTotal.java
rename to core/src/main/java/info/nightscout/androidaps/data/IobTotal.java
index 7538cfa9ad..adefc76767 100644
--- a/app/src/main/java/info/nightscout/androidaps/data/IobTotal.java
+++ b/core/src/main/java/info/nightscout/androidaps/data/IobTotal.java
@@ -2,19 +2,15 @@ package info.nightscout.androidaps.data;
import org.json.JSONException;
import org.json.JSONObject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import java.util.Date;
-import info.nightscout.androidaps.logging.StacktraceLoggerWrapper;
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.DataPointWithLabelInterface;
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.PointsWithLabelGraphSeries;
import info.nightscout.androidaps.utils.DateUtil;
import info.nightscout.androidaps.utils.Round;
public class IobTotal implements DataPointWithLabelInterface {
- private static Logger log = StacktraceLoggerWrapper.getLogger(IobTotal.class);
public double iob;
public double activity;
@@ -108,8 +104,7 @@ public class IobTotal implements DataPointWithLabelInterface {
json.put("basaliob", basaliob);
json.put("activity", activity);
json.put("time", DateUtil.toISOString(new Date()));
- } catch (JSONException e) {
- log.error("Unhandled exception", e);
+ } catch (JSONException ignored) {
}
return json;
}
@@ -139,8 +134,7 @@ public class IobTotal implements DataPointWithLabelInterface {
JSONObject iwzt = iobWithZeroTemp.determineBasalJson();
json.put("iobWithZeroTemp", iwzt);
}
- } catch (JSONException e) {
- log.error("Unhandled exception", e);
+ } catch (JSONException ignored) {
}
return json;
}
diff --git a/app/src/main/java/info/nightscout/androidaps/data/MealData.java b/core/src/main/java/info/nightscout/androidaps/data/MealData.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/data/MealData.java
rename to core/src/main/java/info/nightscout/androidaps/data/MealData.java
diff --git a/app/src/main/java/info/nightscout/androidaps/data/NonOverlappingIntervals.java b/core/src/main/java/info/nightscout/androidaps/data/NonOverlappingIntervals.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/data/NonOverlappingIntervals.java
rename to core/src/main/java/info/nightscout/androidaps/data/NonOverlappingIntervals.java
diff --git a/app/src/main/java/info/nightscout/androidaps/data/OverlappingIntervals.java b/core/src/main/java/info/nightscout/androidaps/data/OverlappingIntervals.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/data/OverlappingIntervals.java
rename to core/src/main/java/info/nightscout/androidaps/data/OverlappingIntervals.java
diff --git a/app/src/main/java/info/nightscout/androidaps/data/Profile.java b/core/src/main/java/info/nightscout/androidaps/data/Profile.java
similarity index 98%
rename from app/src/main/java/info/nightscout/androidaps/data/Profile.java
rename to core/src/main/java/info/nightscout/androidaps/data/Profile.java
index 0fcc0321c2..9fe8c7846e 100644
--- a/app/src/main/java/info/nightscout/androidaps/data/Profile.java
+++ b/core/src/main/java/info/nightscout/androidaps/data/Profile.java
@@ -13,22 +13,20 @@ import java.util.TimeZone;
import javax.inject.Inject;
import dagger.android.HasAndroidInjector;
-import info.nightscout.androidaps.Config;
import info.nightscout.androidaps.Constants;
-import info.nightscout.androidaps.MainApp;
-import info.nightscout.androidaps.R;
+import info.nightscout.androidaps.core.R;
import info.nightscout.androidaps.interfaces.ActivePluginProvider;
+import info.nightscout.androidaps.interfaces.ConfigInterface;
+import info.nightscout.androidaps.interfaces.ProfileFunction;
import info.nightscout.androidaps.interfaces.PumpDescription;
import info.nightscout.androidaps.interfaces.PumpInterface;
import info.nightscout.androidaps.logging.AAPSLogger;
import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction;
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification;
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification;
import info.nightscout.androidaps.utils.DateUtil;
import info.nightscout.androidaps.utils.DecimalFormatter;
import info.nightscout.androidaps.utils.FabricPrivacy;
-import info.nightscout.androidaps.utils.MidnightTime;
import info.nightscout.androidaps.utils.Round;
import info.nightscout.androidaps.utils.resources.ResourceHelper;
@@ -38,6 +36,7 @@ public class Profile {
@Inject public ResourceHelper resourceHelper;
@Inject public RxBusWrapper rxBus;
@Inject public FabricPrivacy fabricPrivacy;
+ @Inject public ConfigInterface configInterface;
private HasAndroidInjector injector;
@@ -62,11 +61,6 @@ public class Profile {
protected boolean isValid;
protected boolean isValidated;
- // Default constructor for DB
- public Profile() {
- MainApp.instance().androidInjector().inject(this);
- }
-
protected Profile(HasAndroidInjector injector) {
injector.androidInjector().inject(this);
this.injector = injector;
@@ -88,7 +82,7 @@ public class Profile {
if (units != null)
this.units = units;
else {
- fabricPrivacy.log("Profile failover failed too");
+ fabricPrivacy.logCustom("Profile failover failed too");
this.units = Constants.MGDL;
}
}
@@ -106,6 +100,7 @@ public class Profile {
}
protected void init(JSONObject json, int percentage, int timeshift) {
+ if (json == null) return;
units = null;
dia = Constants.defaultDIA;
timeZone = TimeZone.getDefault();
@@ -253,7 +248,7 @@ public class Profile {
for (int index = 0; index < basal_v.size(); index++) {
long secondsFromMidnight = basal_v.keyAt(index);
if (notify && secondsFromMidnight % 3600 != 0) {
- if (Config.APS) {
+ if (configInterface.getAPS()) {
Notification notification = new Notification(Notification.BASAL_PROFILE_NOT_ALIGNED_TO_HOURS, resourceHelper.gs(R.string.basalprofilenotaligned, from), Notification.NORMAL);
rxBus.send(new EventNewNotification(notification));
}
@@ -375,7 +370,7 @@ public class Profile {
return lastValue;
}
- protected String format_HH_MM(Integer timeAsSeconds) {
+ public static String format_HH_MM(Integer timeAsSeconds) {
String time;
int hour = timeAsSeconds / 60 / 60;
int minutes = (timeAsSeconds - hour * 60 * 60) / 60;
@@ -410,6 +405,10 @@ public class Profile {
return toMgdl(getIsfTimeFromMidnight(secondsFromMidnight(time)), units);
}
+ public double getIsfMgdlTimeFromMidnight(int timeAsSeconds) {
+ return toMgdl(getIsfTimeFromMidnight(timeAsSeconds), units);
+ }
+
public double getIsfTimeFromMidnight(int timeAsSeconds) {
if (isf_v == null)
isf_v = convertToSparseArray(isf);
@@ -531,7 +530,6 @@ public class Profile {
public double getTargetMgdl(int timeAsSeconds) {
return toMgdl((getTargetLowTimeFromMidnight(timeAsSeconds) + getTargetHighTimeFromMidnight(timeAsSeconds)) / 2, units);
}
-
public double getTargetLowMgdl() {
return toMgdl(getTargetLowTimeFromMidnight(secondsFromMidnight()), units);
}
diff --git a/app/src/main/java/info/nightscout/androidaps/data/ProfileIntervals.java b/core/src/main/java/info/nightscout/androidaps/data/ProfileIntervals.java
similarity index 92%
rename from app/src/main/java/info/nightscout/androidaps/data/ProfileIntervals.java
rename to core/src/main/java/info/nightscout/androidaps/data/ProfileIntervals.java
index c93c549afc..6e68c3996a 100644
--- a/app/src/main/java/info/nightscout/androidaps/data/ProfileIntervals.java
+++ b/core/src/main/java/info/nightscout/androidaps/data/ProfileIntervals.java
@@ -3,14 +3,10 @@ package info.nightscout.androidaps.data;
import androidx.annotation.Nullable;
import androidx.collection.LongSparseArray;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import java.util.ArrayList;
import java.util.List;
import info.nightscout.androidaps.interfaces.Interval;
-import info.nightscout.androidaps.logging.StacktraceLoggerWrapper;
/**
* Created by mike on 09.05.2017.
@@ -20,15 +16,14 @@ import info.nightscout.androidaps.logging.StacktraceLoggerWrapper;
// When no interval match the lastest record without duration is used
public class ProfileIntervals {
- private static Logger log = StacktraceLoggerWrapper.getLogger(ProfileIntervals.class);
private LongSparseArray rawData; // oldest at index 0
- public ProfileIntervals () {
+ public ProfileIntervals() {
rawData = new LongSparseArray<>();
}
- public ProfileIntervals (ProfileIntervals other) {
+ public ProfileIntervals(ProfileIntervals other) {
rawData = other.rawData.clone();
}
diff --git a/app/src/main/java/info/nightscout/androidaps/data/PumpEnactResult.java b/core/src/main/java/info/nightscout/androidaps/data/PumpEnactResult.java
similarity index 99%
rename from app/src/main/java/info/nightscout/androidaps/data/PumpEnactResult.java
rename to core/src/main/java/info/nightscout/androidaps/data/PumpEnactResult.java
index 00cfb1e6bd..16c3707536 100644
--- a/app/src/main/java/info/nightscout/androidaps/data/PumpEnactResult.java
+++ b/core/src/main/java/info/nightscout/androidaps/data/PumpEnactResult.java
@@ -6,7 +6,7 @@ import org.json.JSONObject;
import javax.inject.Inject;
import dagger.android.HasAndroidInjector;
-import info.nightscout.androidaps.R;
+import info.nightscout.androidaps.core.R;
import info.nightscout.androidaps.logging.AAPSLogger;
import info.nightscout.androidaps.utils.DecimalFormatter;
import info.nightscout.androidaps.utils.Round;
diff --git a/app/src/main/java/info/nightscout/androidaps/data/defaultProfile/DefaultProfile.kt b/core/src/main/java/info/nightscout/androidaps/data/defaultProfile/DefaultProfile.kt
similarity index 85%
rename from app/src/main/java/info/nightscout/androidaps/data/defaultProfile/DefaultProfile.kt
rename to core/src/main/java/info/nightscout/androidaps/data/defaultProfile/DefaultProfile.kt
index 536c5ed68f..f1a0375d2a 100644
--- a/app/src/main/java/info/nightscout/androidaps/data/defaultProfile/DefaultProfile.kt
+++ b/core/src/main/java/info/nightscout/androidaps/data/defaultProfile/DefaultProfile.kt
@@ -17,7 +17,7 @@ class DefaultProfile @Inject constructor(val injector: HasAndroidInjector) {
var twelveToSeventeen: TreeMap> = TreeMap()
var eighteenToTwentyfor: TreeMap> = TreeMap()
- fun profile(age: Double, tdd: Double, weight: Double, units: String): Profile {
+ fun profile(age: Double, tdd: Double, weight: Double, units: String): Profile? {
val profile = JSONObject()
if (age >= 1 && age < 6) {
val _tdd = if (tdd == 0.0) 0.6 * weight else tdd
@@ -25,23 +25,23 @@ class DefaultProfile @Inject constructor(val injector: HasAndroidInjector) {
val ic = Round.roundTo(250.0 / _tdd, 1.0)
profile.put("carbratio", singleValueArray(ic, arrayOf(0.0, -4.0, -1.0, -2.0, -4.0, 0.0, -4.0)))
val isf = Round.roundTo(200.0 / _tdd, 0.1)
- profile.put("sens", singleValueArray(isf, arrayOf(0.0, -2.0, -0.0, -0.0, -2.0, 0.0, -2.0)))
+ profile.put("sens", singleValueArrayFromMmolToUnits(isf, arrayOf(0.0, -2.0, -0.0, -0.0, -2.0, 0.0, -2.0),units))
} else if (age >= 6 && age < 12) {
val _tdd = if (tdd == 0.0) 0.8 * weight else tdd
closest(sixToEleven, _tdd * 0.4)?.let { array -> profile.put("basal", arrayToJson(array)) }
val ic = Round.roundTo(375.0 / _tdd, 1.0)
profile.put("carbratio", singleValueArray(ic, arrayOf(0.0, -3.0, 0.0, -1.0, -3.0, 0.0, -2.0)))
val isf = Round.roundTo(170.0 / _tdd, 0.1)
- profile.put("sens", singleValueArray(isf, arrayOf(0.0, -1.0, -0.0, -0.0, -1.0, 0.0, -1.0)))
- } else if (age >= 12 && age < 17) {
+ profile.put("sens", singleValueArrayFromMmolToUnits(isf, arrayOf(0.0, -1.0, -0.0, -0.0, -1.0, 0.0, -1.0),units))
+ } else if (age >= 12 && age <= 18) {
val _tdd = if (tdd == 0.0) 1.0 * weight else tdd
closest(twelveToSeventeen, _tdd * 0.5)?.let { array -> profile.put("basal", arrayToJson(array)) }
val ic = Round.roundTo(500.0 / _tdd, 1.0)
profile.put("carbratio", singleValueArray(ic, arrayOf(0.0, -1.0, 0.0, 0.0, -1.0, 0.0, -1.0)))
val isf = Round.roundTo(100.0 / _tdd, 0.1)
- profile.put("sens", singleValueArray(isf, arrayOf(0.2, 0.0, 0.2, 0.2, 0.0, 0.2, 0.2)))
- } else if (age >= 18) {
-
+ profile.put("sens", singleValueArrayFromMmolToUnits(isf, arrayOf(0.2, 0.0, 0.2, 0.2, 0.0, 0.2, 0.2),units))
+ } else if (age > 18) {
+ return null
}
profile.put("dia", 5.0)
profile.put("carbs_hr", 20) // not used
@@ -49,6 +49,7 @@ class DefaultProfile @Inject constructor(val injector: HasAndroidInjector) {
profile.put("timezone", TimeZone.getDefault().getID())
profile.put("target_high", JSONArray().put(JSONObject().put("time", "00:00").put("value", Profile.fromMgdlToUnits(108.0, units))))
profile.put("target_low", JSONArray().put(JSONObject().put("time", "00:00").put("value", Profile.fromMgdlToUnits(108.0, units))))
+ profile.put("units", units)
return Profile(injector, profile, units)
}
@@ -126,24 +127,36 @@ class DefaultProfile @Inject constructor(val injector: HasAndroidInjector) {
return res
}
- fun arrayToJson(b: Array): JSONArray {
+ private fun arrayToJson(b: Array): JSONArray {
val basals = JSONArray()
for (i in 0..23) {
val time = String.format(Locale.ENGLISH, "%02d:00", i)
- basals.put(JSONObject().put("time", time).put("value", b[i].toString()))
+ basals.put(JSONObject().put("time", time).put("value", b[i].toString()).put("timeAsSeconds", i * 3600))
}
return basals
}
- fun singleValueArray(value: Double, sample: Array): JSONArray {
+ private fun singleValueArray(value: Double, sample: Array): JSONArray {
val array = JSONArray()
- array.put(JSONObject().put("time", "00:00").put("value", value + sample[0]))
- array.put(JSONObject().put("time", "06:00").put("value", value + sample[1]))
- array.put(JSONObject().put("time", "09:00").put("value", value + sample[2]))
- array.put(JSONObject().put("time", "11:00").put("value", value + sample[3]))
- array.put(JSONObject().put("time", "14:00").put("value", value + sample[4]))
- array.put(JSONObject().put("time", "16:00").put("value", value + sample[5]))
- array.put(JSONObject().put("time", "19:00").put("value", value + sample[6]))
+ array.put(JSONObject().put("time", "00:00").put("value", value + sample[0]).put("timeAsSeconds", 0 * 3600))
+ array.put(JSONObject().put("time", "06:00").put("value", value + sample[1]).put("timeAsSeconds", 6 * 3600))
+ array.put(JSONObject().put("time", "09:00").put("value", value + sample[2]).put("timeAsSeconds", 9 * 3600))
+ array.put(JSONObject().put("time", "11:00").put("value", value + sample[3]).put("timeAsSeconds", 11 * 3600))
+ array.put(JSONObject().put("time", "14:00").put("value", value + sample[4]).put("timeAsSeconds", 14 * 3600))
+ array.put(JSONObject().put("time", "16:00").put("value", value + sample[5]).put("timeAsSeconds", 16 * 3600))
+ array.put(JSONObject().put("time", "19:00").put("value", value + sample[6]).put("timeAsSeconds", 19 * 3600))
+ return array
+ }
+
+ private fun singleValueArrayFromMmolToUnits(value: Double, sample: Array, units: String): JSONArray {
+ val array = JSONArray()
+ array.put(JSONObject().put("time", "00:00").put("value", Profile.fromMmolToUnits(value + sample[0],units)).put("timeAsSeconds", 0 * 3600))
+ array.put(JSONObject().put("time", "06:00").put("value", Profile.fromMmolToUnits(value + sample[1],units)).put("timeAsSeconds", 6 * 3600))
+ array.put(JSONObject().put("time", "09:00").put("value", Profile.fromMmolToUnits(value + sample[2],units)).put("timeAsSeconds", 9 * 3600))
+ array.put(JSONObject().put("time", "11:00").put("value", Profile.fromMmolToUnits(value + sample[3],units)).put("timeAsSeconds", 11 * 3600))
+ array.put(JSONObject().put("time", "14:00").put("value", Profile.fromMmolToUnits(value + sample[4],units)).put("timeAsSeconds", 14 * 3600))
+ array.put(JSONObject().put("time", "16:00").put("value", Profile.fromMmolToUnits(value + sample[5],units)).put("timeAsSeconds", 16 * 3600))
+ array.put(JSONObject().put("time", "19:00").put("value", Profile.fromMmolToUnits(value + sample[6],units)).put("timeAsSeconds", 19 * 3600))
return array
}
}
\ No newline at end of file
diff --git a/core/src/main/java/info/nightscout/androidaps/data/defaultProfile/DefaultProfileDPV.kt b/core/src/main/java/info/nightscout/androidaps/data/defaultProfile/DefaultProfileDPV.kt
new file mode 100644
index 0000000000..18195f9f8a
--- /dev/null
+++ b/core/src/main/java/info/nightscout/androidaps/data/defaultProfile/DefaultProfileDPV.kt
@@ -0,0 +1,67 @@
+package info.nightscout.androidaps.data.defaultProfile
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.data.Profile
+import info.nightscout.androidaps.utils.Round
+import org.json.JSONArray
+import org.json.JSONObject
+import java.util.*
+import javax.inject.Inject
+import javax.inject.Singleton
+
+@Singleton
+class DefaultProfileDPV @Inject constructor(val injector: HasAndroidInjector) {
+
+ var oneToFive = arrayOf(3.97, 3.61, 3.46, 3.70, 3.76, 3.87, 4.18, 4.01, 3.76, 3.54, 3.15, 2.80, 2.86, 3.21, 3.61, 3.97, 4.43, 4.96, 5.10, 5.50, 5.81, 6.14, 5.52, 5.10)
+ var sixToEleven = arrayOf(4.20, 4.27, 4.41, 4.62, 4.92, 5.09, 5.01, 4.47, 3.89, 3.33, 3.10, 2.91, 2.97, 3.08, 3.36, 3.93, 4.52, 4.76, 4.69, 4.63, 4.63, 4.47, 4.47, 4.31)
+ var twelveToEighteen = arrayOf(3.47, 3.80, 4.31, 4.95, 5.59, 6.11, 5.89, 5.11, 4.31, 3.78, 3.55, 3.39, 3.35, 3.39, 3.64, 3.97, 4.53, 4.59, 4.50, 4.00, 3.69, 3.39, 3.35, 3.35)
+
+ fun profile(age: Double, tdd: Double, basalSumPct: Double, units: String): Profile? {
+ val basalSum = tdd * basalSumPct
+ val profile = JSONObject()
+ if (age >= 1 && age < 6) {
+ profile.put("basal", arrayToJson(oneToFive, basalSum))
+ profile.put("carbratio", singleValueArray(0.0))
+ profile.put("sens", singleValueArrayFromMmolToUnits(0.0, units))
+ } else if (age >= 6 && age < 12) {
+ profile.put("basal", arrayToJson(sixToEleven, basalSum))
+ profile.put("carbratio", singleValueArray(0.0))
+ profile.put("sens", singleValueArrayFromMmolToUnits(0.0, units))
+ } else if (age >= 12 && age <= 18) {
+ profile.put("basal", arrayToJson(twelveToEighteen, basalSum))
+ profile.put("carbratio", singleValueArray(0.0))
+ profile.put("sens", singleValueArrayFromMmolToUnits(0.0, units))
+ } else if (age > 18) {
+ return null
+ }
+ profile.put("dia", 5.0)
+ profile.put("carbs_hr", 20) // not used
+ profile.put("delay", 5.0) // not used
+ profile.put("timezone", TimeZone.getDefault().getID())
+ profile.put("target_high", JSONArray().put(JSONObject().put("time", "00:00").put("value", Profile.fromMgdlToUnits(108.0, units))))
+ profile.put("target_low", JSONArray().put(JSONObject().put("time", "00:00").put("value", Profile.fromMgdlToUnits(108.0, units))))
+ profile.put("units", units)
+ return Profile(injector, profile, units)
+ }
+
+ private fun arrayToJson(b: Array, basalSum: Double): JSONArray {
+ val basals = JSONArray()
+ for (i in 0..23) {
+ val time = String.format(Locale.ENGLISH, "%02d:00", i)
+ basals.put(JSONObject().put("time", time).put("value", (b[i] * basalSum / 100.0).toString()).put("timeAsSeconds", i * 3600))
+ }
+ return basals
+ }
+
+ private fun singleValueArray(value: Double): JSONArray {
+ val array = JSONArray()
+ array.put(JSONObject().put("time", "00:00").put("value", value).put("timeAsSeconds", 0 * 3600))
+ return array
+ }
+
+ private fun singleValueArrayFromMmolToUnits(value: Double, units: String): JSONArray {
+ val array = JSONArray()
+ array.put(JSONObject().put("time", "00:00").put("value", Profile.fromMmolToUnits(value, units)).put("timeAsSeconds", 0 * 3600))
+ return array
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/db/BgReading.java b/core/src/main/java/info/nightscout/androidaps/db/BgReading.java
similarity index 82%
rename from app/src/main/java/info/nightscout/androidaps/db/BgReading.java
rename to core/src/main/java/info/nightscout/androidaps/db/BgReading.java
index b15d92a851..5046aed701 100644
--- a/app/src/main/java/info/nightscout/androidaps/db/BgReading.java
+++ b/core/src/main/java/info/nightscout/androidaps/db/BgReading.java
@@ -13,11 +13,11 @@ import javax.inject.Inject;
import dagger.android.HasAndroidInjector;
import info.nightscout.androidaps.Constants;
-import info.nightscout.androidaps.MainApp;
-import info.nightscout.androidaps.R;
+import info.nightscout.androidaps.core.R;
+import info.nightscout.androidaps.interfaces.DatabaseHelperInterface;
import info.nightscout.androidaps.logging.AAPSLogger;
import info.nightscout.androidaps.logging.LTag;
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction;
+import info.nightscout.androidaps.interfaces.ProfileFunction;
import info.nightscout.androidaps.plugins.general.nsclient.data.NSSgv;
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.DataPointWithLabelInterface;
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.PointsWithLabelGraphSeries;
@@ -27,12 +27,13 @@ import info.nightscout.androidaps.utils.DefaultValueHelper;
import info.nightscout.androidaps.utils.T;
import info.nightscout.androidaps.utils.resources.ResourceHelper;
-@DatabaseTable(tableName = DatabaseHelper.DATABASE_BGREADINGS)
+@DatabaseTable(tableName = "BgReadings")
public class BgReading implements DataPointWithLabelInterface {
@Inject public AAPSLogger aapsLogger;
@Inject public DefaultValueHelper defaultValueHelper;
@Inject public ProfileFunction profileFunction;
@Inject public ResourceHelper resourceHelper;
+ @Inject public DateUtil dateUtil;
@DatabaseField(id = true)
public long date;
@@ -59,14 +60,15 @@ public class BgReading implements DataPointWithLabelInterface {
public boolean isZTPrediction = false; // true when drawing predictions as bg points (ZT)
public BgReading() {
- MainApp.instance().androidInjector().inject(this);
+ StaticInjector.Companion.getInstance().androidInjector().inject(this);
}
public BgReading(HasAndroidInjector injector) {
injector.androidInjector().inject(this);
}
- public BgReading(NSSgv sgv) {
+ public BgReading(HasAndroidInjector injector, NSSgv sgv) {
+ injector.androidInjector().inject(this);
date = sgv.getMills();
value = sgv.getMgdl();
raw = sgv.getFiltered() != null ? sgv.getFiltered() : value;
@@ -86,10 +88,10 @@ public class BgReading implements DataPointWithLabelInterface {
else return DecimalFormatter.to1Decimal(value * Constants.MGDL_TO_MMOLL);
}
- public String directionToSymbol() {
+ public String directionToSymbol(DatabaseHelperInterface databaseHelper) {
String symbol = "";
if (direction == null)
- direction = calculateDirection();
+ direction = calculateDirection(databaseHelper);
if (direction.compareTo("DoubleDown") == 0) {
symbol = "\u21ca";
@@ -111,6 +113,32 @@ public class BgReading implements DataPointWithLabelInterface {
return symbol;
}
+
+ public int directionToIcon(DatabaseHelperInterface databaseHelper) {
+ int symbol = 0;
+ if (direction == null)
+ direction = calculateDirection(databaseHelper);
+
+ if (direction.compareTo("DoubleDown") == 0) {
+ symbol = R.drawable.ic_doubledown;
+ } else if (direction.compareTo("SingleDown") == 0) {
+ symbol = R.drawable.ic_singledown;
+ } else if (direction.compareTo("FortyFiveDown") == 0) {
+ symbol = R.drawable.ic_fortyfivedown;;
+ } else if (direction.compareTo("Flat") == 0) {
+ symbol = R.drawable.ic_flat;;
+ } else if (direction.compareTo("FortyFiveUp") == 0) {
+ symbol = R.drawable.ic_fortyfiveup;
+ } else if (direction.compareTo("SingleUp") == 0) {
+ symbol = R.drawable.ic_singleup;
+ } else if (direction.compareTo("DoubleUp") == 0) {
+ symbol = R.drawable.ic_doubleup;
+ } else if (isSlopeNameInvalid(direction)) {
+ symbol = R.drawable.ic_invalid;
+ }
+ return symbol;
+ }
+
private static boolean isSlopeNameInvalid(String direction) {
return direction.compareTo("NOT_COMPUTABLE") == 0 ||
direction.compareTo("NOT COMPUTABLE") == 0 ||
@@ -125,7 +153,7 @@ public class BgReading implements DataPointWithLabelInterface {
public String toString() {
return "BgReading{" +
"date=" + date +
- ", date=" + DateUtil.dateAndTimeString(date) +
+ ", date=" + dateUtil.dateAndTimeString(date) +
", value=" + value +
", direction=" + direction +
", raw=" + raw +
@@ -249,7 +277,7 @@ public class BgReading implements DataPointWithLabelInterface {
return resourceHelper.gc(R.color.uam);
if (isZTPrediction)
return resourceHelper.gc(R.color.zt);
- return R.color.mdtp_white;
+ return R.color.white;
}
private boolean isPrediction() {
@@ -258,10 +286,10 @@ public class BgReading implements DataPointWithLabelInterface {
// Copied from xDrip+
- String calculateDirection() {
+ String calculateDirection(DatabaseHelperInterface databasehelper) {
// Rework to get bgreaings from internal DB and calculate on that base
- List bgReadingsList = MainApp.getDbHelper().getAllBgreadingsDataFromTime(this.date - T.mins(10).msecs(), false);
+ List bgReadingsList = databasehelper.getAllBgreadingsDataFromTime(this.date - T.mins(10).msecs(), false);
if (bgReadingsList == null || bgReadingsList.size() < 2)
return "NONE";
BgReading current = bgReadingsList.get(1);
diff --git a/app/src/main/java/info/nightscout/androidaps/db/CareportalEvent.java b/core/src/main/java/info/nightscout/androidaps/db/CareportalEvent.java
similarity index 95%
rename from app/src/main/java/info/nightscout/androidaps/db/CareportalEvent.java
rename to core/src/main/java/info/nightscout/androidaps/db/CareportalEvent.java
index ea9e44e7fe..80a72ada37 100644
--- a/app/src/main/java/info/nightscout/androidaps/db/CareportalEvent.java
+++ b/core/src/main/java/info/nightscout/androidaps/db/CareportalEvent.java
@@ -9,10 +9,6 @@ import org.apache.commons.lang3.StringUtils;
import org.json.JSONException;
import org.json.JSONObject;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.EnumSet;
-import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
@@ -21,13 +17,12 @@ import javax.inject.Inject;
import dagger.android.HasAndroidInjector;
import info.nightscout.androidaps.Constants;
-import info.nightscout.androidaps.MainApp;
-import info.nightscout.androidaps.R;
+import info.nightscout.androidaps.core.R;
import info.nightscout.androidaps.data.Profile;
import info.nightscout.androidaps.interfaces.Interval;
import info.nightscout.androidaps.logging.AAPSLogger;
import info.nightscout.androidaps.logging.LTag;
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction;
+import info.nightscout.androidaps.interfaces.ProfileFunction;
import info.nightscout.androidaps.plugins.general.nsclient.data.NSMbg;
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.DataPointWithLabelInterface;
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.PointsWithLabelGraphSeries;
@@ -36,13 +31,14 @@ import info.nightscout.androidaps.utils.T;
import info.nightscout.androidaps.utils.Translator;
import info.nightscout.androidaps.utils.resources.ResourceHelper;
-@DatabaseTable(tableName = DatabaseHelper.DATABASE_CAREPORTALEVENTS)
+@DatabaseTable(tableName = "CareportalEvents")
public class CareportalEvent implements DataPointWithLabelInterface, Interval {
@Inject ProfileFunction profileFunction;
@Inject ResourceHelper resourceHelper;
@Inject AAPSLogger aapsLogger;
@Inject Translator translator;
+ @Inject DateUtil dateUtil;
@DatabaseField(id = true)
public long date;
@@ -84,7 +80,7 @@ public class CareportalEvent implements DataPointWithLabelInterface, Interval {
@Deprecated
public CareportalEvent() {
- MainApp.instance().androidInjector().inject(this);
+ StaticInjector.Companion.getInstance().androidInjector().inject(this);
}
public CareportalEvent(HasAndroidInjector injector) {
@@ -92,6 +88,7 @@ public class CareportalEvent implements DataPointWithLabelInterface, Interval {
}
public CareportalEvent(NSMbg mbg) {
+ this();
date = mbg.date;
eventType = MBG;
json = mbg.json;
@@ -127,7 +124,7 @@ public class CareportalEvent implements DataPointWithLabelInterface, Interval {
public String toString() {
return "CareportalEvent{" +
"date= " + date +
- ", date= " + DateUtil.dateAndTimeString(date) +
+ ", date= " + dateUtil.dateAndTimeString(date) +
", isValid= " + isValid +
", _id= " + _id +
", eventType= " + eventType +
@@ -139,7 +136,7 @@ public class CareportalEvent implements DataPointWithLabelInterface, Interval {
for (int i = 0; i < list.size(); i++) {
CareportalEvent event = list.get(i);
if (event.date <= time && event.date > (time - T.mins(5).msecs())) {
- aapsLogger.debug(LTag.DATABASE, "Found event for time: " + DateUtil.dateAndTimeString(time) + " " + event.toString());
+ aapsLogger.debug(LTag.DATABASE, "Found event for time: " + dateUtil.dateAndTimeString(time) + " " + event.toString());
return true;
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/db/DanaRHistoryRecord.java b/core/src/main/java/info/nightscout/androidaps/db/DanaRHistoryRecord.java
similarity index 95%
rename from app/src/main/java/info/nightscout/androidaps/db/DanaRHistoryRecord.java
rename to core/src/main/java/info/nightscout/androidaps/db/DanaRHistoryRecord.java
index 5c2e4f4985..2c161df1cc 100644
--- a/app/src/main/java/info/nightscout/androidaps/db/DanaRHistoryRecord.java
+++ b/core/src/main/java/info/nightscout/androidaps/db/DanaRHistoryRecord.java
@@ -3,9 +3,7 @@ package info.nightscout.androidaps.db;
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;
-import java.util.Date;
-
-@DatabaseTable(tableName = DatabaseHelper.DATABASE_DANARHISTORY)
+@DatabaseTable(tableName = "DanaRHistory")
public class DanaRHistoryRecord {
@DatabaseField
diff --git a/app/src/main/java/info/nightscout/androidaps/db/DbObjectBase.java b/core/src/main/java/info/nightscout/androidaps/db/DbObjectBase.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/db/DbObjectBase.java
rename to core/src/main/java/info/nightscout/androidaps/db/DbObjectBase.java
diff --git a/app/src/main/java/info/nightscout/androidaps/db/DbRequest.java b/core/src/main/java/info/nightscout/androidaps/db/DbRequest.java
similarity index 89%
rename from app/src/main/java/info/nightscout/androidaps/db/DbRequest.java
rename to core/src/main/java/info/nightscout/androidaps/db/DbRequest.java
index 60da1d2bca..12bcc740c3 100644
--- a/app/src/main/java/info/nightscout/androidaps/db/DbRequest.java
+++ b/core/src/main/java/info/nightscout/androidaps/db/DbRequest.java
@@ -5,10 +5,7 @@ import com.j256.ormlite.table.DatabaseTable;
import org.json.JSONException;
import org.json.JSONObject;
-import org.slf4j.Logger;
-import info.nightscout.androidaps.logging.LTag;
-import info.nightscout.androidaps.logging.StacktraceLoggerWrapper;
import info.nightscout.androidaps.utils.DateUtil;
/**
@@ -16,9 +13,8 @@ import info.nightscout.androidaps.utils.DateUtil;
*
* Allowed actions "dbAdd" || "dbUpdate" || "dbUpdateUnset" || "dbRemove"
*/
-@DatabaseTable(tableName = DatabaseHelper.DATABASE_DBREQUESTS)
+@DatabaseTable(tableName = "DBRequests")
public class DbRequest {
- private static Logger log = StacktraceLoggerWrapper.getLogger(LTag.DATABASE);
@DatabaseField(id = true)
public String nsClientID = null;
diff --git a/app/src/main/java/info/nightscout/androidaps/db/ExtendedBolus.java b/core/src/main/java/info/nightscout/androidaps/db/ExtendedBolus.java
similarity index 96%
rename from app/src/main/java/info/nightscout/androidaps/db/ExtendedBolus.java
rename to core/src/main/java/info/nightscout/androidaps/db/ExtendedBolus.java
index 15dd969e09..cfee68be27 100644
--- a/app/src/main/java/info/nightscout/androidaps/db/ExtendedBolus.java
+++ b/core/src/main/java/info/nightscout/androidaps/db/ExtendedBolus.java
@@ -17,18 +17,15 @@ import javax.inject.Inject;
import dagger.android.HasAndroidInjector;
import info.nightscout.androidaps.Constants;
-import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.data.Iob;
import info.nightscout.androidaps.data.IobTotal;
import info.nightscout.androidaps.data.Profile;
import info.nightscout.androidaps.interfaces.ActivePluginProvider;
import info.nightscout.androidaps.interfaces.InsulinInterface;
import info.nightscout.androidaps.interfaces.Interval;
-import info.nightscout.androidaps.plugins.configBuilder.PluginStore;
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.DataPointWithLabelInterface;
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.PointsWithLabelGraphSeries;
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.AutosensResult;
-import info.nightscout.androidaps.plugins.treatments.Treatment;
import info.nightscout.androidaps.utils.DateUtil;
import info.nightscout.androidaps.utils.DecimalFormatter;
import info.nightscout.androidaps.utils.JsonHelper;
@@ -38,10 +35,11 @@ import info.nightscout.androidaps.utils.Round;
* Created by mike on 21.05.2017.
*/
-@DatabaseTable(tableName = DatabaseHelper.DATABASE_EXTENDEDBOLUSES)
+@DatabaseTable(tableName = "ExtendedBoluses")
public class ExtendedBolus implements Interval, DataPointWithLabelInterface {
@Inject ActivePluginProvider activePlugin;
+ @Inject DateUtil dateUtil;
private HasAndroidInjector injector;
@@ -66,12 +64,13 @@ public class ExtendedBolus implements Interval, DataPointWithLabelInterface {
@DatabaseField
public int insulinInterfaceID = InsulinInterface.OREF_RAPID_ACTING;
+
@DatabaseField
public double dia = Constants.defaultDIA;
@Deprecated
public ExtendedBolus() {
- injector = MainApp.instance();
+ injector = StaticInjector.Companion.getInstance();
injector.androidInjector().inject(this);
}
@@ -214,7 +213,7 @@ public class ExtendedBolus implements Interval, DataPointWithLabelInterface {
public String log() {
return "ExtendedBolus{" +
"date= " + date +
- ", date= " + DateUtil.dateAndTimeString(date) +
+ ", date= " + dateUtil.dateAndTimeString(date) +
", isValid=" + isValid +
", _id= " + _id +
", pumpId= " + pumpId +
@@ -231,13 +230,14 @@ public class ExtendedBolus implements Interval, DataPointWithLabelInterface {
return absoluteRate() * getRealDuration() / 60d;
}
- public IobTotal iobCalc(long time) {
+ public IobTotal iobCalc(long time, Profile profile) {
IobTotal result = new IobTotal(time);
InsulinInterface insulinInterface = activePlugin.getActiveInsulin();
double realDuration = getDurationToTime(time);
if (realDuration > 0) {
+ double dia = profile.getDia();
double dia_ago = time - dia * 60 * 60 * 1000;
int aboutFiveMinIntervals = (int) Math.ceil(realDuration / 5d);
double spacing = realDuration / aboutFiveMinIntervals;
@@ -282,6 +282,7 @@ public class ExtendedBolus implements Interval, DataPointWithLabelInterface {
if (realDuration > 0) {
double netBasalRate;
+ double dia = profile.getDia();
double dia_ago = time - dia * 60 * 60 * 1000;
int aboutFiveMinIntervals = (int) Math.ceil(realDuration / 5d);
double spacing = realDuration / aboutFiveMinIntervals;
@@ -330,7 +331,7 @@ public class ExtendedBolus implements Interval, DataPointWithLabelInterface {
public String toString() {
return "E " + DecimalFormatter.to2Decimal(absoluteRate()) + "U/h @" +
- DateUtil.timeString(date) +
+ dateUtil.timeString(date) +
" " + getRealDuration() + "/" + durationInMinutes + "min";
}
diff --git a/app/src/main/java/info/nightscout/androidaps/db/ICallback.java b/core/src/main/java/info/nightscout/androidaps/db/ICallback.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/db/ICallback.java
rename to core/src/main/java/info/nightscout/androidaps/db/ICallback.java
diff --git a/app/src/main/java/info/nightscout/androidaps/db/ProfileSwitch.java b/core/src/main/java/info/nightscout/androidaps/db/ProfileSwitch.java
similarity index 90%
rename from app/src/main/java/info/nightscout/androidaps/db/ProfileSwitch.java
rename to core/src/main/java/info/nightscout/androidaps/db/ProfileSwitch.java
index 06174c9c66..006a839510 100644
--- a/app/src/main/java/info/nightscout/androidaps/db/ProfileSwitch.java
+++ b/core/src/main/java/info/nightscout/androidaps/db/ProfileSwitch.java
@@ -16,26 +16,24 @@ import java.util.Objects;
import javax.inject.Inject;
import dagger.android.HasAndroidInjector;
-import info.nightscout.androidaps.MainApp;
-import info.nightscout.androidaps.R;
+import info.nightscout.androidaps.Constants;
+import info.nightscout.androidaps.core.R;
import info.nightscout.androidaps.data.Profile;
import info.nightscout.androidaps.interfaces.Interval;
+import info.nightscout.androidaps.interfaces.TreatmentsInterface;
import info.nightscout.androidaps.logging.AAPSLogger;
-import info.nightscout.androidaps.logging.L;
import info.nightscout.androidaps.logging.LTag;
import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification;
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.DataPointWithLabelInterface;
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.PointsWithLabelGraphSeries;
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification;
-import info.nightscout.androidaps.plugins.profile.local.LocalProfilePlugin;
-import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin;
import info.nightscout.androidaps.utils.DateUtil;
import info.nightscout.androidaps.utils.DecimalFormatter;
import info.nightscout.androidaps.utils.T;
import info.nightscout.androidaps.utils.resources.ResourceHelper;
-@DatabaseTable(tableName = DatabaseHelper.DATABASE_PROFILESWITCHES)
+@DatabaseTable(tableName = "ProfileSwitches")
public class ProfileSwitch implements Interval, DataPointWithLabelInterface {
@DatabaseField(id = true)
@@ -71,13 +69,14 @@ public class ProfileSwitch implements Interval, DataPointWithLabelInterface {
private Profile profile = null;
HasAndroidInjector injector;
- @Inject public TreatmentsPlugin treatmentsPlugin;
+ @Inject public TreatmentsInterface treatmentsPlugin;
@Inject public AAPSLogger aapsLogger;
@Inject public RxBusWrapper rxBus;
@Inject public ResourceHelper resourceHelper;
+ @Inject public DateUtil dateUtil;
public ProfileSwitch() {
- this.injector = MainApp.instance();
+ this.injector = StaticInjector.Companion.getInstance();
injector.androidInjector().inject(this);
}
@@ -130,7 +129,7 @@ public class ProfileSwitch implements Interval, DataPointWithLabelInterface {
*/
public String getCustomizedName() {
String name = profileName;
- if (LocalProfilePlugin.Companion.getLOCAL_PROFILE().equals(name)) {
+ if (Constants.LOCAL_PROFILE.equals(name)) {
name = DecimalFormatter.to2Decimal(getProfileObject().percentageBasalSum()) + "U ";
}
if (isCPP) {
@@ -235,11 +234,11 @@ public class ProfileSwitch implements Interval, DataPointWithLabelInterface {
@Override
public boolean isValid() {
- boolean isValid = getProfileObject() != null && getProfileObject().isValid(DateUtil.dateAndTimeString(date));
+ boolean isValid = getProfileObject() != null && getProfileObject().isValid(dateUtil.dateAndTimeString(date));
ProfileSwitch active = treatmentsPlugin.getProfileSwitchFromHistory(DateUtil.now());
long activeProfileSwitchDate = active != null ? active.date : -1L;
if (!isValid && date == activeProfileSwitchDate)
- createNotificationInvalidProfile(DateUtil.dateAndTimeString(date));
+ createNotificationInvalidProfile(dateUtil.dateAndTimeString(date));
return isValid;
}
@@ -248,17 +247,17 @@ public class ProfileSwitch implements Interval, DataPointWithLabelInterface {
rxBus.send(new EventNewNotification(notification));
}
- public static boolean isEvent5minBack(AAPSLogger aapsLogger, List list, long time, boolean zeroDurationOnly) {
+ public boolean isEvent5minBack(List list, long time, boolean zeroDurationOnly) {
for (int i = 0; i < list.size(); i++) {
ProfileSwitch event = list.get(i);
if (event.date <= time && event.date > (time - T.mins(5).msecs())) {
if (zeroDurationOnly) {
if (event.durationInMinutes == 0) {
- aapsLogger.debug(LTag.DATABASE, "Found ProfileSwitch event for time: " + DateUtil.dateAndTimeString(time) + " " + event.toString());
+ aapsLogger.debug(LTag.DATABASE, "Found ProfileSwitch event for time: " + dateUtil.dateAndTimeString(time) + " " + event.toString());
return true;
}
} else {
- aapsLogger.debug(LTag.DATABASE, "Found ProfileSwitch event for time: " + DateUtil.dateAndTimeString(time) + " " + event.toString());
+ aapsLogger.debug(LTag.DATABASE, "Found ProfileSwitch event for time: " + dateUtil.dateAndTimeString(time) + " " + event.toString());
return true;
}
}
@@ -316,7 +315,7 @@ public class ProfileSwitch implements Interval, DataPointWithLabelInterface {
public String toString() {
return "ProfileSwitch{" +
"date=" + date +
- "date=" + DateUtil.dateAndTimeString(date) +
+ "date=" + dateUtil.dateAndTimeString(date) +
", isValid=" + isValid +
", duration=" + durationInMinutes +
", profileName=" + profileName +
diff --git a/app/src/main/java/info/nightscout/androidaps/db/Source.java b/core/src/main/java/info/nightscout/androidaps/db/Source.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/db/Source.java
rename to core/src/main/java/info/nightscout/androidaps/db/Source.java
diff --git a/core/src/main/java/info/nightscout/androidaps/db/StaticInjector.kt b/core/src/main/java/info/nightscout/androidaps/db/StaticInjector.kt
new file mode 100644
index 0000000000..6472410bf3
--- /dev/null
+++ b/core/src/main/java/info/nightscout/androidaps/db/StaticInjector.kt
@@ -0,0 +1,27 @@
+package info.nightscout.androidaps.db
+
+import dagger.android.AndroidInjector
+import dagger.android.HasAndroidInjector
+import java.lang.IllegalStateException
+import javax.inject.Inject
+import javax.inject.Singleton
+
+@Singleton
+class StaticInjector @Inject constructor(
+ private val injector: HasAndroidInjector
+) : HasAndroidInjector {
+ companion object {
+ private var instance : StaticInjector? = null
+
+ @Deprecated("Only until DB is refactored")
+ fun getInstance() : StaticInjector {
+ if (instance == null) throw IllegalStateException("StaticInjector not initialized")
+ return instance!!
+ }
+ }
+
+ init {
+ instance = this
+ }
+ override fun androidInjector(): AndroidInjector = injector.androidInjector()
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/db/TDD.java b/core/src/main/java/info/nightscout/androidaps/db/TDD.java
similarity index 50%
rename from app/src/main/java/info/nightscout/androidaps/db/TDD.java
rename to core/src/main/java/info/nightscout/androidaps/db/TDD.java
index 8d6a2e2576..f023c06f7f 100644
--- a/app/src/main/java/info/nightscout/androidaps/db/TDD.java
+++ b/core/src/main/java/info/nightscout/androidaps/db/TDD.java
@@ -5,8 +5,7 @@ import com.j256.ormlite.table.DatabaseTable;
import java.util.Locale;
-import info.nightscout.androidaps.R;
-import info.nightscout.androidaps.plugins.pump.common.utils.DateTimeUtil;
+import info.nightscout.androidaps.core.R;
import info.nightscout.androidaps.utils.DateUtil;
import info.nightscout.androidaps.utils.resources.ResourceHelper;
@@ -15,7 +14,7 @@ import info.nightscout.androidaps.utils.resources.ResourceHelper;
*/
-@DatabaseTable(tableName = DatabaseHelper.DATABASE_TDDS)
+@DatabaseTable(tableName = "TDDs")
public class TDD {
@DatabaseField(id = true)
@@ -30,6 +29,7 @@ public class TDD {
@DatabaseField
public double total;
+ public double carbs;
public double getTotal() {
return (total > 0d) ? total : (bolus + basal);
@@ -47,22 +47,27 @@ public class TDD {
}
- @Override
- public String toString() {
+ public String toString(DateUtil dateUtil) {
return "TDD [" +
"date=" + date +
- "date(str)=" + DateTimeUtil.toStringFromTimeInMillis(date) +
+ "date(str)=" + dateUtil.dateAndTimeString(date) +
", bolus=" + bolus +
", basal=" + basal +
", total=" + total +
']';
}
- public String toText(ResourceHelper resourceHelper) {
- return resourceHelper.gs(R.string.tddformat, DateUtil.dateStringShort(date), total, bolus, basal);
+ public String toText(ResourceHelper resourceHelper, DateUtil dateUtil, boolean includeCarbs) {
+ if (includeCarbs)
+ return resourceHelper.gs(R.string.tddwithcarbsformat, dateUtil.dateStringShort(date), total, bolus, basal, basal / total * 100, carbs);
+ else
+ return resourceHelper.gs(R.string.tddformat, dateUtil.dateStringShort(date), total, bolus, basal, basal / total * 100);
}
- public String toText(ResourceHelper resourceHelper, int days) {
- return resourceHelper.gs(R.string.tddformat, String.format(Locale.getDefault(), "%d ", days) + resourceHelper.gs(R.string.days), total, bolus, basal);
+ public String toText(ResourceHelper resourceHelper, int days, boolean includeCarbs) {
+ if (includeCarbs)
+ return resourceHelper.gs(R.string.tddwithcarbsformat, String.format(Locale.getDefault(), "%d ", days) + resourceHelper.gs(R.string.days), total, bolus, basal, basal / total * 100, carbs);
+ else
+ return resourceHelper.gs(R.string.tddformat, String.format(Locale.getDefault(), "%d ", days) + resourceHelper.gs(R.string.days), total, bolus, basal, basal / total * 100);
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/db/TempTarget.java b/core/src/main/java/info/nightscout/androidaps/db/TempTarget.java
similarity index 89%
rename from app/src/main/java/info/nightscout/androidaps/db/TempTarget.java
rename to core/src/main/java/info/nightscout/androidaps/db/TempTarget.java
index be7b76c554..65b9075ac4 100644
--- a/app/src/main/java/info/nightscout/androidaps/db/TempTarget.java
+++ b/core/src/main/java/info/nightscout/androidaps/db/TempTarget.java
@@ -3,26 +3,18 @@ package info.nightscout.androidaps.db;
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
import java.util.Objects;
import info.nightscout.androidaps.Constants;
-import info.nightscout.androidaps.MainApp;
-import info.nightscout.androidaps.R;
+import info.nightscout.androidaps.core.R;
import info.nightscout.androidaps.data.Profile;
import info.nightscout.androidaps.interfaces.Interval;
-import info.nightscout.androidaps.logging.L;
-import info.nightscout.androidaps.logging.LTag;
-import info.nightscout.androidaps.logging.StacktraceLoggerWrapper;
import info.nightscout.androidaps.utils.DateUtil;
import info.nightscout.androidaps.utils.DecimalFormatter;
import info.nightscout.androidaps.utils.resources.ResourceHelper;
-@DatabaseTable(tableName = DatabaseHelper.DATABASE_TEMPTARGETS)
+@DatabaseTable(tableName = "TempTargets")
public class TempTarget implements Interval {
- private static Logger log = StacktraceLoggerWrapper.getLogger(LTag.DATABASE);
@DatabaseField(id = true)
public long date;
@@ -185,10 +177,10 @@ public class TempTarget implements Interval {
else return DecimalFormatter.to1Decimal(low * Constants.MGDL_TO_MMOLL);
}
- public String toString() {
+ public String toString(DateUtil dateUtil) {
return "TemporaryTarget{" +
"date=" + date +
- "date=" + DateUtil.dateAndTimeString(date) +
+ "date=" + dateUtil.dateAndTimeString(date) +
", isValid=" + isValid +
", duration=" + durationInMinutes +
", reason=" + reason +
diff --git a/app/src/main/java/info/nightscout/androidaps/db/TemporaryBasal.java b/core/src/main/java/info/nightscout/androidaps/db/TemporaryBasal.java
similarity index 96%
rename from app/src/main/java/info/nightscout/androidaps/db/TemporaryBasal.java
rename to core/src/main/java/info/nightscout/androidaps/db/TemporaryBasal.java
index 937022196c..660ec0ad0a 100644
--- a/app/src/main/java/info/nightscout/androidaps/db/TemporaryBasal.java
+++ b/core/src/main/java/info/nightscout/androidaps/db/TemporaryBasal.java
@@ -8,8 +8,7 @@ import java.util.Objects;
import javax.inject.Inject;
import dagger.android.HasAndroidInjector;
-import info.nightscout.androidaps.MainApp;
-import info.nightscout.androidaps.R;
+import info.nightscout.androidaps.core.R;
import info.nightscout.androidaps.data.Iob;
import info.nightscout.androidaps.data.IobTotal;
import info.nightscout.androidaps.data.Profile;
@@ -17,9 +16,8 @@ import info.nightscout.androidaps.interfaces.ActivePluginProvider;
import info.nightscout.androidaps.interfaces.InsulinInterface;
import info.nightscout.androidaps.interfaces.Interval;
import info.nightscout.androidaps.logging.AAPSLogger;
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction;
+import info.nightscout.androidaps.interfaces.ProfileFunction;
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.AutosensResult;
-import info.nightscout.androidaps.plugins.treatments.Treatment;
import info.nightscout.androidaps.utils.DateUtil;
import info.nightscout.androidaps.utils.DecimalFormatter;
import info.nightscout.androidaps.utils.sharedPreferences.SP;
@@ -28,13 +26,14 @@ import info.nightscout.androidaps.utils.sharedPreferences.SP;
* Created by mike on 21.05.2017.
*/
-@DatabaseTable(tableName = DatabaseHelper.DATABASE_TEMPORARYBASALS)
+@DatabaseTable(tableName = "TemporaryBasals")
public class TemporaryBasal implements Interval, DbObjectBase {
@Inject public AAPSLogger aapsLogger;
@Inject public ProfileFunction profileFunction;
@Inject public ActivePluginProvider activePlugin;
@Inject public SP sp;
+ @Inject DateUtil dateUtil;
private HasAndroidInjector injector;
@@ -68,7 +67,7 @@ public class TemporaryBasal implements Interval, DbObjectBase {
@Deprecated
public TemporaryBasal() {
- injector = MainApp.instance();
+ injector = StaticInjector.Companion.getInstance();
injector.androidInjector().inject(this);
}
@@ -110,7 +109,7 @@ public class TemporaryBasal implements Interval, DbObjectBase {
}
public TemporaryBasal(ExtendedBolus extendedBolus) {
- injector = MainApp.instance();
+ injector = StaticInjector.Companion.getInstance();
injector.androidInjector().inject(this);
double basal = profileFunction.getProfile(extendedBolus.date).getBasal(extendedBolus.date);
this.date = extendedBolus.date;
@@ -396,7 +395,7 @@ public class TemporaryBasal implements Interval, DbObjectBase {
if (isFakeExtended) {
return (int) ((profile.getBasal(time) + netExtendedRate) / profile.getBasal(time)) * 100;
} else if (isAbsolute) {
- return (int) (absoluteRate / profile.getBasal(time)) * 100;
+ return (int) (absoluteRate / profile.getBasal(time) * 100);
} else {
return percentRate;
}
@@ -405,7 +404,7 @@ public class TemporaryBasal implements Interval, DbObjectBase {
public String toString() {
return "TemporaryBasal{" +
"date=" + date +
- ", date=" + DateUtil.dateAndTimeString(date) +
+ ", date=" + dateUtil.dateAndTimeString(date) +
", isValid=" + isValid +
", pumpId=" + pumpId +
", _id=" + _id +
@@ -427,15 +426,15 @@ public class TemporaryBasal implements Interval, DbObjectBase {
Double currentBasalRate = profile.getBasal();
double rate = currentBasalRate + netExtendedRate;
return getCalcuatedPercentageIfNeeded() + DecimalFormatter.to2Decimal(rate) + "U/h (" + DecimalFormatter.to2Decimal(netExtendedRate) + "E) @" +
- DateUtil.timeString(date) +
+ dateUtil.timeString(date) +
" " + getRealDuration() + "/" + durationInMinutes + "'";
} else if (isAbsolute) {
return DecimalFormatter.to2Decimal(absoluteRate) + "U/h @" +
- DateUtil.timeString(date) +
+ dateUtil.timeString(date) +
" " + getRealDuration() + "/" + durationInMinutes + "'";
} else { // percent
return percentRate + "% @" +
- DateUtil.timeString(date) +
+ dateUtil.timeString(date) +
" " + getRealDuration() + "/" + durationInMinutes + "'";
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/Treatment.java b/core/src/main/java/info/nightscout/androidaps/db/Treatment.java
similarity index 94%
rename from app/src/main/java/info/nightscout/androidaps/plugins/treatments/Treatment.java
rename to core/src/main/java/info/nightscout/androidaps/db/Treatment.java
index ee99412f77..bd3a4c0ebe 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/treatments/Treatment.java
+++ b/core/src/main/java/info/nightscout/androidaps/db/Treatment.java
@@ -1,4 +1,4 @@
-package info.nightscout.androidaps.plugins.treatments;
+package info.nightscout.androidaps.db;
import android.graphics.Color;
@@ -17,15 +17,12 @@ import javax.inject.Inject;
import dagger.android.HasAndroidInjector;
import info.nightscout.androidaps.Constants;
-import info.nightscout.androidaps.MainApp;
-import info.nightscout.androidaps.R;
+import info.nightscout.androidaps.core.R;
import info.nightscout.androidaps.data.Iob;
import info.nightscout.androidaps.data.Profile;
-import info.nightscout.androidaps.db.DbObjectBase;
-import info.nightscout.androidaps.db.Source;
import info.nightscout.androidaps.interfaces.ActivePluginProvider;
import info.nightscout.androidaps.interfaces.InsulinInterface;
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction;
+import info.nightscout.androidaps.interfaces.ProfileFunction;
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.DataPointWithLabelInterface;
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.PointsWithLabelGraphSeries;
import info.nightscout.androidaps.utils.DateUtil;
@@ -40,6 +37,7 @@ public class Treatment implements DataPointWithLabelInterface, DbObjectBase {
@Inject public ResourceHelper resourceHelper;
@Inject public ProfileFunction profileFunction;
@Inject public ActivePluginProvider activePlugin;
+ @Inject public DateUtil dateUtil;
public static final String TABLE_TREATMENTS = "Treatments";
@@ -74,7 +72,7 @@ public class Treatment implements DataPointWithLabelInterface, DbObjectBase {
public String boluscalc;
public Treatment() {
- MainApp.instance().androidInjector().inject(this); // TODO it will be removed by new database
+ StaticInjector.Companion.getInstance().androidInjector().inject(this); // TODO it will be removed by new database
}
public Treatment(HasAndroidInjector injector) {
@@ -111,7 +109,7 @@ public class Treatment implements DataPointWithLabelInterface, DbObjectBase {
@NonNull public String toString() {
return "Treatment{" +
"date= " + date +
- ", date= " + DateUtil.dateAndTimeString(date) +
+ ", date= " + dateUtil.dateAndTimeString(date) +
", isValid= " + isValid +
", isSMB= " + isSMB +
", _id= " + _id +
diff --git a/app/src/main/java/info/nightscout/androidaps/dialogs/BolusProgressDialog.kt b/core/src/main/java/info/nightscout/androidaps/dialogs/BolusProgressDialog.kt
similarity index 98%
rename from app/src/main/java/info/nightscout/androidaps/dialogs/BolusProgressDialog.kt
rename to core/src/main/java/info/nightscout/androidaps/dialogs/BolusProgressDialog.kt
index 8152c25ab0..98e459a5b9 100644
--- a/app/src/main/java/info/nightscout/androidaps/dialogs/BolusProgressDialog.kt
+++ b/core/src/main/java/info/nightscout/androidaps/dialogs/BolusProgressDialog.kt
@@ -9,8 +9,8 @@ import android.view.ViewGroup
import android.view.Window
import android.view.WindowManager
import dagger.android.support.DaggerDialogFragment
-import info.nightscout.androidaps.R
import info.nightscout.androidaps.activities.BolusProgressHelperActivity
+import info.nightscout.androidaps.core.R
import info.nightscout.androidaps.events.EventPumpStatusChanged
import info.nightscout.androidaps.interfaces.CommandQueueProvider
import info.nightscout.androidaps.logging.AAPSLogger
@@ -71,7 +71,7 @@ class BolusProgressDialog : DaggerDialogFragment() {
savedInstanceState?.let {
amount = it.getDouble("amount")
}
- overview_bolusprogress_title.text = resourceHelper.gs(R.string.overview_bolusprogress_goingtodeliver, amount)
+ overview_bolusprogress_title.text = resourceHelper.gs(R.string.goingtodeliver, amount)
overview_bolusprogress_stop.setOnClickListener {
aapsLogger.debug(LTag.UI, "Stop bolus delivery button pressed")
stopPressed = true
diff --git a/app/src/main/java/info/nightscout/androidaps/dialogs/ErrorDialog.kt b/core/src/main/java/info/nightscout/androidaps/dialogs/ErrorDialog.kt
similarity index 89%
rename from app/src/main/java/info/nightscout/androidaps/dialogs/ErrorDialog.kt
rename to core/src/main/java/info/nightscout/androidaps/dialogs/ErrorDialog.kt
index 07917899bf..9d2035b279 100644
--- a/app/src/main/java/info/nightscout/androidaps/dialogs/ErrorDialog.kt
+++ b/core/src/main/java/info/nightscout/androidaps/dialogs/ErrorDialog.kt
@@ -1,5 +1,6 @@
package info.nightscout.androidaps.dialogs
+import android.content.Context
import android.content.Intent
import android.os.Build
import android.os.Bundle
@@ -9,9 +10,8 @@ import android.view.ViewGroup
import android.view.Window
import android.view.WindowManager
import dagger.android.support.DaggerDialogFragment
-import info.nightscout.androidaps.MainApp
-import info.nightscout.androidaps.R
import info.nightscout.androidaps.activities.ErrorHelperActivity
+import info.nightscout.androidaps.core.R
import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.services.AlarmSoundService
import kotlinx.android.synthetic.main.dialog_error.*
@@ -19,7 +19,6 @@ import javax.inject.Inject
class ErrorDialog : DaggerDialogFragment() {
@Inject lateinit var aapsLogger: AAPSLogger
- @Inject lateinit var mainApp: MainApp
var helperActivity: ErrorHelperActivity? = null
var status: String = ""
@@ -82,16 +81,16 @@ class ErrorDialog : DaggerDialogFragment() {
private fun startAlarm() {
if (sound != 0) {
- val alarm = Intent(mainApp, AlarmSoundService::class.java)
+ val alarm = Intent(context, AlarmSoundService::class.java)
alarm.putExtra("soundid", sound)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
- mainApp.startForegroundService(alarm)
+ context?.startForegroundService(alarm)
} else {
- mainApp.startService(alarm)
+ context?.startService(alarm)
}
}
}
private fun stopAlarm() =
- mainApp.stopService(Intent(mainApp, AlarmSoundService::class.java))
+ context?.stopService(Intent(context, AlarmSoundService::class.java))
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/dialogs/NtpProgressDialog.kt b/core/src/main/java/info/nightscout/androidaps/dialogs/NtpProgressDialog.kt
similarity index 94%
rename from app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/dialogs/NtpProgressDialog.kt
rename to core/src/main/java/info/nightscout/androidaps/dialogs/NtpProgressDialog.kt
index 2e5ec7d9e5..176e6fba88 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/dialogs/NtpProgressDialog.kt
+++ b/core/src/main/java/info/nightscout/androidaps/dialogs/NtpProgressDialog.kt
@@ -1,4 +1,4 @@
-package info.nightscout.androidaps.plugins.constraints.objectives.dialogs
+package info.nightscout.androidaps.dialogs
import android.os.Bundle
import android.os.SystemClock
@@ -6,11 +6,11 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import dagger.android.support.DaggerDialogFragment
-import info.nightscout.androidaps.R
+import info.nightscout.androidaps.core.R
+import info.nightscout.androidaps.events.EventNtpStatus
import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
-import info.nightscout.androidaps.plugins.constraints.objectives.events.EventNtpStatus
import info.nightscout.androidaps.utils.FabricPrivacy
import info.nightscout.androidaps.utils.extensions.plusAssign
import info.nightscout.androidaps.utils.resources.ResourceHelper
diff --git a/core/src/main/java/info/nightscout/androidaps/dialogs/ProfileViewerDialog.kt b/core/src/main/java/info/nightscout/androidaps/dialogs/ProfileViewerDialog.kt
new file mode 100644
index 0000000000..45feff463c
--- /dev/null
+++ b/core/src/main/java/info/nightscout/androidaps/dialogs/ProfileViewerDialog.kt
@@ -0,0 +1,245 @@
+package info.nightscout.androidaps.dialogs
+
+import android.os.Bundle
+import android.text.Spanned
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.Window
+import android.view.WindowManager
+import dagger.android.HasAndroidInjector
+import dagger.android.support.DaggerDialogFragment
+import info.nightscout.androidaps.Constants
+import info.nightscout.androidaps.core.R
+import info.nightscout.androidaps.data.Profile
+import info.nightscout.androidaps.interfaces.ActivePluginProvider
+import info.nightscout.androidaps.interfaces.DatabaseHelperInterface
+import info.nightscout.androidaps.utils.DateUtil
+import info.nightscout.androidaps.utils.HtmlHelper
+import info.nightscout.androidaps.utils.resources.ResourceHelper
+import kotlinx.android.synthetic.main.close.*
+import kotlinx.android.synthetic.main.dialog_profileviewer.*
+import org.json.JSONObject
+import java.text.DecimalFormat
+import javax.inject.Inject
+
+class ProfileViewerDialog : DaggerDialogFragment() {
+ @Inject lateinit var injector: HasAndroidInjector
+ @Inject lateinit var resourceHelper: ResourceHelper
+ @Inject lateinit var activePlugin: ActivePluginProvider
+ @Inject lateinit var dateUtil: DateUtil
+ @Inject lateinit var databaseHelper: DatabaseHelperInterface
+
+ private var time: Long = 0
+
+ enum class Mode(val i: Int) {
+ RUNNING_PROFILE(1),
+ CUSTOM_PROFILE(2),
+ DB_PROFILE(3),
+ PROFILE_COMPARE(4)
+ }
+
+ private var mode: Mode = Mode.RUNNING_PROFILE
+ private var customProfileJson: String = ""
+ private var customProfileJson2: String = ""
+ private var customProfileName: String = ""
+ private var customProfileUnits: String = Constants.MGDL
+
+ override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
+ savedInstanceState: Bundle?): View? {
+ // load data from bundle
+ (savedInstanceState ?: arguments)?.let { bundle ->
+ time = bundle.getLong("time", 0)
+ mode = Mode.values()[bundle.getInt("mode", Mode.RUNNING_PROFILE.ordinal)]
+ customProfileJson = bundle.getString("customProfile", "")
+ customProfileUnits = bundle.getString("customProfileUnits", Constants.MGDL)
+ customProfileName = bundle.getString("customProfileName", "")
+ if (mode == Mode.PROFILE_COMPARE)
+ customProfileJson2 = bundle.getString("customProfile2", "")
+ }
+
+ dialog?.window?.requestFeature(Window.FEATURE_NO_TITLE)
+ dialog?.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)
+ isCancelable = true
+ dialog?.setCanceledOnTouchOutside(false)
+
+ return inflater.inflate(R.layout.dialog_profileviewer, container, false)
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ close.setOnClickListener { dismiss() }
+
+ val profile: Profile?
+ val profile2: Profile?
+ val profileName: String?
+ val date: String?
+ when (mode) {
+ Mode.RUNNING_PROFILE -> {
+ profile = activePlugin.activeTreatments.getProfileSwitchFromHistory(time)?.profileObject
+ profile2 = null
+ profileName = activePlugin.activeTreatments.getProfileSwitchFromHistory(time)?.customizedName
+ date = dateUtil.dateAndTimeString(activePlugin.activeTreatments.getProfileSwitchFromHistory(time)?.date
+ ?: 0)
+ profileview_datelayout.visibility = View.VISIBLE
+ }
+
+ Mode.CUSTOM_PROFILE -> {
+ profile = Profile(injector, JSONObject(customProfileJson), customProfileUnits)
+ profile2 = null
+ profileName = customProfileName
+ date = ""
+ profileview_datelayout.visibility = View.GONE
+ }
+
+ Mode.PROFILE_COMPARE -> {
+ profile = Profile(injector, JSONObject(customProfileJson), customProfileUnits)
+ profile2 = Profile(injector, JSONObject(customProfileJson2), customProfileUnits)
+ profileName = customProfileName
+ header_icon.setImageResource(R.drawable.ic_compare_profiles)
+ date = ""
+ profileview_datelayout.visibility = View.GONE
+ }
+
+ Mode.DB_PROFILE -> {
+ val profileList = databaseHelper.getProfileSwitchData(time, true)
+ profile = if (profileList.isNotEmpty()) profileList[0].profileObject else null
+ profile2 = null
+ profileName = if (profileList.isNotEmpty()) profileList[0].customizedName else null
+ date = if (profileList.isNotEmpty()) dateUtil.dateAndTimeString(profileList[0].date) else null
+ profileview_datelayout.visibility = View.VISIBLE
+ }
+ }
+ profileview_noprofile.visibility = View.VISIBLE
+
+ if (mode == Mode.PROFILE_COMPARE)
+ profile?.let { profile1 ->
+ profile2?.let { profile2 ->
+ profileview_units.text = profile1.units
+ profileview_dia.text = HtmlHelper.fromHtml(formatColors("", profile1.dia, profile1.dia, DecimalFormat("0.00"), resourceHelper.gs(R.string.shorthour)))
+ val profileNames =profileName!!.split("\n").toTypedArray()
+ profileview_activeprofile.text = HtmlHelper.fromHtml(formatColors(profileNames[0], profileNames[1]))
+ profileview_date.text = date
+ profileview_ic.text = ics(profile1, profile2)
+ profileview_isf.text = isfs(profile1, profile2)
+ profileview_basal.text = basals(profile1, profile2)
+ profileview_target.text = HtmlHelper.fromHtml(formatColors("", profile1.targetList.replace("\n"," ") + " ", profile2.targetList.replace("\n"," "), ""))
+ basal_graph.show(profile1, profile2)
+ }
+
+ profileview_noprofile.visibility = View.GONE
+ profileview_invalidprofile.visibility = if (profile1.isValid("ProfileViewDialog")) View.GONE else View.VISIBLE
+ }
+ else
+ profile?.let {
+ profileview_units.text = it.units
+ profileview_dia.text = resourceHelper.gs(R.string.format_hours, it.dia)
+ profileview_activeprofile.text = profileName
+ profileview_date.text = date
+ profileview_ic.text = it.icList
+ profileview_isf.text = it.isfList
+ profileview_basal.text = it.basalList
+ profileview_target.text = it.targetList
+ basal_graph.show(it)
+
+ profileview_noprofile.visibility = View.GONE
+ profileview_invalidprofile.visibility = if (it.isValid("ProfileViewDialog")) View.GONE else View.VISIBLE
+ }
+ }
+
+ override fun onStart() {
+ super.onStart()
+ dialog?.window?.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
+ }
+
+ override fun onSaveInstanceState(bundle: Bundle) {
+ super.onSaveInstanceState(bundle)
+ bundle.putLong("time", time)
+ bundle.putInt("mode", mode.ordinal)
+ bundle.putString("customProfile", customProfileJson)
+ bundle.putString("customProfileName", customProfileName)
+ bundle.putString("customProfileUnits", customProfileUnits)
+ if (mode == Mode.PROFILE_COMPARE)
+ bundle.putString("customProfile2", customProfileJson2)
+ }
+
+ private fun formatColors(label: String, value1: Double, value2: Double, format: DecimalFormat, units: String): String {
+ return formatColors(label, format.format(value1), format.format(value2), units)
+ }
+
+ private fun formatColors(label: String, text1: String, text2: String, units: String): String {
+ var s = "$label"
+ s += " "
+ s += "$text1"
+ s += " "
+ s += "$text2"
+ s += " "
+ s += "$units"
+ return s
+ }
+
+ private fun formatColors(text1: String, text2: String): String {
+ var s = "$text1"
+ s += " "
+ s += "$text2"
+ return s
+ }
+
+ private fun basals(profile1: Profile, profile2: Profile): Spanned {
+ var prev1 = 0.0
+ var prev2 = 0.0
+ val s = StringBuilder()
+ for (hour in 0..23) {
+ val val1 = profile1.getBasalTimeFromMidnight(hour * 60 * 60)
+ val val2 = profile2.getBasalTimeFromMidnight(hour * 60 * 60)
+ if (val1 != prev1 || val2 != prev2) {
+ s.append(formatColors(Profile.format_HH_MM(hour * 60 * 60), val1, val2, DecimalFormat("0.00"), resourceHelper.gs(R.string.profile_ins_units_per_hour)))
+ s.append(" ")
+ }
+ prev1 = val1
+ prev2 = val2
+ }
+ s.append(formatColors(
+ " ∑ ",
+ profile1.baseBasalSum(),
+ profile2.baseBasalSum(),
+ DecimalFormat("0.00"),
+ resourceHelper.gs(R.string.insulin_unit_shortname)))
+ return HtmlHelper.fromHtml(s.toString())
+ }
+
+ private fun ics(profile1: Profile, profile2: Profile): Spanned {
+ var prev1 = 0.0
+ var prev2 = 0.0
+ val s = StringBuilder()
+ for (hour in 0..23) {
+ val val1 = profile1.getIcTimeFromMidnight(hour * 60 * 60)
+ val val2 = profile2.getIcTimeFromMidnight(hour * 60 * 60)
+ if (val1 != prev1 || val2 != prev2) {
+ s.append(formatColors(Profile.format_HH_MM(hour * 60 * 60), val1, val2, DecimalFormat("0.0"), resourceHelper.gs(R.string.profile_carbs_per_unit)))
+ s.append(" ")
+ }
+ prev1 = val1
+ prev2 = val2
+ }
+ return HtmlHelper.fromHtml(s.toString())
+ }
+
+ private fun isfs(profile1: Profile, profile2: Profile): Spanned {
+ var prev1 = 0.0
+ var prev2 = 0.0
+ val s = StringBuilder()
+ for (hour in 0..23) {
+ val val1 = Profile.fromMgdlToUnits(profile1.getIsfMgdlTimeFromMidnight(hour * 60 * 60), profile1.units)
+ val val2 = Profile.fromMgdlToUnits(profile2.getIsfMgdlTimeFromMidnight(hour * 60 * 60), profile1.units)
+ if (val1 != prev1 || val2 != prev2) {
+ s.append(formatColors(Profile.format_HH_MM(hour * 60 * 60), val1, val2, DecimalFormat("0.0"), profile1.units + resourceHelper.gs(R.string.profile_per_unit)))
+ s.append(" ")
+ }
+ prev1 = val1
+ prev2 = val2
+ }
+ return HtmlHelper.fromHtml(s.toString())
+ }
+}
diff --git a/app/src/main/java/info/nightscout/androidaps/events/EventAppExit.kt b/core/src/main/java/info/nightscout/androidaps/events/EventAppExit.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/events/EventAppExit.kt
rename to core/src/main/java/info/nightscout/androidaps/events/EventAppExit.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/events/EventBTChange.kt b/core/src/main/java/info/nightscout/androidaps/events/EventBTChange.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/events/EventBTChange.kt
rename to core/src/main/java/info/nightscout/androidaps/events/EventBTChange.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/events/EventChargingState.kt b/core/src/main/java/info/nightscout/androidaps/events/EventChargingState.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/events/EventChargingState.kt
rename to core/src/main/java/info/nightscout/androidaps/events/EventChargingState.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/events/EventConfigBuilderChange.kt b/core/src/main/java/info/nightscout/androidaps/events/EventConfigBuilderChange.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/events/EventConfigBuilderChange.kt
rename to core/src/main/java/info/nightscout/androidaps/events/EventConfigBuilderChange.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/events/EventCustomActionsChanged.kt b/core/src/main/java/info/nightscout/androidaps/events/EventCustomActionsChanged.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/events/EventCustomActionsChanged.kt
rename to core/src/main/java/info/nightscout/androidaps/events/EventCustomActionsChanged.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/events/EventDanaRSyncStatus.kt b/core/src/main/java/info/nightscout/androidaps/events/EventDanaRSyncStatus.kt
similarity index 63%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/events/EventDanaRSyncStatus.kt
rename to core/src/main/java/info/nightscout/androidaps/events/EventDanaRSyncStatus.kt
index 59ad7e2d83..152a45491f 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/events/EventDanaRSyncStatus.kt
+++ b/core/src/main/java/info/nightscout/androidaps/events/EventDanaRSyncStatus.kt
@@ -1,4 +1,4 @@
-package info.nightscout.androidaps.plugins.pump.danaR.events
+package info.nightscout.androidaps.events
import info.nightscout.androidaps.events.Event
diff --git a/app/src/main/java/info/nightscout/androidaps/events/EventExtendedBolusChange.kt b/core/src/main/java/info/nightscout/androidaps/events/EventExtendedBolusChange.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/events/EventExtendedBolusChange.kt
rename to core/src/main/java/info/nightscout/androidaps/events/EventExtendedBolusChange.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/events/EventInitializationChanged.kt b/core/src/main/java/info/nightscout/androidaps/events/EventInitializationChanged.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/events/EventInitializationChanged.kt
rename to core/src/main/java/info/nightscout/androidaps/events/EventInitializationChanged.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/events/EventLoop.kt b/core/src/main/java/info/nightscout/androidaps/events/EventLoop.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/events/EventLoop.kt
rename to core/src/main/java/info/nightscout/androidaps/events/EventLoop.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/events/EventNetworkChange.kt b/core/src/main/java/info/nightscout/androidaps/events/EventNetworkChange.kt
similarity index 75%
rename from app/src/main/java/info/nightscout/androidaps/events/EventNetworkChange.kt
rename to core/src/main/java/info/nightscout/androidaps/events/EventNetworkChange.kt
index 87599a9373..716b2b1810 100644
--- a/app/src/main/java/info/nightscout/androidaps/events/EventNetworkChange.kt
+++ b/core/src/main/java/info/nightscout/androidaps/events/EventNetworkChange.kt
@@ -11,8 +11,4 @@ class EventNetworkChange : Event() {
var ssid = ""
var roaming = false
var metered = false
-
- fun connectedSsid(): String {
- return StringUtils.removeSurroundingQuotes(ssid)
- }
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/events/EventNtpStatus.kt b/core/src/main/java/info/nightscout/androidaps/events/EventNtpStatus.kt
similarity index 61%
rename from app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/events/EventNtpStatus.kt
rename to core/src/main/java/info/nightscout/androidaps/events/EventNtpStatus.kt
index fc4e5cb8e9..0ad455836a 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/constraints/objectives/events/EventNtpStatus.kt
+++ b/core/src/main/java/info/nightscout/androidaps/events/EventNtpStatus.kt
@@ -1,4 +1,4 @@
-package info.nightscout.androidaps.plugins.constraints.objectives.events
+package info.nightscout.androidaps.events
import info.nightscout.androidaps.events.Event
diff --git a/app/src/main/java/info/nightscout/androidaps/events/EventPreferenceChange.kt b/core/src/main/java/info/nightscout/androidaps/events/EventPreferenceChange.kt
similarity index 86%
rename from app/src/main/java/info/nightscout/androidaps/events/EventPreferenceChange.kt
rename to core/src/main/java/info/nightscout/androidaps/events/EventPreferenceChange.kt
index 1f7856b7cd..d30f0d9a54 100644
--- a/app/src/main/java/info/nightscout/androidaps/events/EventPreferenceChange.kt
+++ b/core/src/main/java/info/nightscout/androidaps/events/EventPreferenceChange.kt
@@ -1,7 +1,5 @@
package info.nightscout.androidaps.events
-import android.content.res.Resources
-import info.nightscout.androidaps.MainApp
import info.nightscout.androidaps.utils.resources.ResourceHelper
class EventPreferenceChange : Event {
diff --git a/app/src/main/java/info/nightscout/androidaps/events/EventProfileNeedsUpdate.kt b/core/src/main/java/info/nightscout/androidaps/events/EventProfileNeedsUpdate.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/events/EventProfileNeedsUpdate.kt
rename to core/src/main/java/info/nightscout/androidaps/events/EventProfileNeedsUpdate.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/events/EventPumpStatusChanged.kt b/core/src/main/java/info/nightscout/androidaps/events/EventPumpStatusChanged.kt
similarity index 94%
rename from app/src/main/java/info/nightscout/androidaps/events/EventPumpStatusChanged.kt
rename to core/src/main/java/info/nightscout/androidaps/events/EventPumpStatusChanged.kt
index cc92defe8d..0b9ce7ebf0 100644
--- a/app/src/main/java/info/nightscout/androidaps/events/EventPumpStatusChanged.kt
+++ b/core/src/main/java/info/nightscout/androidaps/events/EventPumpStatusChanged.kt
@@ -1,6 +1,6 @@
package info.nightscout.androidaps.events
-import info.nightscout.androidaps.R
+import info.nightscout.androidaps.core.R
import info.nightscout.androidaps.utils.resources.ResourceHelper
class EventPumpStatusChanged : EventStatus {
@@ -46,7 +46,7 @@ class EventPumpStatusChanged : EventStatus {
// status for startup wizard
override fun getStatus(resourceHelper: ResourceHelper): String {
return when (status) {
- Status.CONNECTING -> String.format(resourceHelper.gs(R.string.danar_history_connectingfor), secondsElapsed)
+ Status.CONNECTING -> String.format(resourceHelper.gs(R.string.connectingfor), secondsElapsed)
Status.HANDSHAKING -> resourceHelper.gs(R.string.handshaking)
Status.CONNECTED -> resourceHelper.gs(R.string.connected)
Status.PERFORMING -> performingAction
diff --git a/core/src/main/java/info/nightscout/androidaps/events/EventRebuildTabs.kt b/core/src/main/java/info/nightscout/androidaps/events/EventRebuildTabs.kt
new file mode 100644
index 0000000000..3d4180f29f
--- /dev/null
+++ b/core/src/main/java/info/nightscout/androidaps/events/EventRebuildTabs.kt
@@ -0,0 +1,3 @@
+package info.nightscout.androidaps.events
+
+class EventRebuildTabs constructor(var recreate: Boolean = false) : Event()
diff --git a/app/src/main/java/info/nightscout/androidaps/events/EventRefreshOverview.kt b/core/src/main/java/info/nightscout/androidaps/events/EventRefreshOverview.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/events/EventRefreshOverview.kt
rename to core/src/main/java/info/nightscout/androidaps/events/EventRefreshOverview.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/events/EventStatus.kt b/core/src/main/java/info/nightscout/androidaps/events/EventStatus.kt
similarity index 84%
rename from app/src/main/java/info/nightscout/androidaps/events/EventStatus.kt
rename to core/src/main/java/info/nightscout/androidaps/events/EventStatus.kt
index 360b62f0e9..88c8073e69 100644
--- a/app/src/main/java/info/nightscout/androidaps/events/EventStatus.kt
+++ b/core/src/main/java/info/nightscout/androidaps/events/EventStatus.kt
@@ -3,6 +3,6 @@ package info.nightscout.androidaps.events
import info.nightscout.androidaps.utils.resources.ResourceHelper
// pass string to startup wizard
-abstract class EventStatus :Event() {
+abstract class EventStatus : Event() {
abstract fun getStatus(resourceHelper: ResourceHelper) : String
}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/events/EventTempBasalChange.kt b/core/src/main/java/info/nightscout/androidaps/events/EventTempBasalChange.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/events/EventTempBasalChange.kt
rename to core/src/main/java/info/nightscout/androidaps/events/EventTempBasalChange.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/interfaces/APSInterface.java b/core/src/main/java/info/nightscout/androidaps/interfaces/APSInterface.java
similarity index 99%
rename from app/src/main/java/info/nightscout/androidaps/interfaces/APSInterface.java
rename to core/src/main/java/info/nightscout/androidaps/interfaces/APSInterface.java
index 7d32e37ff0..5cbdddac9f 100644
--- a/app/src/main/java/info/nightscout/androidaps/interfaces/APSInterface.java
+++ b/core/src/main/java/info/nightscout/androidaps/interfaces/APSInterface.java
@@ -1,5 +1,6 @@
package info.nightscout.androidaps.interfaces;
+
import info.nightscout.androidaps.plugins.aps.loop.APSResult;
/**
diff --git a/app/src/main/java/info/nightscout/androidaps/interfaces/ActivePluginProvider.java b/core/src/main/java/info/nightscout/androidaps/interfaces/ActivePluginProvider.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/interfaces/ActivePluginProvider.java
rename to core/src/main/java/info/nightscout/androidaps/interfaces/ActivePluginProvider.java
diff --git a/app/src/main/java/info/nightscout/androidaps/interfaces/BgSourceInterface.java b/core/src/main/java/info/nightscout/androidaps/interfaces/BgSourceInterface.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/interfaces/BgSourceInterface.java
rename to core/src/main/java/info/nightscout/androidaps/interfaces/BgSourceInterface.java
diff --git a/app/src/main/java/info/nightscout/androidaps/interfaces/CommandQueueProvider.kt b/core/src/main/java/info/nightscout/androidaps/interfaces/CommandQueueProvider.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/interfaces/CommandQueueProvider.kt
rename to core/src/main/java/info/nightscout/androidaps/interfaces/CommandQueueProvider.kt
diff --git a/core/src/main/java/info/nightscout/androidaps/interfaces/ConfigBuilderInterface.kt b/core/src/main/java/info/nightscout/androidaps/interfaces/ConfigBuilderInterface.kt
new file mode 100644
index 0000000000..effafb788a
--- /dev/null
+++ b/core/src/main/java/info/nightscout/androidaps/interfaces/ConfigBuilderInterface.kt
@@ -0,0 +1,5 @@
+package info.nightscout.androidaps.interfaces
+
+interface ConfigBuilderInterface {
+ fun storeSettings(from: String)
+}
\ No newline at end of file
diff --git a/core/src/main/java/info/nightscout/androidaps/interfaces/ConfigInterface.kt b/core/src/main/java/info/nightscout/androidaps/interfaces/ConfigInterface.kt
new file mode 100644
index 0000000000..b5071628b5
--- /dev/null
+++ b/core/src/main/java/info/nightscout/androidaps/interfaces/ConfigInterface.kt
@@ -0,0 +1,9 @@
+package info.nightscout.androidaps.interfaces
+
+interface ConfigInterface {
+ val SUPPORTEDNSVERSION: Int
+ val APS: Boolean
+ val NSCLIENT: Boolean
+ val PUMPCONTROL: Boolean
+ val PUMPDRIVERS: Boolean
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/interfaces/Constraint.java b/core/src/main/java/info/nightscout/androidaps/interfaces/Constraint.java
similarity index 86%
rename from app/src/main/java/info/nightscout/androidaps/interfaces/Constraint.java
rename to core/src/main/java/info/nightscout/androidaps/interfaces/Constraint.java
index 4ce36b6abc..461b89beaf 100644
--- a/app/src/main/java/info/nightscout/androidaps/interfaces/Constraint.java
+++ b/core/src/main/java/info/nightscout/androidaps/interfaces/Constraint.java
@@ -10,7 +10,7 @@ import info.nightscout.androidaps.logging.LTag;
* Created by mike on 19.03.2018.
*/
-public class Constraint {
+public class Constraint> {
private T value;
private T originalValue;
@@ -85,14 +85,12 @@ public class Constraint {
return from.getClass().getSimpleName().replace("Plugin", "");
}
- public Constraint addReason(String reason, Object from) {
+ public void addReason(String reason, Object from) {
reasons.add(translateFrom(from) + ": " + reason);
- return this;
}
- public Constraint addMostLimingReason(String reason, Object from) {
+ private void addMostLimingReason(String reason, Object from) {
mostLimiting.add(translateFrom(from) + ": " + reason);
- return this;
}
public String getReasons(AAPSLogger aapsLogger) {
@@ -102,7 +100,7 @@ public class Constraint {
if (count++ != 0) sb.append("\n");
sb.append(r);
}
- aapsLogger.debug(LTag.CONSTRAINTS, "Limiting origial value: " + originalValue + " to " + value + ". Reason: " + sb.toString());
+ aapsLogger.debug(LTag.CONSTRAINTS, "Limiting original value: " + originalValue + " to " + value + ". Reason: " + sb.toString());
return sb.toString();
}
@@ -117,7 +115,7 @@ public class Constraint {
if (count++ != 0) sb.append("\n");
sb.append(r);
}
- aapsLogger.debug(LTag.CONSTRAINTS, "Limiting origial value: " + originalValue + " to " + value + ". Reason: " + sb.toString());
+ aapsLogger.debug(LTag.CONSTRAINTS, "Limiting original value: " + originalValue + " to " + value + ". Reason: " + sb.toString());
return sb.toString();
}
@@ -126,8 +124,6 @@ public class Constraint {
}
public void copyReasons(Constraint> another) {
- for (String s : another.getReasonList()) {
- reasons.add(s);
- }
+ reasons.addAll(another.getReasonList());
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/interfaces/ConstraintsInterface.kt b/core/src/main/java/info/nightscout/androidaps/interfaces/ConstraintsInterface.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/interfaces/ConstraintsInterface.kt
rename to core/src/main/java/info/nightscout/androidaps/interfaces/ConstraintsInterface.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/interfaces/DanaRInterface.java b/core/src/main/java/info/nightscout/androidaps/interfaces/DanaRInterface.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/interfaces/DanaRInterface.java
rename to core/src/main/java/info/nightscout/androidaps/interfaces/DanaRInterface.java
diff --git a/core/src/main/java/info/nightscout/androidaps/interfaces/DatabaseHelperInterface.kt b/core/src/main/java/info/nightscout/androidaps/interfaces/DatabaseHelperInterface.kt
new file mode 100644
index 0000000000..df90e03586
--- /dev/null
+++ b/core/src/main/java/info/nightscout/androidaps/interfaces/DatabaseHelperInterface.kt
@@ -0,0 +1,27 @@
+package info.nightscout.androidaps.interfaces
+
+import com.j256.ormlite.dao.CloseableIterator
+import info.nightscout.androidaps.db.*
+
+interface DatabaseHelperInterface {
+
+ fun getAllBgreadingsDataFromTime(mills: Long, ascending: Boolean): List
+ fun createOrUpdate(careportalEvent: CareportalEvent)
+ fun createOrUpdate(record: DanaRHistoryRecord)
+ fun create(record: DbRequest)
+ fun getDanaRHistoryRecordsByType(type: Byte): List
+ fun getTDDs(): List
+ fun size(table: String): Long
+ fun deleteAllDbRequests()
+ fun deleteDbRequest(id: String): Int
+ fun deleteDbRequestbyMongoId(action: String, _id: String)
+ fun getDbRequestInterator(): CloseableIterator
+ fun roundDateToSec(date: Long): Long
+ fun createOrUpdateTDD(record: TDD)
+ fun createOrUpdate(tempBasal: TemporaryBasal)
+ fun findTempBasalByPumpId(id: Long) : TemporaryBasal
+ fun getTemporaryBasalsDataFromTime(mills: Long, ascending: Boolean) : List
+ fun getCareportalEventFromTimestamp(timestamp: Long): CareportalEvent
+ fun getTDDsForLastXDays(days: Int): List
+ fun getProfileSwitchData(from: Long, ascending: Boolean): List
+}
diff --git a/app/src/main/java/info/nightscout/androidaps/interfaces/InsulinInterface.java b/core/src/main/java/info/nightscout/androidaps/interfaces/InsulinInterface.java
similarity index 90%
rename from app/src/main/java/info/nightscout/androidaps/interfaces/InsulinInterface.java
rename to core/src/main/java/info/nightscout/androidaps/interfaces/InsulinInterface.java
index 2ad36fb747..d5e8ab399d 100644
--- a/app/src/main/java/info/nightscout/androidaps/interfaces/InsulinInterface.java
+++ b/core/src/main/java/info/nightscout/androidaps/interfaces/InsulinInterface.java
@@ -1,7 +1,7 @@
package info.nightscout.androidaps.interfaces;
import info.nightscout.androidaps.data.Iob;
-import info.nightscout.androidaps.plugins.treatments.Treatment;
+import info.nightscout.androidaps.db.Treatment;
/**
* Created by mike on 17.04.2017.
diff --git a/app/src/main/java/info/nightscout/androidaps/interfaces/Interval.java b/core/src/main/java/info/nightscout/androidaps/interfaces/Interval.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/interfaces/Interval.java
rename to core/src/main/java/info/nightscout/androidaps/interfaces/Interval.java
diff --git a/core/src/main/java/info/nightscout/androidaps/interfaces/IobCobCalculatorInterface.java b/core/src/main/java/info/nightscout/androidaps/interfaces/IobCobCalculatorInterface.java
new file mode 100644
index 0000000000..75a57b2c07
--- /dev/null
+++ b/core/src/main/java/info/nightscout/androidaps/interfaces/IobCobCalculatorInterface.java
@@ -0,0 +1,14 @@
+package info.nightscout.androidaps.interfaces;
+
+import androidx.collection.LongSparseArray;
+
+import info.nightscout.androidaps.data.IobTotal;
+import info.nightscout.androidaps.data.Profile;
+import info.nightscout.androidaps.plugins.iob.iobCobCalculator.data.AutosensData;
+
+public interface IobCobCalculatorInterface {
+ LongSparseArray getAutosensDataTable();
+ IobTotal[] calculateIobArrayInDia(Profile profile);
+ String lastDataTime();
+ AutosensData getAutosensData(long toTime);
+}
diff --git a/core/src/main/java/info/nightscout/androidaps/interfaces/LoopInterface.kt b/core/src/main/java/info/nightscout/androidaps/interfaces/LoopInterface.kt
new file mode 100644
index 0000000000..2ec67b461b
--- /dev/null
+++ b/core/src/main/java/info/nightscout/androidaps/interfaces/LoopInterface.kt
@@ -0,0 +1,24 @@
+package info.nightscout.androidaps.interfaces
+
+import info.nightscout.androidaps.data.PumpEnactResult
+import info.nightscout.androidaps.plugins.aps.loop.APSResult
+import info.nightscout.androidaps.utils.DateUtil
+
+interface LoopInterface {
+
+ class LastRun {
+ var request: APSResult? = null
+ var constraintsProcessed: APSResult? = null
+ var tbrSetByPump: PumpEnactResult? = null
+ var smbSetByPump: PumpEnactResult? = null
+ var source: String? = null
+ var lastAPSRun = DateUtil.now()
+ var lastTBREnact: Long = 0
+ var lastSMBEnact: Long = 0
+ var lastTBRRequest: Long = 0
+ var lastSMBRequest: Long = 0
+ var lastOpenModeAccept: Long = 0
+ }
+
+ var lastRun: LastRun?
+}
\ No newline at end of file
diff --git a/core/src/main/java/info/nightscout/androidaps/interfaces/NotificationHolderInterface.kt b/core/src/main/java/info/nightscout/androidaps/interfaces/NotificationHolderInterface.kt
new file mode 100644
index 0000000000..cbba8f326a
--- /dev/null
+++ b/core/src/main/java/info/nightscout/androidaps/interfaces/NotificationHolderInterface.kt
@@ -0,0 +1,10 @@
+package info.nightscout.androidaps.interfaces
+
+import android.app.Notification
+
+interface NotificationHolderInterface {
+ val channelID : String
+ val notificationID : Int
+ var notification: Notification
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/interfaces/PluginBase.kt b/core/src/main/java/info/nightscout/androidaps/interfaces/PluginBase.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/interfaces/PluginBase.kt
rename to core/src/main/java/info/nightscout/androidaps/interfaces/PluginBase.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/interfaces/PluginDescription.java b/core/src/main/java/info/nightscout/androidaps/interfaces/PluginDescription.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/interfaces/PluginDescription.java
rename to core/src/main/java/info/nightscout/androidaps/interfaces/PluginDescription.java
diff --git a/app/src/main/java/info/nightscout/androidaps/interfaces/PluginType.java b/core/src/main/java/info/nightscout/androidaps/interfaces/PluginType.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/interfaces/PluginType.java
rename to core/src/main/java/info/nightscout/androidaps/interfaces/PluginType.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ProfileFunction.kt b/core/src/main/java/info/nightscout/androidaps/interfaces/ProfileFunction.kt
similarity index 85%
rename from app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ProfileFunction.kt
rename to core/src/main/java/info/nightscout/androidaps/interfaces/ProfileFunction.kt
index e6adc728f5..64582a62d9 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ProfileFunction.kt
+++ b/core/src/main/java/info/nightscout/androidaps/interfaces/ProfileFunction.kt
@@ -1,7 +1,7 @@
-package info.nightscout.androidaps.plugins.configBuilder
+package info.nightscout.androidaps.interfaces
import info.nightscout.androidaps.data.Profile
-import info.nightscout.androidaps.data.ProfileStore
+import info.nightscout.androidaps.interfaces.ProfileStore
import info.nightscout.androidaps.db.ProfileSwitch
interface ProfileFunction {
diff --git a/app/src/main/java/info/nightscout/androidaps/interfaces/ProfileInterface.java b/core/src/main/java/info/nightscout/androidaps/interfaces/ProfileInterface.java
similarity index 81%
rename from app/src/main/java/info/nightscout/androidaps/interfaces/ProfileInterface.java
rename to core/src/main/java/info/nightscout/androidaps/interfaces/ProfileInterface.java
index 5fb3b459b6..5af03b863f 100644
--- a/app/src/main/java/info/nightscout/androidaps/interfaces/ProfileInterface.java
+++ b/core/src/main/java/info/nightscout/androidaps/interfaces/ProfileInterface.java
@@ -2,8 +2,6 @@ package info.nightscout.androidaps.interfaces;
import androidx.annotation.Nullable;
-import info.nightscout.androidaps.data.ProfileStore;
-
/**
* Created by mike on 14.06.2016.
*/
diff --git a/app/src/main/java/info/nightscout/androidaps/data/ProfileStore.kt b/core/src/main/java/info/nightscout/androidaps/interfaces/ProfileStore.kt
similarity index 88%
rename from app/src/main/java/info/nightscout/androidaps/data/ProfileStore.kt
rename to core/src/main/java/info/nightscout/androidaps/interfaces/ProfileStore.kt
index 751067a27a..792e7e4cf5 100644
--- a/app/src/main/java/info/nightscout/androidaps/data/ProfileStore.kt
+++ b/core/src/main/java/info/nightscout/androidaps/interfaces/ProfileStore.kt
@@ -1,7 +1,8 @@
-package info.nightscout.androidaps.data
+package info.nightscout.androidaps.interfaces
import androidx.collection.ArrayMap
import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.data.Profile
import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.utils.JsonHelper
import org.json.JSONException
@@ -30,8 +31,8 @@ class ProfileStore(val injector: HasAndroidInjector, val data: JSONObject) {
fun getDefaultProfile(): Profile? = getDefaultProfileName()?.let { getSpecificProfile(it) }
fun getDefaultProfileName(): String? {
- val defaultProfileName = data.getString("defaultProfile")
- return getStore()?.has(defaultProfileName)?.let { defaultProfileName }
+ val defaultProfileName = data.optString("defaultProfile")
+ return if (defaultProfileName.isNotEmpty()) getStore()?.has(defaultProfileName)?.let { defaultProfileName } else null
}
fun getProfileList(): ArrayList {
diff --git a/app/src/main/java/info/nightscout/androidaps/interfaces/PumpDescription.java b/core/src/main/java/info/nightscout/androidaps/interfaces/PumpDescription.java
similarity index 97%
rename from app/src/main/java/info/nightscout/androidaps/interfaces/PumpDescription.java
rename to core/src/main/java/info/nightscout/androidaps/interfaces/PumpDescription.java
index 81a5d9e7ae..76c6253160 100644
--- a/app/src/main/java/info/nightscout/androidaps/interfaces/PumpDescription.java
+++ b/core/src/main/java/info/nightscout/androidaps/interfaces/PumpDescription.java
@@ -15,6 +15,11 @@ public class PumpDescription {
resetSettings();
}
+ public PumpDescription (PumpType pumpType) {
+ this();
+ setPumpDescription(pumpType);
+ }
+
public static final int NONE = 0;
public static final int PERCENT = 0x01;
public static final int ABSOLUTE = 0x02;
diff --git a/app/src/main/java/info/nightscout/androidaps/interfaces/PumpInterface.java b/core/src/main/java/info/nightscout/androidaps/interfaces/PumpInterface.java
similarity index 97%
rename from app/src/main/java/info/nightscout/androidaps/interfaces/PumpInterface.java
rename to core/src/main/java/info/nightscout/androidaps/interfaces/PumpInterface.java
index d85a383752..8308cc34e2 100644
--- a/app/src/main/java/info/nightscout/androidaps/interfaces/PumpInterface.java
+++ b/core/src/main/java/info/nightscout/androidaps/interfaces/PumpInterface.java
@@ -5,8 +5,6 @@ import org.json.JSONObject;
import java.util.List;
-import javax.annotation.Nullable;
-
import info.nightscout.androidaps.data.DetailedBolusInfo;
import info.nightscout.androidaps.data.Profile;
import info.nightscout.androidaps.data.PumpEnactResult;
@@ -81,7 +79,7 @@ public interface PumpInterface {
// Status to be passed to NS
@NotNull
- JSONObject getJSONStatus(Profile profile, String profileName);
+ JSONObject getJSONStatus(Profile profile, String profileName, String version);
@NotNull
ManufacturerType manufacturer();
@@ -107,7 +105,6 @@ public interface PumpInterface {
boolean canHandleDST();
- @Nullable
List getCustomActions();
void executeCustomAction(CustomActionType customActionType);
@@ -122,4 +119,8 @@ public interface PumpInterface {
default boolean isUnreachableAlertTimeoutExceeded(long alertTimeoutMilliseconds) {
return false;
}
+
+ default boolean setNeutralTempAtFullHour() {
+ return false;
+ }
}
diff --git a/app/src/main/java/info/nightscout/androidaps/interfaces/PumpPluginBase.kt b/core/src/main/java/info/nightscout/androidaps/interfaces/PumpPluginBase.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/interfaces/PumpPluginBase.kt
rename to core/src/main/java/info/nightscout/androidaps/interfaces/PumpPluginBase.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/interfaces/SensitivityInterface.java b/core/src/main/java/info/nightscout/androidaps/interfaces/SensitivityInterface.java
similarity index 60%
rename from app/src/main/java/info/nightscout/androidaps/interfaces/SensitivityInterface.java
rename to core/src/main/java/info/nightscout/androidaps/interfaces/SensitivityInterface.java
index 9d75382542..04503c5690 100644
--- a/app/src/main/java/info/nightscout/androidaps/interfaces/SensitivityInterface.java
+++ b/core/src/main/java/info/nightscout/androidaps/interfaces/SensitivityInterface.java
@@ -1,7 +1,6 @@
package info.nightscout.androidaps.interfaces;
import info.nightscout.androidaps.plugins.iob.iobCobCalculator.AutosensResult;
-import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin;
/**
* Created by mike on 24.06.2017.
@@ -12,6 +11,6 @@ public interface SensitivityInterface {
double MIN_HOURS = 1;
double MIN_HOURS_FULL_AUTOSENS = 4;
- AutosensResult detectSensitivity(IobCobCalculatorPlugin plugin, long fromTime, long toTime);
+ AutosensResult detectSensitivity(IobCobCalculatorInterface plugin, long fromTime, long toTime);
}
diff --git a/app/src/main/java/info/nightscout/androidaps/interfaces/TreatmentsInterface.java b/core/src/main/java/info/nightscout/androidaps/interfaces/TreatmentsInterface.java
similarity index 91%
rename from app/src/main/java/info/nightscout/androidaps/interfaces/TreatmentsInterface.java
rename to core/src/main/java/info/nightscout/androidaps/interfaces/TreatmentsInterface.java
index 98441f8a7d..8c8d7f026f 100644
--- a/app/src/main/java/info/nightscout/androidaps/interfaces/TreatmentsInterface.java
+++ b/core/src/main/java/info/nightscout/androidaps/interfaces/TreatmentsInterface.java
@@ -7,15 +7,14 @@ import java.util.List;
import info.nightscout.androidaps.data.DetailedBolusInfo;
import info.nightscout.androidaps.data.Intervals;
import info.nightscout.androidaps.data.IobTotal;
-import info.nightscout.androidaps.data.MealData;
import info.nightscout.androidaps.data.NonOverlappingIntervals;
import info.nightscout.androidaps.data.ProfileIntervals;
-import info.nightscout.androidaps.data.ProfileStore;
import info.nightscout.androidaps.db.ExtendedBolus;
import info.nightscout.androidaps.db.ProfileSwitch;
import info.nightscout.androidaps.db.TempTarget;
import info.nightscout.androidaps.db.TemporaryBasal;
-import info.nightscout.androidaps.plugins.treatments.Treatment;
+import info.nightscout.androidaps.db.Treatment;
+import info.nightscout.androidaps.plugins.treatments.TreatmentUpdateReturn;
/**
* Created by mike on 14.06.2016.
@@ -23,31 +22,43 @@ import info.nightscout.androidaps.plugins.treatments.Treatment;
public interface TreatmentsInterface {
void updateTotalIOBTreatments();
+
void updateTotalIOBTempBasals();
IobTotal getLastCalculationTreatments();
+
IobTotal getCalculationToTimeTreatments(long time);
+
IobTotal getLastCalculationTempBasals();
+
IobTotal getCalculationToTimeTempBasals(long time);
List getTreatmentsFromHistory();
+
List getCarbTreatments5MinBackFromHistory(long time);
+
List getTreatmentsFromHistoryAfterTimestamp(long timestamp);
+
long getLastBolusTime();
// real basals (not faked by extended bolus)
boolean isInHistoryRealTempBasalInProgress();
+
TemporaryBasal getRealTempBasalFromHistory(long time);
boolean addToHistoryTempBasal(TemporaryBasal tempBasal);
// basal that can be faked by extended boluses
boolean isTempBasalInProgress();
+
TemporaryBasal getTempBasalFromHistory(long time);
+
NonOverlappingIntervals getTemporaryBasalsFromHistory();
boolean isInHistoryExtendedBoluslInProgress();
+
ExtendedBolus getExtendedBolusFromHistory(long time);
+
Intervals getExtendedBolusesFromHistory();
boolean addToHistoryExtendedBolus(ExtendedBolus extendedBolus);
@@ -55,16 +66,25 @@ public interface TreatmentsInterface {
boolean addToHistoryTreatment(DetailedBolusInfo detailedBolusInfo, boolean allowUpdate);
TempTarget getTempTargetFromHistory();
+
TempTarget getTempTargetFromHistory(long time);
+
Intervals getTempTargetsFromHistory();
+
void addToHistoryTempTarget(TempTarget tempTarget);
ProfileSwitch getProfileSwitchFromHistory(long time);
+
ProfileIntervals getProfileSwitchesFromHistory();
+
void addToHistoryProfileSwitch(ProfileSwitch profileSwitch);
+
void doProfileSwitch(@NotNull final ProfileStore profileStore, @NotNull final String profileName, final int duration, final int percentage, final int timeShift, final long date);
+
void doProfileSwitch(final int duration, final int percentage, final int timeShift);
long oldestDataAvailable();
+ TreatmentUpdateReturn createOrUpdateMedtronic(Treatment treatment, boolean fromNightScout);
+
}
\ No newline at end of file
diff --git a/core/src/main/java/info/nightscout/androidaps/interfaces/UploadQueueInterface.java b/core/src/main/java/info/nightscout/androidaps/interfaces/UploadQueueInterface.java
new file mode 100644
index 0000000000..d051d43501
--- /dev/null
+++ b/core/src/main/java/info/nightscout/androidaps/interfaces/UploadQueueInterface.java
@@ -0,0 +1,8 @@
+package info.nightscout.androidaps.interfaces;
+
+import info.nightscout.androidaps.db.DbRequest;
+
+public interface UploadQueueInterface {
+
+ void add(DbRequest dbRequest);
+}
diff --git a/core/src/main/java/info/nightscout/androidaps/logging/L.kt b/core/src/main/java/info/nightscout/androidaps/logging/L.kt
index b2156c4080..ad3ca2dad4 100644
--- a/core/src/main/java/info/nightscout/androidaps/logging/L.kt
+++ b/core/src/main/java/info/nightscout/androidaps/logging/L.kt
@@ -12,19 +12,7 @@ class L @Inject constructor(
private var logElements: MutableList = ArrayList()
- companion object {
- @Deprecated("Use Dagger")
- lateinit var instance: L
-
- @Deprecated("Use Dagger")
- @JvmStatic
- fun isEnabled(ltag: LTag): Boolean {
- return instance.findByName(ltag.name).enabled
- }
- }
-
init {
- instance= this
LTag.values().forEach { logElements.add(LogElement(it, sp)) }
}
@@ -46,7 +34,7 @@ class L @Inject constructor(
}
class LogElement {
- var sp : SP
+ var sp: SP
var name: String
var defaultValue: Boolean
var enabled: Boolean
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/aps/loop/APSResult.java b/core/src/main/java/info/nightscout/androidaps/plugins/aps/loop/APSResult.java
similarity index 92%
rename from app/src/main/java/info/nightscout/androidaps/plugins/aps/loop/APSResult.java
rename to core/src/main/java/info/nightscout/androidaps/plugins/aps/loop/APSResult.java
index 5ca88bfac0..4e3d6bd3d5 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/aps/loop/APSResult.java
+++ b/core/src/main/java/info/nightscout/androidaps/plugins/aps/loop/APSResult.java
@@ -1,6 +1,5 @@
package info.nightscout.androidaps.plugins.aps.loop;
-import android.text.Html;
import android.text.Spanned;
import org.json.JSONArray;
@@ -13,21 +12,22 @@ import java.util.List;
import javax.inject.Inject;
import dagger.android.HasAndroidInjector;
-import info.nightscout.androidaps.R;
+import info.nightscout.androidaps.core.R;
import info.nightscout.androidaps.data.IobTotal;
import info.nightscout.androidaps.data.Profile;
import info.nightscout.androidaps.db.BgReading;
import info.nightscout.androidaps.db.TemporaryBasal;
import info.nightscout.androidaps.interfaces.ActivePluginProvider;
import info.nightscout.androidaps.interfaces.Constraint;
+import info.nightscout.androidaps.interfaces.ProfileFunction;
import info.nightscout.androidaps.interfaces.PumpDescription;
import info.nightscout.androidaps.interfaces.PumpInterface;
+import info.nightscout.androidaps.interfaces.TreatmentsInterface;
import info.nightscout.androidaps.logging.AAPSLogger;
import info.nightscout.androidaps.logging.LTag;
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker;
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction;
-import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin;
import info.nightscout.androidaps.utils.DecimalFormatter;
+import info.nightscout.androidaps.utils.HtmlHelper;
import info.nightscout.androidaps.utils.resources.ResourceHelper;
import info.nightscout.androidaps.utils.sharedPreferences.SP;
@@ -40,7 +40,7 @@ public class APSResult {
@Inject ConstraintChecker constraintChecker;
@Inject SP sp;
@Inject ActivePluginProvider activePlugin;
- @Inject TreatmentsPlugin treatmentsPlugin;
+ @Inject TreatmentsInterface treatmentsPlugin;
@Inject ProfileFunction profileFunction;
@Inject ResourceHelper resourceHelper;
@@ -62,6 +62,10 @@ public class APSResult {
public boolean hasPredictions = false;
public double smb = 0d; // super micro bolus in units
public long deliverAt = 0;
+ public double targetBG = 0d;
+
+ public int carbsReq = 0;
+ public int carbsReqWithin = 0;
public Constraint inputConstraints;
@@ -99,6 +103,10 @@ public class APSResult {
return this;
}
+ public String getCarbsRequiredText() {
+ return String.format(resourceHelper.gs(R.string.carbsreq), carbsReq, carbsReqWithin);
+ }
+
@Override
public String toString() {
final PumpInterface pump = activePlugin.getActivePump();
@@ -122,11 +130,20 @@ public class APSResult {
if (smb != 0)
ret += ("SMB: " + DecimalFormatter.toPumpSupportedBolus(smb, activePlugin.getActivePump()) + " U\n");
+ if (isCarbsRequired()) {
+ ret += getCarbsRequiredText()+"\n";
+ }
+
// reason
ret += resourceHelper.gs(R.string.reason) + ": " + reason;
return ret;
- } else
- return resourceHelper.gs(R.string.nochangerequested);
+ }
+
+ if (isCarbsRequired()) {
+ return getCarbsRequiredText();
+ }
+
+ return resourceHelper.gs(R.string.nochangerequested);
}
public Spanned toSpanned() {
@@ -151,11 +168,20 @@ public class APSResult {
if (smb != 0)
ret += ("" + "SMB" + ": " + DecimalFormatter.toPumpSupportedBolus(smb, activePlugin.getActivePump()) + " U ");
+ if (isCarbsRequired()) {
+ ret += getCarbsRequiredText()+" ";
+ }
+
// reason
ret += "" + resourceHelper.gs(R.string.reason) + ": " + reason.replace("<", "<").replace(">", ">");
- return Html.fromHtml(ret);
- } else
- return Html.fromHtml(resourceHelper.gs(R.string.nochangerequested));
+ return HtmlHelper.INSTANCE.fromHtml(ret);
+ }
+
+ if (isCarbsRequired()) {
+ return HtmlHelper.INSTANCE.fromHtml(getCarbsRequiredText());
+ }
+
+ return HtmlHelper.INSTANCE.fromHtml(resourceHelper.gs(R.string.nochangerequested));
}
public APSResult newAndClone(HasAndroidInjector injector) {
@@ -184,6 +210,9 @@ public class APSResult {
newResult.smbConstraint = smbConstraint;
newResult.percent = percent;
newResult.usePercent = usePercent;
+ newResult.carbsReq = carbsReq;
+ newResult.carbsReqWithin = carbsReqWithin;
+ newResult.targetBG = targetBG;
}
@@ -298,6 +327,10 @@ public class APSResult {
return latest;
}
+ public boolean isCarbsRequired() {
+ return carbsReq > 0;
+ }
+
public boolean isChangeRequested() {
Constraint closedLoopEnabled = constraintChecker.isClosedLoopAllowed();
// closed loop mode: handle change at driver level
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/aps/loop/DeviceStatus.java b/core/src/main/java/info/nightscout/androidaps/plugins/aps/loop/DeviceStatus.java
similarity index 98%
rename from app/src/main/java/info/nightscout/androidaps/plugins/aps/loop/DeviceStatus.java
rename to core/src/main/java/info/nightscout/androidaps/plugins/aps/loop/DeviceStatus.java
index c8e49d013a..e517ef1681 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/aps/loop/DeviceStatus.java
+++ b/core/src/main/java/info/nightscout/androidaps/plugins/aps/loop/DeviceStatus.java
@@ -4,6 +4,7 @@ import org.json.JSONException;
import org.json.JSONObject;
import org.slf4j.Logger;
+import info.nightscout.androidaps.logging.AAPSLogger;
import info.nightscout.androidaps.logging.LTag;
import info.nightscout.androidaps.logging.StacktraceLoggerWrapper;
@@ -365,7 +366,7 @@ import info.nightscout.androidaps.logging.StacktraceLoggerWrapper;
*/
public class DeviceStatus {
- private static Logger log = StacktraceLoggerWrapper.getLogger(LTag.NSCLIENT);
+ private final AAPSLogger aapsLogger;
public String device = null;
public JSONObject pump = null;
@@ -375,6 +376,10 @@ public class DeviceStatus {
public int uploaderBattery = 0;
public String created_at = null;
+ public DeviceStatus(AAPSLogger aapsLogger) {
+ this.aapsLogger = aapsLogger;
+ }
+
public JSONObject mongoRecord() {
JSONObject record = new JSONObject();
@@ -389,7 +394,7 @@ public class DeviceStatus {
if (uploaderBattery != 0) record.put("uploaderBattery", uploaderBattery);
if (created_at != null) record.put("created_at", created_at);
} catch (JSONException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
return record;
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSSMB/SMBDefaults.java b/core/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSSMB/SMBDefaults.java
similarity index 97%
rename from app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSSMB/SMBDefaults.java
rename to core/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSSMB/SMBDefaults.java
index 5f2216b5ae..83ef09f89a 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSSMB/SMBDefaults.java
+++ b/core/src/main/java/info/nightscout/androidaps/plugins/aps/openAPSSMB/SMBDefaults.java
@@ -37,7 +37,7 @@ public class SMBDefaults {
// (If someone enters more carbs or stacks more; OpenAPS will just truncate dosing based on 120.
// Essentially, this just limits AMA/SMB as a safety cap against excessive COB entry)
public final static int maxCOB = 120;
- public final static boolean skip_neutral_temps = true; // ***** default false in oref1 ***** if true, don't set neutral temps
+ //public final static boolean skip_neutral_temps = true; // ***** default false in oref1 ***** if true, don't set neutral temps
// unsuspend_if_no_temp:false // if true, pump will un-suspend after a zero temp finishes
// bolussnooze_dia_divisor:2 // bolus snooze decays after 1/2 of DIA
public final static double min_5m_carbimpact = 8d; // mg/dL per 5m (8 mg/dL/5m corresponds to 24g/hr at a CSF of 4 mg/dL/g (x/5*60/4))
diff --git a/core/src/main/java/info/nightscout/androidaps/plugins/bus/RxBus.kt b/core/src/main/java/info/nightscout/androidaps/plugins/bus/RxBus.kt
deleted file mode 100644
index 0b2960c7d9..0000000000
--- a/core/src/main/java/info/nightscout/androidaps/plugins/bus/RxBus.kt
+++ /dev/null
@@ -1,28 +0,0 @@
-package info.nightscout.androidaps.plugins.bus
-
-import info.nightscout.androidaps.events.Event
-import io.reactivex.Observable
-import io.reactivex.schedulers.Schedulers
-import io.reactivex.subjects.PublishSubject
-
-class RxBus {
-
- companion object {
- @JvmStatic
- @Deprecated("Get via Dagger. Will be removed once fully transitioned to Dagger")
- var INSTANCE: RxBus = RxBus()//TODO: remove as soon as Dagger is fully set up
- }
-
- private val publisher = PublishSubject.create()
-
- fun send(event: Event) {
- publisher.onNext(event)
- }
-
- // Listen should return an Observable and not the publisher
- // Using ofType we filter only events that match that class type
- fun toObservable(eventType: Class): Observable =
- publisher
- .subscribeOn(Schedulers.io())
- .ofType(eventType)
-}
diff --git a/core/src/main/java/info/nightscout/androidaps/plugins/bus/RxBusWrapper.kt b/core/src/main/java/info/nightscout/androidaps/plugins/bus/RxBusWrapper.kt
index 66e5324113..cb1bc903fa 100644
--- a/core/src/main/java/info/nightscout/androidaps/plugins/bus/RxBusWrapper.kt
+++ b/core/src/main/java/info/nightscout/androidaps/plugins/bus/RxBusWrapper.kt
@@ -2,20 +2,24 @@ package info.nightscout.androidaps.plugins.bus
import info.nightscout.androidaps.events.Event
import io.reactivex.Observable
+import io.reactivex.schedulers.Schedulers
+import io.reactivex.subjects.PublishSubject
import javax.inject.Inject
import javax.inject.Singleton
@Singleton
open class RxBusWrapper @Inject constructor() {
- private val bus: RxBus = RxBus.INSTANCE
+ private val publisher = PublishSubject.create()
fun send(event: Event) {
- bus.send(event)
+ publisher.onNext(event)
}
// Listen should return an Observable and not the publisher
// Using ofType we filter only events that match that class type
fun toObservable(eventType: Class): Observable =
- bus.toObservable(eventType)
+ publisher
+ .subscribeOn(Schedulers.io())
+ .ofType(eventType)
}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/common/ManufacturerType.java b/core/src/main/java/info/nightscout/androidaps/plugins/common/ManufacturerType.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/common/ManufacturerType.java
rename to core/src/main/java/info/nightscout/androidaps/plugins/common/ManufacturerType.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ConstraintChecker.kt b/core/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ConstraintChecker.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ConstraintChecker.kt
rename to core/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ConstraintChecker.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ProfileFunctionImplementation.kt b/core/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ProfileFunctionImplementation.kt
similarity index 95%
rename from app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ProfileFunctionImplementation.kt
rename to core/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ProfileFunctionImplementation.kt
index 3128ac766d..ed084120f4 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ProfileFunctionImplementation.kt
+++ b/core/src/main/java/info/nightscout/androidaps/plugins/configBuilder/ProfileFunctionImplementation.kt
@@ -3,14 +3,14 @@ package info.nightscout.androidaps.plugins.configBuilder
import android.os.Bundle
import com.google.firebase.analytics.FirebaseAnalytics
import dagger.android.HasAndroidInjector
-import info.nightscout.androidaps.BuildConfig
import info.nightscout.androidaps.Constants
-import info.nightscout.androidaps.R
+import info.nightscout.androidaps.core.R
import info.nightscout.androidaps.data.Profile
-import info.nightscout.androidaps.data.ProfileStore
import info.nightscout.androidaps.db.ProfileSwitch
import info.nightscout.androidaps.db.Source
+import info.nightscout.androidaps.interfaces.ProfileStore
import info.nightscout.androidaps.interfaces.ActivePluginProvider
+import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.utils.DateUtil
import info.nightscout.androidaps.utils.FabricPrivacy
@@ -87,7 +87,6 @@ class ProfileFunctionImplementation @Inject constructor(
if (activeTreatments.profileSwitchesFromHistory.size() > 0) {
val bundle = Bundle()
bundle.putString(FirebaseAnalytics.Param.ITEM_LIST_ID, "CatchedError")
- bundle.putString(FirebaseAnalytics.Param.ITEM_CATEGORY, BuildConfig.BUILDVERSION)
bundle.putString(FirebaseAnalytics.Param.START_DATE, time.toString())
bundle.putString(FirebaseAnalytics.Param.ITEM_LIST_NAME, activeTreatments.profileSwitchesFromHistory.toString())
fabricPrivacy.logCustom(bundle)
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/defs/CustomAction.kt b/core/src/main/java/info/nightscout/androidaps/plugins/general/actions/defs/CustomAction.kt
similarity index 58%
rename from app/src/main/java/info/nightscout/androidaps/plugins/general/actions/defs/CustomAction.kt
rename to core/src/main/java/info/nightscout/androidaps/plugins/general/actions/defs/CustomAction.kt
index fe9af4a03e..be5e30496a 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/defs/CustomAction.kt
+++ b/core/src/main/java/info/nightscout/androidaps/plugins/general/actions/defs/CustomAction.kt
@@ -1,10 +1,10 @@
package info.nightscout.androidaps.plugins.general.actions.defs
-import info.nightscout.androidaps.R
+import info.nightscout.androidaps.core.R
-class CustomAction @JvmOverloads constructor(val name: Int, val customActionType: CustomActionType?, val iconResourceId: Int = R.drawable.icon_actions_profileswitch, var isEnabled: Boolean = true) {
+class CustomAction @JvmOverloads constructor(val name: Int, val customActionType: CustomActionType?, val iconResourceId: Int = R.drawable.ic_actions_profileswitch, var isEnabled: Boolean = true) {
constructor(nameResourceId: Int, actionType: CustomActionType?, enabled: Boolean) :
- this(nameResourceId, actionType, R.drawable.icon_actions_profileswitch, enabled)
+ this(nameResourceId, actionType, R.drawable.ic_actions_profileswitch, enabled)
}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/actions/defs/CustomActionType.kt b/core/src/main/java/info/nightscout/androidaps/plugins/general/actions/defs/CustomActionType.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/general/actions/defs/CustomActionType.kt
rename to core/src/main/java/info/nightscout/androidaps/plugins/general/actions/defs/CustomActionType.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/NSUpload.java b/core/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/NSUpload.java
similarity index 61%
rename from app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/NSUpload.java
rename to core/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/NSUpload.java
index 75f1c9b30c..5aab6d18b6 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/NSUpload.java
+++ b/core/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/NSUpload.java
@@ -1,59 +1,91 @@
package info.nightscout.androidaps.plugins.general.nsclient;
+import android.content.Context;
import android.content.Intent;
-import android.content.SharedPreferences;
import android.content.pm.ResolveInfo;
import android.os.Build;
import android.os.Bundle;
import androidx.annotation.Nullable;
-import androidx.preference.PreferenceManager;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
-import org.slf4j.Logger;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Locale;
-import info.nightscout.androidaps.MainApp;
-import info.nightscout.androidaps.R;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import dagger.android.HasAndroidInjector;
+import info.nightscout.androidaps.core.R;
import info.nightscout.androidaps.data.DetailedBolusInfo;
import info.nightscout.androidaps.data.IobTotal;
import info.nightscout.androidaps.data.Profile;
-import info.nightscout.androidaps.data.ProfileStore;
import info.nightscout.androidaps.db.BgReading;
import info.nightscout.androidaps.db.CareportalEvent;
import info.nightscout.androidaps.db.DbRequest;
import info.nightscout.androidaps.db.ExtendedBolus;
import info.nightscout.androidaps.db.ProfileSwitch;
+import info.nightscout.androidaps.db.Source;
import info.nightscout.androidaps.db.TempTarget;
import info.nightscout.androidaps.db.TemporaryBasal;
+import info.nightscout.androidaps.interfaces.DatabaseHelperInterface;
+import info.nightscout.androidaps.interfaces.IobCobCalculatorInterface;
+import info.nightscout.androidaps.interfaces.LoopInterface;
+import info.nightscout.androidaps.interfaces.ProfileFunction;
+import info.nightscout.androidaps.interfaces.ProfileStore;
import info.nightscout.androidaps.interfaces.PumpInterface;
+import info.nightscout.androidaps.interfaces.UploadQueueInterface;
+import info.nightscout.androidaps.logging.AAPSLogger;
import info.nightscout.androidaps.logging.L;
import info.nightscout.androidaps.logging.LTag;
-import info.nightscout.androidaps.logging.StacktraceLoggerWrapper;
import info.nightscout.androidaps.plugins.aps.loop.APSResult;
import info.nightscout.androidaps.plugins.aps.loop.DeviceStatus;
-import info.nightscout.androidaps.plugins.aps.loop.LoopPlugin;
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction;
-import info.nightscout.androidaps.plugins.iob.iobCobCalculator.IobCobCalculatorPlugin;
import info.nightscout.androidaps.receivers.ReceiverStatusStore;
import info.nightscout.androidaps.utils.DateUtil;
import info.nightscout.androidaps.utils.JsonHelper;
-import info.nightscout.androidaps.utils.SP;
+import info.nightscout.androidaps.utils.resources.ResourceHelper;
+import info.nightscout.androidaps.utils.sharedPreferences.SP;
/**
* Created by mike on 26.05.2017.
*/
+@Singleton
public class NSUpload {
- private static Logger log = StacktraceLoggerWrapper.getLogger(LTag.NSCLIENT);
- public static void uploadTempBasalStartAbsolute(TemporaryBasal temporaryBasal, Double originalExtendedAmount) {
+ private final HasAndroidInjector injector;
+ private final AAPSLogger aapsLogger;
+ private final ResourceHelper resourceHelper;
+ private final SP sp;
+ private final Context context;
+ private final UploadQueueInterface uploadQueue;
+ private final DatabaseHelperInterface databaseHelper;
+
+ @Inject
+ public NSUpload(
+ HasAndroidInjector injector,
+ AAPSLogger aapsLogger,
+ ResourceHelper resourceHelper,
+ SP sp,
+ Context context,
+ UploadQueueInterface uploadQueue,
+ DatabaseHelperInterface databaseHelper
+ ) {
+ this.injector = injector;
+ this.aapsLogger = aapsLogger;
+ this.resourceHelper = resourceHelper;
+ this.sp = sp;
+ this.context = context;
+ this.uploadQueue = uploadQueue;
+ this.databaseHelper = databaseHelper;
+ }
+
+ public void uploadTempBasalStartAbsolute(TemporaryBasal temporaryBasal, Double originalExtendedAmount) {
try {
JSONObject data = new JSONObject();
data.put("eventType", CareportalEvent.TEMPBASAL);
@@ -63,19 +95,18 @@ public class NSUpload {
if (temporaryBasal.pumpId != 0)
data.put("pumpId", temporaryBasal.pumpId);
data.put("created_at", DateUtil.toISOString(temporaryBasal.date));
- data.put("enteredBy", "openaps://" + MainApp.gs(R.string.app_name));
+ data.put("enteredBy", "openaps://" + "AndroidAPS");
if (originalExtendedAmount != null)
data.put("originalExtendedAmount", originalExtendedAmount); // for back synchronization
- UploadQueue.add(new DbRequest("dbAdd", "treatments", data));
+ uploadQueue.add(new DbRequest("dbAdd", "treatments", data));
} catch (JSONException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
}
- public static void uploadTempBasalStartPercent(TemporaryBasal temporaryBasal, Profile profile) {
+ public void uploadTempBasalStartPercent(TemporaryBasal temporaryBasal, Profile profile) {
try {
- SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(MainApp.instance().getApplicationContext());
- boolean useAbsolute = SP.getBoolean("ns_sync_use_absolute", false);
+ boolean useAbsolute = sp.getBoolean("ns_sync_use_absolute", false);
double absoluteRate = 0;
if (profile != null) {
absoluteRate = profile.getBasal(temporaryBasal.date) * temporaryBasal.percentRate / 100d;
@@ -97,31 +128,31 @@ public class NSUpload {
if (temporaryBasal.pumpId != 0)
data.put("pumpId", temporaryBasal.pumpId);
data.put("created_at", DateUtil.toISOString(temporaryBasal.date));
- data.put("enteredBy", "openaps://" + MainApp.gs(R.string.app_name));
- UploadQueue.add(new DbRequest("dbAdd", "treatments", data));
+ data.put("enteredBy", "openaps://" + "AndroidAPS");
+ uploadQueue.add(new DbRequest("dbAdd", "treatments", data));
}
} catch (JSONException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
}
- public static void uploadTempBasalEnd(long time, boolean isFakedTempBasal, long pumpId) {
+ public void uploadTempBasalEnd(long time, boolean isFakedTempBasal, long pumpId) {
try {
JSONObject data = new JSONObject();
data.put("eventType", CareportalEvent.TEMPBASAL);
data.put("created_at", DateUtil.toISOString(time));
- data.put("enteredBy", "openaps://" + MainApp.gs(R.string.app_name));
+ data.put("enteredBy", "openaps://" + "AndroidAPS");
if (isFakedTempBasal)
data.put("isFakedTempBasal", isFakedTempBasal);
if (pumpId != 0)
data.put("pumpId", pumpId);
- UploadQueue.add(new DbRequest("dbAdd", "treatments", data));
+ uploadQueue.add(new DbRequest("dbAdd", "treatments", data));
} catch (JSONException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
}
- public static void uploadExtendedBolus(ExtendedBolus extendedBolus) {
+ public void uploadExtendedBolus(ExtendedBolus extendedBolus) {
try {
JSONObject data = new JSONObject();
data.put("eventType", CareportalEvent.COMBOBOLUS);
@@ -133,14 +164,14 @@ public class NSUpload {
if (extendedBolus.pumpId != 0)
data.put("pumpId", extendedBolus.pumpId);
data.put("created_at", DateUtil.toISOString(extendedBolus.date));
- data.put("enteredBy", "openaps://" + MainApp.gs(R.string.app_name));
- UploadQueue.add(new DbRequest("dbAdd", "treatments", data));
+ data.put("enteredBy", "openaps://" + "AndroidAPS");
+ uploadQueue.add(new DbRequest("dbAdd", "treatments", data));
} catch (JSONException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
}
- public static void uploadExtendedBolusEnd(long time, long pumpId) {
+ public void uploadExtendedBolusEnd(long time, long pumpId) {
try {
JSONObject data = new JSONObject();
data.put("eventType", CareportalEvent.COMBOBOLUS);
@@ -150,59 +181,58 @@ public class NSUpload {
data.put("enteredinsulin", 0);
data.put("relative", 0);
data.put("created_at", DateUtil.toISOString(time));
- data.put("enteredBy", "openaps://" + MainApp.gs(R.string.app_name));
+ data.put("enteredBy", "openaps://" + "AndroidAPS");
if (pumpId != 0)
data.put("pumpId", pumpId);
- UploadQueue.add(new DbRequest("dbAdd", "treatments", data));
+ uploadQueue.add(new DbRequest("dbAdd", "treatments", data));
} catch (JSONException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
}
- public static void uploadDeviceStatus(LoopPlugin loopPlugin, IobCobCalculatorPlugin iobCobCalculatorPlugin, ProfileFunction profileFunction, PumpInterface pumpInterface, ReceiverStatusStore receiverStatusStore) {
+ public void uploadDeviceStatus(LoopInterface loopPlugin, IobCobCalculatorInterface iobCobCalculatorPlugin, ProfileFunction profileFunction, PumpInterface pumpInterface, ReceiverStatusStore receiverStatusStore, String version) {
Profile profile = profileFunction.getProfile();
String profileName = profileFunction.getProfileName();
if (profile == null) {
- log.error("Profile is null. Skipping upload");
+ aapsLogger.error("Profile is null. Skipping upload");
return;
}
- DeviceStatus deviceStatus = new DeviceStatus();
+ DeviceStatus deviceStatus = new DeviceStatus(aapsLogger);
try {
- LoopPlugin.LastRun lastRun = loopPlugin.lastRun;
- if (lastRun != null && lastRun.lastAPSRun > System.currentTimeMillis() - 300 * 1000L) {
+ LoopInterface.LastRun lastRun = loopPlugin.getLastRun();
+ if (lastRun != null && lastRun.getLastAPSRun() > System.currentTimeMillis() - 300 * 1000L) {
// do not send if result is older than 1 min
- APSResult apsResult = lastRun.request;
- apsResult.json().put("timestamp", DateUtil.toISOString(lastRun.lastAPSRun));
+ APSResult apsResult = lastRun.getRequest();
+ apsResult.json().put("timestamp", DateUtil.toISOString(lastRun.getLastAPSRun()));
deviceStatus.suggested = apsResult.json();
- deviceStatus.iob = lastRun.request.iob.json();
- deviceStatus.iob.put("time", DateUtil.toISOString(lastRun.lastAPSRun));
+ deviceStatus.iob = lastRun.getRequest().iob.json();
+ deviceStatus.iob.put("time", DateUtil.toISOString(lastRun.getLastAPSRun()));
JSONObject requested = new JSONObject();
- if (lastRun.tbrSetByPump != null && lastRun.tbrSetByPump.enacted) { // enacted
- deviceStatus.enacted = lastRun.request.json();
- deviceStatus.enacted.put("rate", lastRun.tbrSetByPump.json(profile).get("rate"));
- deviceStatus.enacted.put("duration", lastRun.tbrSetByPump.json(profile).get("duration"));
+ if (lastRun.getTbrSetByPump() != null && lastRun.getTbrSetByPump().enacted) { // enacted
+ deviceStatus.enacted = lastRun.getRequest().json();
+ deviceStatus.enacted.put("rate", lastRun.getTbrSetByPump().json(profile).get("rate"));
+ deviceStatus.enacted.put("duration", lastRun.getTbrSetByPump().json(profile).get("duration"));
deviceStatus.enacted.put("recieved", true);
- requested.put("duration", lastRun.request.duration);
- requested.put("rate", lastRun.request.rate);
+ requested.put("duration", lastRun.getRequest().duration);
+ requested.put("rate", lastRun.getRequest().rate);
requested.put("temp", "absolute");
deviceStatus.enacted.put("requested", requested);
}
- if (lastRun.smbSetByPump != null && lastRun.smbSetByPump.enacted) { // enacted
+ if (lastRun.getTbrSetByPump() != null && lastRun.getTbrSetByPump().enacted) { // enacted
if (deviceStatus.enacted == null) {
- deviceStatus.enacted = lastRun.request.json();
+ deviceStatus.enacted = lastRun.getRequest().json();
}
- deviceStatus.enacted.put("smb", lastRun.smbSetByPump.bolusDelivered);
- requested.put("smb", lastRun.request.smb);
+ deviceStatus.enacted.put("smb", lastRun.getTbrSetByPump().bolusDelivered);
+ requested.put("smb", lastRun.getRequest().smb);
deviceStatus.enacted.put("requested", requested);
}
} else {
- if (L.isEnabled(LTag.NSCLIENT))
- log.debug("OpenAPS data too old to upload, sending iob only");
+ aapsLogger.debug(LTag.NSCLIENT, "OpenAPS data too old to upload, sending iob only");
IobTotal[] iob = iobCobCalculatorPlugin.calculateIobArrayInDia(profile);
if (iob.length > 0) {
deviceStatus.iob = iob[0].json();
@@ -210,7 +240,7 @@ public class NSUpload {
}
}
deviceStatus.device = "openaps://" + Build.MANUFACTURER + " " + Build.MODEL;
- JSONObject pumpstatus = pumpInterface.getJSONStatus(profile, profileName);
+ JSONObject pumpstatus = pumpInterface.getJSONStatus(profile, profileName, version);
if (pumpstatus != null) {
deviceStatus.pump = pumpstatus;
}
@@ -219,13 +249,13 @@ public class NSUpload {
deviceStatus.uploaderBattery = batteryLevel;
deviceStatus.created_at = DateUtil.toISOString(new Date());
- UploadQueue.add(new DbRequest("dbAdd", "devicestatus", deviceStatus.mongoRecord()));
+ uploadQueue.add(new DbRequest("dbAdd", "devicestatus", deviceStatus.mongoRecord()));
} catch (JSONException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
}
- public static void uploadTreatmentRecord(DetailedBolusInfo detailedBolusInfo) {
+ public void uploadTreatmentRecord(DetailedBolusInfo detailedBolusInfo) {
JSONObject data = new JSONObject();
try {
data.put("eventType", detailedBolusInfo.eventType);
@@ -248,21 +278,21 @@ public class NSUpload {
data.put("notes", detailedBolusInfo.notes);
}
} catch (JSONException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
uploadCareportalEntryToNS(data);
}
- public static void uploadProfileSwitch(ProfileSwitch profileSwitch) {
+ public void uploadProfileSwitch(ProfileSwitch profileSwitch) {
try {
JSONObject data = getJson(profileSwitch);
uploadCareportalEntryToNS(data);
} catch (JSONException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
}
- public static void uploadTempTarget(TempTarget tempTarget, ProfileFunction profileFunction) {
+ public void uploadTempTarget(TempTarget tempTarget, ProfileFunction profileFunction) {
try {
JSONObject data = new JSONObject();
data.put("eventType", CareportalEvent.TEMPORARYTARGET);
@@ -274,21 +304,21 @@ public class NSUpload {
data.put("units", profileFunction.getUnits());
}
data.put("created_at", DateUtil.toISOString(tempTarget.date));
- data.put("enteredBy", MainApp.gs(R.string.app_name));
+ data.put("enteredBy", "AndroidAPS");
uploadCareportalEntryToNS(data);
} catch (JSONException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
}
- public static void updateProfileSwitch(ProfileSwitch profileSwitch) {
+ public void updateProfileSwitch(ProfileSwitch profileSwitch) {
try {
JSONObject data = getJson(profileSwitch);
if (profileSwitch._id != null) {
- UploadQueue.add(new DbRequest("dbUpdate", "treatments", profileSwitch._id, data));
+ uploadQueue.add(new DbRequest("dbUpdate", "treatments", profileSwitch._id, data));
}
} catch (JSONException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
}
@@ -305,12 +335,12 @@ public class NSUpload {
data.put("percentage", profileSwitch.percentage);
}
data.put("created_at", DateUtil.toISOString(profileSwitch.date));
- data.put("enteredBy", MainApp.gs(R.string.app_name));
+ data.put("enteredBy", "AndroidAPS");
return data;
}
- public static void uploadCareportalEntryToNS(JSONObject data) {
+ public void uploadCareportalEntryToNS(JSONObject data) {
try {
if (data.has("preBolus") && data.has("carbs")) {
JSONObject prebolus = new JSONObject();
@@ -325,48 +355,48 @@ public class NSUpload {
uploadCareportalEntryToNS(prebolus);
}
DbRequest dbr = new DbRequest("dbAdd", "treatments", data);
- log.debug("Prepared: " + dbr.log());
- UploadQueue.add(dbr);
+ aapsLogger.debug("Prepared: " + dbr.log());
+ uploadQueue.add(dbr);
} catch (Exception e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
}
- public static void removeCareportalEntryFromNS(String _id) {
- UploadQueue.add(new DbRequest("dbRemove", "treatments", _id));
+ public void removeCareportalEntryFromNS(String _id) {
+ uploadQueue.add(new DbRequest("dbRemove", "treatments", _id));
}
- public static void uploadOpenAPSOffline(CareportalEvent event) {
+ public void uploadOpenAPSOffline(CareportalEvent event) {
try {
JSONObject data = new JSONObject(event.json);
data.put("created_at", DateUtil.toISOString(event.date));
- data.put("enteredBy", "openaps://" + MainApp.gs(R.string.app_name));
- UploadQueue.add(new DbRequest("dbAdd", "treatments", data));
+ data.put("enteredBy", "openaps://" + "AndroidAPS");
+ uploadQueue.add(new DbRequest("dbAdd", "treatments", data));
} catch (JSONException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
}
- public static void uploadError(String error) {
+ public void uploadError(String error) {
uploadError(error, new Date());
}
- public static void uploadError(String error, Date date) {
+ public void uploadError(String error, Date date) {
JSONObject data = new JSONObject();
try {
data.put("eventType", "Announcement");
data.put("created_at", DateUtil.toISOString(date));
- data.put("enteredBy", SP.getString("careportal_enteredby", MainApp.gs(R.string.app_name)));
+ data.put("enteredBy", sp.getString("careportal_enteredby", "AndroidAPS"));
data.put("notes", error);
data.put("isAnnouncement", true);
} catch (JSONException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
- UploadQueue.add(new DbRequest("dbAdd", "treatments", data));
+ uploadQueue.add(new DbRequest("dbAdd", "treatments", data));
}
- public static void uploadBg(BgReading reading, String source) {
+ public void uploadBg(BgReading reading, String source) {
JSONObject data = new JSONObject();
try {
data.put("device", source);
@@ -376,56 +406,56 @@ public class NSUpload {
data.put("direction", reading.direction);
data.put("type", "sgv");
} catch (JSONException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
- UploadQueue.add(new DbRequest("dbAdd", "entries", data));
+ uploadQueue.add(new DbRequest("dbAdd", "entries", data));
}
- public static void uploadAppStart() {
- if (SP.getBoolean(R.string.key_ns_logappstartedevent, true)) {
+ public void uploadAppStart() {
+ if (sp.getBoolean(R.string.key_ns_logappstartedevent, true)) {
JSONObject data = new JSONObject();
try {
data.put("eventType", "Note");
data.put("created_at", DateUtil.toISOString(new Date()));
- data.put("notes", MainApp.gs(R.string.androidaps_start) + " - " + Build.MANUFACTURER + " " + Build.MODEL);
+ data.put("notes", resourceHelper.gs(R.string.androidaps_start) + " - " + Build.MANUFACTURER + " " + Build.MODEL);
} catch (JSONException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
- UploadQueue.add(new DbRequest("dbAdd", "treatments", data));
+ uploadQueue.add(new DbRequest("dbAdd", "treatments", data));
}
}
- public static void uploadProfileStore(JSONObject profileStore) {
- if (SP.getBoolean(R.string.key_ns_uploadlocalprofile, false)) {
- UploadQueue.add(new DbRequest("dbAdd", "profile", profileStore));
+ public void uploadProfileStore(JSONObject profileStore) {
+ if (sp.getBoolean(R.string.key_ns_uploadlocalprofile, false)) {
+ uploadQueue.add(new DbRequest("dbAdd", "profile", profileStore));
}
}
- public static void uploadEvent(String careportalEvent, long time, @Nullable String notes) {
+ public void uploadEvent(String careportalEvent, long time, @Nullable String notes) {
JSONObject data = new JSONObject();
try {
data.put("eventType", careportalEvent);
data.put("created_at", DateUtil.toISOString(time));
- data.put("enteredBy", SP.getString("careportal_enteredby", MainApp.gs(R.string.app_name)));
+ data.put("enteredBy", sp.getString("careportal_enteredby", "AndroidAPS"));
if (notes != null) {
data.put("notes", notes);
}
} catch (JSONException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
- UploadQueue.add(new DbRequest("dbAdd", "treatments", data));
+ uploadQueue.add(new DbRequest("dbAdd", "treatments", data));
}
- public static void removeFoodFromNS(String _id) {
+ public void removeFoodFromNS(String _id) {
try {
- UploadQueue.add(new DbRequest("dbRemove", "food", _id));
+ uploadQueue.add(new DbRequest("dbRemove", "food", _id));
} catch (Exception e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
}
- public static void sendToXdrip(BgReading bgReading) {
+ public void sendToXdrip(BgReading bgReading) {
final String XDRIP_PLUS_NS_EMULATOR = "com.eveningoutpost.dexdrip.NS_EMULATOR";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ", Locale.US);
@@ -450,22 +480,22 @@ public class NSUpload {
bundle.putString("data", entriesBody.toString());
final Intent intent = new Intent(XDRIP_PLUS_NS_EMULATOR);
intent.putExtras(bundle).addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
- MainApp.instance().sendBroadcast(intent);
- List receivers = MainApp.instance().getPackageManager().queryBroadcastReceivers(intent, 0);
+ context.sendBroadcast(intent);
+ List receivers = context.getPackageManager().queryBroadcastReceivers(intent, 0);
if (receivers.size() < 1) {
- log.debug("No xDrip receivers found. ");
+ aapsLogger.debug("No xDrip receivers found. ");
} else {
- log.debug(receivers.size() + " xDrip receivers");
+ aapsLogger.debug(receivers.size() + " xDrip receivers");
}
} catch (JSONException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
}
- public static void createNSTreatment(JSONObject data, ProfileStore profileStore, ProfileFunction profileFunction, long eventTime) {
+ public void createNSTreatment(JSONObject data, ProfileStore profileStore, ProfileFunction profileFunction, long eventTime) {
if (JsonHelper.safeGetString(data, "eventType", "").equals(CareportalEvent.PROFILESWITCH)) {
ProfileSwitch profileSwitch = profileFunction.prepareProfileSwitch(
profileStore,
@@ -488,4 +518,28 @@ public class NSUpload {
return true;
return false;
}
+
+ public void generateCareportalEvent(String eventType, long time, String notes) {
+ CareportalEvent careportalEvent = new CareportalEvent(injector);
+ careportalEvent.source = Source.USER;
+ careportalEvent.date = time;
+ careportalEvent.json = generateJson(eventType, time, notes).toString();
+ careportalEvent.eventType = eventType;
+ databaseHelper.createOrUpdate(careportalEvent);
+ uploadEvent(eventType, time, notes);
+ }
+
+ private JSONObject generateJson(String careportalEvent, long time, String notes) {
+ JSONObject data = new JSONObject();
+ try {
+ data.put("eventType", careportalEvent);
+ data.put("created_at", DateUtil.toISOString(time));
+ data.put("mills", time);
+ data.put("enteredBy", sp.getString("careportal_enteredby", "AndroidAPS"));
+ if (!notes.isEmpty()) data.put("notes", notes);
+ } catch (JSONException ignored) {
+ }
+ return data;
+ }
+
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/data/NSMbg.java b/core/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/data/NSMbg.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/data/NSMbg.java
rename to core/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/data/NSMbg.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/data/NSSgv.java b/core/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/data/NSSgv.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/data/NSSgv.java
rename to core/src/main/java/info/nightscout/androidaps/plugins/general/nsclient/data/NSSgv.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/events/EventDismissBolusProgressIfRunning.kt b/core/src/main/java/info/nightscout/androidaps/plugins/general/overview/events/EventDismissBolusProgressIfRunning.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/general/overview/events/EventDismissBolusProgressIfRunning.kt
rename to core/src/main/java/info/nightscout/androidaps/plugins/general/overview/events/EventDismissBolusProgressIfRunning.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/events/EventOverviewBolusProgress.kt b/core/src/main/java/info/nightscout/androidaps/plugins/general/overview/events/EventOverviewBolusProgress.kt
similarity index 81%
rename from app/src/main/java/info/nightscout/androidaps/plugins/general/overview/events/EventOverviewBolusProgress.kt
rename to core/src/main/java/info/nightscout/androidaps/plugins/general/overview/events/EventOverviewBolusProgress.kt
index 52b62790da..fe43913333 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/events/EventOverviewBolusProgress.kt
+++ b/core/src/main/java/info/nightscout/androidaps/plugins/general/overview/events/EventOverviewBolusProgress.kt
@@ -1,6 +1,6 @@
package info.nightscout.androidaps.plugins.general.overview.events
-import info.nightscout.androidaps.plugins.treatments.Treatment
+import info.nightscout.androidaps.db.Treatment
import info.nightscout.androidaps.events.Event
object EventOverviewBolusProgress : Event() {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/graphExtensions/DataPointWithLabelInterface.java b/core/src/main/java/info/nightscout/androidaps/plugins/general/overview/graphExtensions/DataPointWithLabelInterface.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/general/overview/graphExtensions/DataPointWithLabelInterface.java
rename to core/src/main/java/info/nightscout/androidaps/plugins/general/overview/graphExtensions/DataPointWithLabelInterface.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/graphExtensions/PointsWithLabelGraphSeries.java b/core/src/main/java/info/nightscout/androidaps/plugins/general/overview/graphExtensions/PointsWithLabelGraphSeries.java
similarity index 96%
rename from app/src/main/java/info/nightscout/androidaps/plugins/general/overview/graphExtensions/PointsWithLabelGraphSeries.java
rename to core/src/main/java/info/nightscout/androidaps/plugins/general/overview/graphExtensions/PointsWithLabelGraphSeries.java
index eb981e9329..8058a6eef6 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/graphExtensions/PointsWithLabelGraphSeries.java
+++ b/core/src/main/java/info/nightscout/androidaps/plugins/general/overview/graphExtensions/PointsWithLabelGraphSeries.java
@@ -39,10 +39,6 @@ import com.jjoe64.graphview.series.BaseSeries;
import java.util.Iterator;
-import info.nightscout.androidaps.MainApp;
-
-// Added by Rumen for scalable text
-
/**
* Series that plots the data as points.
* The points can be different shapes or a
@@ -53,10 +49,6 @@ import info.nightscout.androidaps.MainApp;
public class PointsWithLabelGraphSeries extends BaseSeries {
// Default spSize
int spSize = 14;
- // Convert the sp to pixels
- Context context = MainApp.instance().getApplicationContext();
- float scaledTextSize = spSize * context.getResources().getDisplayMetrics().scaledDensity;
- float scaledPxSize = context.getResources().getDisplayMetrics().scaledDensity * 3f;
/**
* choose a predefined shape to render for
@@ -123,6 +115,9 @@ public class PointsWithLabelGraphSeries e
*/
@Override
public void draw(GraphView graphView, Canvas canvas, boolean isSecondScale) {
+ // Convert the sp to pixels
+ float scaledTextSize = spSize * graphView.getContext().getResources().getDisplayMetrics().scaledDensity;
+ float scaledPxSize = graphView.getContext().getResources().getDisplayMetrics().scaledDensity * 3f;
resetDataPoints();
// get data
@@ -238,7 +233,7 @@ public class PointsWithLabelGraphSeries e
mPaint.setStyle(Paint.Style.FILL_AND_STROKE);
drawArrows(points, canvas, mPaint);
if (value.getLabel() != null) {
- drawLabel45(endX, endY, value, canvas);
+ drawLabel45(endX, endY, value, canvas, scaledPxSize, scaledTextSize);
}
} else if (value.getShape() == Shape.SMB) {
mPaint.setStrokeWidth(2);
@@ -287,21 +282,21 @@ public class PointsWithLabelGraphSeries e
mPaint.setStrokeWidth(0);
canvas.drawCircle(endX, endY, scaledPxSize, mPaint);
if (value.getLabel() != null) {
- drawLabel45(endX, endY, value, canvas);
+ drawLabel45(endX, endY, value, canvas, scaledPxSize, scaledTextSize);
}
} else if (value.getShape() == Shape.ANNOUNCEMENT) {
mPaint.setStyle(Paint.Style.FILL_AND_STROKE);
mPaint.setStrokeWidth(0);
canvas.drawCircle(endX, endY, scaledPxSize, mPaint);
if (value.getLabel() != null) {
- drawLabel45(endX, endY, value, canvas);
+ drawLabel45(endX, endY, value, canvas, scaledPxSize, scaledTextSize);
}
} else if (value.getShape() == Shape.GENERAL) {
mPaint.setStyle(Paint.Style.FILL_AND_STROKE);
mPaint.setStrokeWidth(0);
canvas.drawCircle(endX, endY, scaledPxSize, mPaint);
if (value.getLabel() != null) {
- drawLabel45(endX, endY, value, canvas);
+ drawLabel45(endX, endY, value, canvas, scaledPxSize, scaledTextSize);
}
} else if (value.getShape() == Shape.EXERCISE) {
mPaint.setStrokeWidth(0);
@@ -385,7 +380,7 @@ public class PointsWithLabelGraphSeries e
canvas.restore();
}
- void drawLabel45(float endX, float endY, E value, Canvas canvas) {
+ void drawLabel45(float endX, float endY, E value, Canvas canvas, Float scaledPxSize, Float scaledTextSize) {
if (value.getLabel().startsWith("~")) {
float px = endX;
float py = endY + scaledPxSize;
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/general/overview/graphExtensions/Scale.java b/core/src/main/java/info/nightscout/androidaps/plugins/general/overview/graphExtensions/Scale.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/general/overview/graphExtensions/Scale.java
rename to core/src/main/java/info/nightscout/androidaps/plugins/general/overview/graphExtensions/Scale.java
diff --git a/core/src/main/java/info/nightscout/androidaps/plugins/general/overview/notifications/Notification.java b/core/src/main/java/info/nightscout/androidaps/plugins/general/overview/notifications/Notification.java
index b13cd74796..b43b058277 100644
--- a/core/src/main/java/info/nightscout/androidaps/plugins/general/overview/notifications/Notification.java
+++ b/core/src/main/java/info/nightscout/androidaps/plugins/general/overview/notifications/Notification.java
@@ -70,6 +70,10 @@ public class Notification {
public static final int OMNIPOD_PUMP_ALARM = 57;
public static final int TIME_OR_TIMEZONE_CHANGE = 58;
public static final int OMNIPOD_POD_NOT_ATTACHED = 59;
+ public static final int CARBS_REQUIRED = 60;
+ public static final int IMPORTANCE_HIGH = 2;
+
+ public static final String CATEGORY_ALARM = "alarm";
public static final int USERMESSAGE = 1000;
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/AutosensResult.java b/core/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/AutosensResult.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/AutosensResult.java
rename to core/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/AutosensResult.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/AutosensData.java b/core/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/data/AutosensData.java
similarity index 83%
rename from app/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/AutosensData.java
rename to core/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/data/AutosensData.java
index 6b3b4ef3de..51a1b58c18 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/AutosensData.java
+++ b/core/src/main/java/info/nightscout/androidaps/plugins/iob/iobCobCalculator/data/AutosensData.java
@@ -1,4 +1,4 @@
-package info.nightscout.androidaps.plugins.iob.iobCobCalculator;
+package info.nightscout.androidaps.plugins.iob.iobCobCalculator.data;
import java.util.ArrayList;
import java.util.List;
@@ -8,18 +8,17 @@ import javax.inject.Inject;
import dagger.android.HasAndroidInjector;
import info.nightscout.androidaps.Constants;
-import info.nightscout.androidaps.R;
+import info.nightscout.androidaps.core.R;
import info.nightscout.androidaps.data.Profile;
+import info.nightscout.androidaps.db.Treatment;
+import info.nightscout.androidaps.interfaces.ProfileFunction;
import info.nightscout.androidaps.logging.AAPSLogger;
import info.nightscout.androidaps.logging.LTag;
import info.nightscout.androidaps.plugins.aps.openAPSSMB.SMBDefaults;
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction;
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.DataPointWithLabelInterface;
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.PointsWithLabelGraphSeries;
import info.nightscout.androidaps.plugins.general.overview.graphExtensions.Scale;
-import info.nightscout.androidaps.plugins.sensitivity.SensitivityAAPSPlugin;
-import info.nightscout.androidaps.plugins.sensitivity.SensitivityWeightedAveragePlugin;
-import info.nightscout.androidaps.plugins.treatments.Treatment;
+import info.nightscout.androidaps.plugins.iob.iobCobCalculator.AutosensResult;
import info.nightscout.androidaps.utils.DateUtil;
import info.nightscout.androidaps.utils.resources.ResourceHelper;
import info.nightscout.androidaps.utils.sharedPreferences.SP;
@@ -29,9 +28,8 @@ public class AutosensData implements DataPointWithLabelInterface {
@Inject AAPSLogger aapsLogger;
@Inject SP sp;
@Inject ResourceHelper resourceHelper;
- @Inject SensitivityWeightedAveragePlugin sensitivityWeightedAveragePlugin;
- @Inject SensitivityAAPSPlugin sensitivityAAPSPlugin;
@Inject ProfileFunction profileFunction;
+ @Inject DateUtil dateUtil;
public AutosensData(HasAndroidInjector injector) {
injector.androidInjector().inject(this);
@@ -41,23 +39,23 @@ public class AutosensData implements DataPointWithLabelInterface {
this.chartTime = chartTime;
}
- class CarbsInPast {
+ public class CarbsInPast {
long time = 0L;
double carbs = 0d;
- double min5minCarbImpact = 0d;
+ public double min5minCarbImpact = 0d;
double remaining = 0d;
- CarbsInPast(Treatment t) {
+ public CarbsInPast(Treatment t, boolean isAAPSOrWeighted) {
time = t.date;
carbs = t.carbs;
remaining = t.carbs;
- if (sensitivityAAPSPlugin.isEnabled() || sensitivityWeightedAveragePlugin.isEnabled()) {
+ if (isAAPSOrWeighted) {
double maxAbsorptionHours = sp.getDouble(R.string.key_absorption_maxtime, Constants.DEFAULT_MAX_ABSORPTION_TIME);
Profile profile = profileFunction.getProfile(t.date);
double sens = profile.getIsfMgdl(t.date);
double ic = profile.getIc(t.date);
min5minCarbImpact = t.carbs / (maxAbsorptionHours * 60 / 5) * sens / ic;
- aapsLogger.debug(LTag.AUTOSENS, "Min 5m carbs impact for " + carbs + "g @" + DateUtil.dateAndTimeString(t.date) + " for " + maxAbsorptionHours + "h calculated to " + min5minCarbImpact + " ISF: " + sens + " IC: " + ic);
+ aapsLogger.debug(LTag.AUTOSENS, "Min 5m carbs impact for " + carbs + "g @" + dateUtil.dateAndTimeString(t.date) + " for " + maxAbsorptionHours + "h calculated to " + min5minCarbImpact + " ISF: " + sens + " IC: " + ic);
} else {
min5minCarbImpact = sp.getDouble(R.string.key_openapsama_min_5m_carbimpact, SMBDefaults.min_5m_carbimpact);
}
@@ -72,7 +70,7 @@ public class AutosensData implements DataPointWithLabelInterface {
@Override
public String toString() {
- return String.format(Locale.ENGLISH, "CarbsInPast: time: %s carbs: %.02f min5minCI: %.02f remaining: %.2f", DateUtil.dateAndTimeString(time), carbs, min5minCarbImpact, remaining);
+ return String.format(Locale.ENGLISH, "CarbsInPast: time: %s carbs: %.02f min5minCI: %.02f remaining: %.2f", dateUtil.dateAndTimeString(time), carbs, min5minCarbImpact, remaining);
}
}
@@ -82,8 +80,8 @@ public class AutosensData implements DataPointWithLabelInterface {
public String pastSensitivity = "";
public double deviation = 0d;
public boolean validDeviation = false;
- List activeCarbsList = new ArrayList<>();
- double absorbed = 0d;
+ public List activeCarbsList = new ArrayList<>();
+ public double absorbed = 0d;
public double carbsFromBolus = 0d;
public double cob = 0;
public double bgi = 0d;
@@ -108,7 +106,7 @@ public class AutosensData implements DataPointWithLabelInterface {
@Override
public String toString() {
return String.format(Locale.ENGLISH, "AutosensData: %s pastSensitivity=%s delta=%.02f avgDelta=%.02f bgi=%.02f deviation=%.02f avgDeviation=%.02f absorbed=%.02f carbsFromBolus=%.02f cob=%.02f autosensRatio=%.02f slopeFromMaxDeviation=%.02f slopeFromMinDeviation=%.02f activeCarbsList=%s",
- DateUtil.dateAndTimeString(time), pastSensitivity, delta, avgDelta, bgi, deviation, avgDeviation, absorbed, carbsFromBolus, cob, autosensResult.ratio, slopeFromMaxDeviation, slopeFromMinDeviation, activeCarbsList.toString());
+ dateUtil.dateAndTimeString(time), pastSensitivity, delta, avgDelta, bgi, deviation, avgDeviation, absorbed, carbsFromBolus, cob, autosensResult.ratio, slopeFromMaxDeviation, slopeFromMinDeviation, activeCarbsList.toString());
}
public List cloneCarbsList() {
@@ -122,9 +120,9 @@ public class AutosensData implements DataPointWithLabelInterface {
}
// remove carbs older than timeframe
- public void removeOldCarbs(long toTime) {
+ public void removeOldCarbs(long toTime, boolean isAAPSOrWeighted) {
double maxAbsorptionHours = Constants.DEFAULT_MAX_ABSORPTION_TIME;
- if (sensitivityAAPSPlugin.isEnabled() || sensitivityWeightedAveragePlugin.isEnabled()) {
+ if (isAAPSOrWeighted) {
maxAbsorptionHours = sp.getDouble(R.string.key_absorption_maxtime, Constants.DEFAULT_MAX_ABSORPTION_TIME);
} else {
maxAbsorptionHours = sp.getDouble(R.string.key_absorption_cutoff, Constants.DEFAULT_MAX_ABSORPTION_TIME);
@@ -135,7 +133,7 @@ public class AutosensData implements DataPointWithLabelInterface {
activeCarbsList.remove(i--);
if (c.remaining > 0)
cob -= c.remaining;
- aapsLogger.debug(LTag.AUTOSENS, "Removing carbs at " + DateUtil.dateAndTimeString(toTime) + " after " + maxAbsorptionHours + "h > " + c.toString());
+ aapsLogger.debug(LTag.AUTOSENS, "Removing carbs at " + dateUtil.dateAndTimeString(toTime) + " after " + maxAbsorptionHours + "h > " + c.toString());
}
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/PumpPluginAbstract.java b/core/src/main/java/info/nightscout/androidaps/plugins/pump/common/PumpPluginAbstract.java
similarity index 94%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/PumpPluginAbstract.java
rename to core/src/main/java/info/nightscout/androidaps/plugins/pump/common/PumpPluginAbstract.java
index 03c36a265c..ed44321d7d 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/PumpPluginAbstract.java
+++ b/core/src/main/java/info/nightscout/androidaps/plugins/pump/common/PumpPluginAbstract.java
@@ -13,13 +13,13 @@ import org.json.JSONObject;
import java.util.Date;
import dagger.android.HasAndroidInjector;
-import info.nightscout.androidaps.BuildConfig;
-import info.nightscout.androidaps.R;
+import info.nightscout.androidaps.core.R;
import info.nightscout.androidaps.data.DetailedBolusInfo;
import info.nightscout.androidaps.data.Profile;
import info.nightscout.androidaps.data.PumpEnactResult;
import info.nightscout.androidaps.db.ExtendedBolus;
import info.nightscout.androidaps.db.TemporaryBasal;
+import info.nightscout.androidaps.db.Treatment;
import info.nightscout.androidaps.events.EventAppExit;
import info.nightscout.androidaps.events.EventCustomActionsChanged;
import info.nightscout.androidaps.interfaces.ActivePluginProvider;
@@ -37,9 +37,6 @@ import info.nightscout.androidaps.plugins.general.overview.events.EventOverviewB
import info.nightscout.androidaps.plugins.pump.common.data.PumpStatus;
import info.nightscout.androidaps.plugins.pump.common.defs.PumpDriverState;
import info.nightscout.androidaps.plugins.pump.common.defs.PumpType;
-import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.RileyLinkService;
-import info.nightscout.androidaps.plugins.pump.medtronic.data.MedtronicHistoryData;
-import info.nightscout.androidaps.plugins.treatments.Treatment;
import info.nightscout.androidaps.utils.DateUtil;
import info.nightscout.androidaps.utils.DecimalFormatter;
import info.nightscout.androidaps.utils.FabricPrivacy;
@@ -66,6 +63,7 @@ public abstract class PumpPluginAbstract extends PumpPluginBase implements PumpI
protected ResourceHelper resourceHelper;
protected CommandQueueProvider commandQueue;
protected SP sp;
+ protected DateUtil dateUtil;
/*
protected static final PumpEnactResult OPERATION_NOT_SUPPORTED = new PumpEnactResult().success(false)
@@ -93,7 +91,8 @@ public abstract class PumpPluginAbstract extends PumpPluginBase implements PumpI
ActivePluginProvider activePlugin,
SP sp,
Context context,
- FabricPrivacy fabricPrivacy
+ FabricPrivacy fabricPrivacy,
+ DateUtil dateUtil
) {
super(pluginDescription, injector, aapsLogger, resourceHelper, commandQueue);
@@ -108,7 +107,7 @@ public abstract class PumpPluginAbstract extends PumpPluginBase implements PumpI
pumpDescription.setPumpDescription(pumpType);
this.pumpType = pumpType;
-
+ this.dateUtil = dateUtil;
}
@@ -119,8 +118,6 @@ public abstract class PumpPluginAbstract extends PumpPluginBase implements PumpI
protected void onStart() {
super.onStart();
- aapsLogger.debug(LTag.PUMP, this.deviceID() + " onStart()");
-
initPumpStatusData();
Intent intent = new Intent(context, getServiceClass());
@@ -328,9 +325,9 @@ public abstract class PumpPluginAbstract extends PumpPluginBase implements PumpI
@NonNull @Override
- public JSONObject getJSONStatus(Profile profile, String profileName) {
+ public JSONObject getJSONStatus(Profile profile, String profileName, String version) {
- if ((getPumpStatusData().lastConnection + 5 * 60 * 1000L) < System.currentTimeMillis()) {
+ if ((getPumpStatusData().lastConnection + 60 * 60 * 1000L) < System.currentTimeMillis()) {
return new JSONObject();
}
@@ -341,7 +338,7 @@ public abstract class PumpPluginAbstract extends PumpPluginBase implements PumpI
try {
battery.put("percent", getPumpStatusData().batteryRemaining);
status.put("status", getPumpStatusData().pumpStatusType != null ? getPumpStatusData().pumpStatusType.getStatus() : "normal");
- extended.put("Version", BuildConfig.VERSION_NAME + "-" + BuildConfig.BUILDVERSION);
+ extended.put("Version", version);
try {
extended.put("ActiveProfile", profileName);
} catch (Exception ignored) {
@@ -351,14 +348,14 @@ public abstract class PumpPluginAbstract extends PumpPluginBase implements PumpI
if (tb != null) {
extended.put("TempBasalAbsoluteRate",
tb.tempBasalConvertedToAbsolute(System.currentTimeMillis(), profile));
- extended.put("TempBasalStart", DateUtil.dateAndTimeString(tb.date));
+ extended.put("TempBasalStart", dateUtil.dateAndTimeString(tb.date));
extended.put("TempBasalRemaining", tb.getPlannedRemainingMinutes());
}
ExtendedBolus eb = activePlugin.getActiveTreatments().getExtendedBolusFromHistory(System.currentTimeMillis());
if (eb != null) {
extended.put("ExtendedBolusAbsoluteRate", eb.absoluteRate());
- extended.put("ExtendedBolusStart", DateUtil.dateAndTimeString(eb.date));
+ extended.put("ExtendedBolusStart", dateUtil.dateAndTimeString(eb.date));
extended.put("ExtendedBolusRemaining", eb.getPlannedRemainingMinutes());
}
@@ -417,13 +414,13 @@ public abstract class PumpPluginAbstract extends PumpPluginBase implements PumpI
// neither carbs nor bolus requested
aapsLogger.error("deliverTreatment: Invalid input");
return new PumpEnactResult(getInjector()).success(false).enacted(false).bolusDelivered(0d).carbsDelivered(0d)
- .comment(getResourceHelper().gs(R.string.danar_invalidinput));
+ .comment(getResourceHelper().gs(R.string.invalidinput));
} else if (detailedBolusInfo.insulin > 0) {
// bolus needed, ask pump to deliver it
return deliverBolus(detailedBolusInfo);
} else {
- if (MedtronicHistoryData.doubleBolusDebug)
- aapsLogger.debug("DoubleBolusDebug: deliverTreatment::(carb only entry)");
+ //if (MedtronicHistoryData.doubleBolusDebug)
+ // aapsLogger.debug("DoubleBolusDebug: deliverTreatment::(carb only entry)");
// no bolus required, carb only treatment
activePlugin.getActiveTreatments().addToHistoryTreatment(detailedBolusInfo, true);
@@ -437,7 +434,7 @@ public abstract class PumpPluginAbstract extends PumpPluginBase implements PumpI
aapsLogger.debug(LTag.PUMP, "deliverTreatment: Carb only treatment.");
return new PumpEnactResult(getInjector()).success(true).enacted(true).bolusDelivered(0d)
- .carbsDelivered(detailedBolusInfo.carbs).comment(getResourceHelper().gs(R.string.virtualpump_resultok));
+ .carbsDelivered(detailedBolusInfo.carbs).comment(getResourceHelper().gs(R.string.common_resultok));
}
} finally {
triggerUIChange();
diff --git a/core/src/main/java/info/nightscout/androidaps/plugins/pump/common/ble/BlePreCheck.kt b/core/src/main/java/info/nightscout/androidaps/plugins/pump/common/ble/BlePreCheck.kt
index 497ec61fbc..6af48de667 100644
--- a/core/src/main/java/info/nightscout/androidaps/plugins/pump/common/ble/BlePreCheck.kt
+++ b/core/src/main/java/info/nightscout/androidaps/plugins/pump/common/ble/BlePreCheck.kt
@@ -27,7 +27,7 @@ class BlePreCheck @Inject constructor(
fun prerequisitesCheck(activity: AppCompatActivity): Boolean {
if (!activity.packageManager.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) {
- OKDialog.show(activity, resourceHelper.gs(R.string.message), resourceHelper.gs(R.string.rileylink_scanner_ble_not_supported))
+ OKDialog.show(activity, resourceHelper.gs(R.string.message), resourceHelper.gs(R.string.ble_not_supported))
return false
} else {
// Use this check to determine whether BLE is supported on the device. Then
@@ -41,7 +41,7 @@ class BlePreCheck @Inject constructor(
// Ensures Bluetooth is available on the device and it is enabled. If not,
// displays a dialog requesting user permission to enable Bluetooth.
if (bluetoothAdapter == null || !bluetoothAdapter.isEnabled) {
- OKDialog.show(activity, resourceHelper.gs(R.string.message), resourceHelper.gs(R.string.rileylink_scanner_ble_not_enabled))
+ OKDialog.show(activity, resourceHelper.gs(R.string.message), resourceHelper.gs(R.string.ble_not_enabled))
return false
} else {
// Will request that GPS be enabled for devices running Marshmallow or newer.
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/bolusInfo/DetailedBolusInfoStorage.kt b/core/src/main/java/info/nightscout/androidaps/plugins/pump/common/bolusInfo/DetailedBolusInfoStorage.kt
similarity index 95%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/bolusInfo/DetailedBolusInfoStorage.kt
rename to core/src/main/java/info/nightscout/androidaps/plugins/pump/common/bolusInfo/DetailedBolusInfoStorage.kt
index 51a63f62bb..b74fc2ac00 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/bolusInfo/DetailedBolusInfoStorage.kt
+++ b/core/src/main/java/info/nightscout/androidaps/plugins/pump/common/bolusInfo/DetailedBolusInfoStorage.kt
@@ -2,9 +2,7 @@ package info.nightscout.androidaps.plugins.pump.common.bolusInfo
import info.nightscout.androidaps.data.DetailedBolusInfo
import info.nightscout.androidaps.logging.AAPSLogger
-import info.nightscout.androidaps.logging.L
import info.nightscout.androidaps.logging.LTag
-import info.nightscout.androidaps.logging.StacktraceLoggerWrapper
import info.nightscout.androidaps.utils.T
import java.util.*
import javax.inject.Inject
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/data/DoseSettings.java b/core/src/main/java/info/nightscout/androidaps/plugins/pump/common/data/DoseSettings.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/data/DoseSettings.java
rename to core/src/main/java/info/nightscout/androidaps/plugins/pump/common/data/DoseSettings.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/data/PumpStatus.java b/core/src/main/java/info/nightscout/androidaps/plugins/pump/common/data/PumpStatus.java
similarity index 89%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/data/PumpStatus.java
rename to core/src/main/java/info/nightscout/androidaps/plugins/pump/common/data/PumpStatus.java
index 34a3418902..08c8e60d56 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/data/PumpStatus.java
+++ b/core/src/main/java/info/nightscout/androidaps/plugins/pump/common/data/PumpStatus.java
@@ -2,7 +2,7 @@ package info.nightscout.androidaps.plugins.pump.common.data;
import java.util.Date;
-import info.nightscout.androidaps.data.ProfileStore;
+import info.nightscout.androidaps.interfaces.ProfileStore;
import info.nightscout.androidaps.plugins.pump.common.defs.PumpStatusType;
import info.nightscout.androidaps.plugins.pump.common.defs.PumpType;
import info.nightscout.androidaps.utils.DateUtil;
@@ -49,7 +49,7 @@ public abstract class PumpStatus {
public int tempBasalRatio = 0;
public int tempBasalRemainMin = 0;
public Date tempBasalStart;
- private PumpType pumpType;
+ public PumpType pumpType;
//protected PumpDescription pumpDescription;
@@ -69,9 +69,20 @@ public abstract class PumpStatus {
this.lastConnection = System.currentTimeMillis();
}
+
public void setLastFailedCommunicationToNow() {
this.lastErrorConnection = System.currentTimeMillis();
}
+
public abstract String getErrorInfo();
+
+
+ public abstract E getCustomData(String key, Class clazz);
+
+ public String getCustomDataAsString(String key) {
+ return getCustomData(key, String.class);
+ }
+
+
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/data/TempBasalPair.java b/core/src/main/java/info/nightscout/androidaps/plugins/pump/common/data/TempBasalPair.java
similarity index 93%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/data/TempBasalPair.java
rename to core/src/main/java/info/nightscout/androidaps/plugins/pump/common/data/TempBasalPair.java
index 08ff0c3b49..5a1e0b4249 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/data/TempBasalPair.java
+++ b/core/src/main/java/info/nightscout/androidaps/plugins/pump/common/data/TempBasalPair.java
@@ -2,11 +2,6 @@ package info.nightscout.androidaps.plugins.pump.common.data;
import com.google.gson.annotations.Expose;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import info.nightscout.androidaps.logging.L;
-
public class TempBasalPair {
@Expose
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/defs/DoseStepSize.java b/core/src/main/java/info/nightscout/androidaps/plugins/pump/common/defs/DoseStepSize.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/defs/DoseStepSize.java
rename to core/src/main/java/info/nightscout/androidaps/plugins/pump/common/defs/DoseStepSize.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/defs/PumpCapability.java b/core/src/main/java/info/nightscout/androidaps/plugins/pump/common/defs/PumpCapability.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/defs/PumpCapability.java
rename to core/src/main/java/info/nightscout/androidaps/plugins/pump/common/defs/PumpCapability.java
diff --git a/core/src/main/java/info/nightscout/androidaps/plugins/pump/common/defs/PumpDeviceState.java b/core/src/main/java/info/nightscout/androidaps/plugins/pump/common/defs/PumpDeviceState.java
new file mode 100644
index 0000000000..4a9814c490
--- /dev/null
+++ b/core/src/main/java/info/nightscout/androidaps/plugins/pump/common/defs/PumpDeviceState.java
@@ -0,0 +1,29 @@
+package info.nightscout.androidaps.plugins.pump.common.defs;
+
+import info.nightscout.androidaps.core.R;
+
+/**
+ * Created by andy on 6/11/18.
+ */
+public enum PumpDeviceState {
+
+ NeverContacted(R.string.pump_status_never_contacted), //
+ Sleeping(R.string.pump_status_sleeping), //
+ WakingUp(R.string.pump_status_waking_up), //
+ Active(R.string.pump_status_active), //
+ ErrorWhenCommunicating(R.string.pump_status_error_comm), //
+ TimeoutWhenCommunicating(R.string.pump_status_timeout_comm), //
+ // ProblemContacting(R.string.medtronic_pump_status_problem_contacting), //
+ PumpUnreachable(R.string.pump_status_pump_unreachable), //
+ InvalidConfiguration(R.string.pump_status_invalid_config);
+
+ Integer resourceId;
+
+ PumpDeviceState(int resourceId) {
+ this.resourceId = resourceId;
+ }
+
+ public Integer getResourceId() {
+ return resourceId;
+ }
+}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/defs/PumpDriverState.java b/core/src/main/java/info/nightscout/androidaps/plugins/pump/common/defs/PumpDriverState.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/defs/PumpDriverState.java
rename to core/src/main/java/info/nightscout/androidaps/plugins/pump/common/defs/PumpDriverState.java
diff --git a/core/src/main/java/info/nightscout/androidaps/plugins/pump/common/defs/PumpHistoryEntryGroup.java b/core/src/main/java/info/nightscout/androidaps/plugins/pump/common/defs/PumpHistoryEntryGroup.java
new file mode 100644
index 0000000000..d17244615f
--- /dev/null
+++ b/core/src/main/java/info/nightscout/androidaps/plugins/pump/common/defs/PumpHistoryEntryGroup.java
@@ -0,0 +1,66 @@
+package info.nightscout.androidaps.plugins.pump.common.defs;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+import info.nightscout.androidaps.core.R;
+import info.nightscout.androidaps.utils.resources.ResourceHelper;
+
+
+/**
+ * This file was taken from GGC - GNU Gluco Control (ggc.sourceforge.net), application for diabetes
+ * management and modified/extended for AAPS.
+ *
+ * Author: Andy {andy.rozman@gmail.com}
+ */
+
+public enum PumpHistoryEntryGroup {
+
+ All(R.string.history_group_all),
+ Bolus(R.string.history_group_bolus),
+ Basal(R.string.history_group_basal),
+ Prime(R.string.history_group_prime),
+ Configuration(R.string.history_group_configuration),
+ Alarm(R.string.history_group_alarm),
+ Glucose(R.string.history_group_glucose),
+ Notification(R.string.history_group_notification),
+ Statistic(R.string.history_group_statistic),
+ Unknown(R.string.history_group_unknown),
+ ;
+
+ private int resourceId;
+ private String translated;
+
+ private static List translatedList;
+
+ PumpHistoryEntryGroup(int resourceId) {
+ this.resourceId = resourceId;
+ }
+
+ private static void doTranslation(ResourceHelper resourceHelper) {
+ translatedList = new ArrayList<>();
+
+ for (PumpHistoryEntryGroup pumpHistoryEntryGroup : values()) {
+ pumpHistoryEntryGroup.translated = resourceHelper.gs(pumpHistoryEntryGroup.resourceId);
+ translatedList.add(pumpHistoryEntryGroup);
+ }
+ }
+
+ public static List getTranslatedList(ResourceHelper resourceHelper) {
+ if (translatedList == null) doTranslation(resourceHelper);
+ return translatedList;
+ }
+
+ public int getResourceId() {
+ return resourceId;
+ }
+
+ public String getTranslated() {
+ return translated;
+ }
+
+ public String toString() {
+ return this.translated;
+ }
+}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/defs/PumpStatusType.java b/core/src/main/java/info/nightscout/androidaps/plugins/pump/common/defs/PumpStatusType.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/defs/PumpStatusType.java
rename to core/src/main/java/info/nightscout/androidaps/plugins/pump/common/defs/PumpStatusType.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/defs/PumpTempBasalType.java b/core/src/main/java/info/nightscout/androidaps/plugins/pump/common/defs/PumpTempBasalType.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/defs/PumpTempBasalType.java
rename to core/src/main/java/info/nightscout/androidaps/plugins/pump/common/defs/PumpTempBasalType.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/defs/PumpType.java b/core/src/main/java/info/nightscout/androidaps/plugins/pump/common/defs/PumpType.java
similarity index 98%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/defs/PumpType.java
rename to core/src/main/java/info/nightscout/androidaps/plugins/pump/common/defs/PumpType.java
index 4e80cafd12..0ff5ac3688 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/defs/PumpType.java
+++ b/core/src/main/java/info/nightscout/androidaps/plugins/pump/common/defs/PumpType.java
@@ -4,11 +4,11 @@ package info.nightscout.androidaps.plugins.pump.common.defs;
import java.util.HashMap;
import java.util.Map;
-import info.nightscout.androidaps.MainApp;
-import info.nightscout.androidaps.R;
+import info.nightscout.androidaps.core.R;
import info.nightscout.androidaps.plugins.common.ManufacturerType;
import info.nightscout.androidaps.plugins.pump.common.data.DoseSettings;
import info.nightscout.androidaps.utils.Round;
+import info.nightscout.androidaps.utils.resources.ResourceHelper;
/**
@@ -354,14 +354,14 @@ public enum PumpType {
}
- public String getFullDescription(String i18nTemplate, boolean hasExtendedBasals) {
+ public String getFullDescription(String i18nTemplate, boolean hasExtendedBasals, ResourceHelper resourceHelper) {
String unit = getPumpTempBasalType() == PumpTempBasalType.Percent ? "%" : "";
DoseSettings eb = getExtendedBolusSettings();
DoseSettings tbr = getTbrSettings();
- String extendedNote = hasExtendedBasals ? MainApp.gs(R.string.virtualpump_pump_def_extended_note) : "";
+ String extendedNote = hasExtendedBasals ? resourceHelper.gs(R.string.def_extended_note) : "";
return String.format(i18nTemplate, //
getStep("" + getBolusSize(), getSpecialBolusSize()), //
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/dialog/RefreshableInterface.java b/core/src/main/java/info/nightscout/androidaps/plugins/pump/common/dialog/RefreshableInterface.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/dialog/RefreshableInterface.java
rename to core/src/main/java/info/nightscout/androidaps/plugins/pump/common/dialog/RefreshableInterface.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/events/EventRefreshButtonState.kt b/core/src/main/java/info/nightscout/androidaps/plugins/pump/common/events/EventRefreshButtonState.kt
similarity index 63%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/events/EventRefreshButtonState.kt
rename to core/src/main/java/info/nightscout/androidaps/plugins/pump/common/events/EventRefreshButtonState.kt
index 81b9af4ff3..54f4773141 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/events/EventRefreshButtonState.kt
+++ b/core/src/main/java/info/nightscout/androidaps/plugins/pump/common/events/EventRefreshButtonState.kt
@@ -1,4 +1,4 @@
-package info.nightscout.androidaps.plugins.pump.medtronic.events
+package info.nightscout.androidaps.plugins.pump.common.events
import info.nightscout.androidaps.events.Event
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/utils/ByteUtil.java b/core/src/main/java/info/nightscout/androidaps/plugins/pump/common/utils/ByteUtil.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/utils/ByteUtil.java
rename to core/src/main/java/info/nightscout/androidaps/plugins/pump/common/utils/ByteUtil.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/utils/CRC.java b/core/src/main/java/info/nightscout/androidaps/plugins/pump/common/utils/CRC.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/utils/CRC.java
rename to core/src/main/java/info/nightscout/androidaps/plugins/pump/common/utils/CRC.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/utils/DateTimeUtil.java b/core/src/main/java/info/nightscout/androidaps/plugins/pump/common/utils/DateTimeUtil.java
similarity index 97%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/utils/DateTimeUtil.java
rename to core/src/main/java/info/nightscout/androidaps/plugins/pump/common/utils/DateTimeUtil.java
index 20c19c644c..32c1d36488 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/utils/DateTimeUtil.java
+++ b/core/src/main/java/info/nightscout/androidaps/plugins/pump/common/utils/DateTimeUtil.java
@@ -6,15 +6,10 @@ package info.nightscout.androidaps.plugins.pump.common.utils;
import org.joda.time.LocalDateTime;
import org.joda.time.Minutes;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import java.util.Calendar;
import java.util.GregorianCalendar;
-import info.nightscout.androidaps.logging.L;
-import info.nightscout.androidaps.logging.StacktraceLoggerWrapper;
-
/**
* This is simple version of ATechDate, limited only to one format (yyyymmddHHMIss)
*/
@@ -26,7 +21,6 @@ public class DateTimeUtil {
* @param atechDateTime
* @return
*/
- @Deprecated // use joda instead
public static LocalDateTime toLocalDateTime(long atechDateTime) {
int year = (int) (atechDateTime / 10000000000L);
atechDateTime -= year * 10000000000L;
@@ -61,7 +55,6 @@ public class DateTimeUtil {
* @param atechDateTime
* @return
*/
- @Deprecated // use joda instead
public static GregorianCalendar toGregorianCalendar(long atechDateTime) {
int year = (int) (atechDateTime / 10000000000L);
atechDateTime -= year * 10000000000L;
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/utils/ProfileUtil.java b/core/src/main/java/info/nightscout/androidaps/plugins/pump/common/utils/ProfileUtil.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/utils/ProfileUtil.java
rename to core/src/main/java/info/nightscout/androidaps/plugins/pump/common/utils/ProfileUtil.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/utils/StringUtil.java b/core/src/main/java/info/nightscout/androidaps/plugins/pump/common/utils/StringUtil.java
similarity index 95%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/utils/StringUtil.java
rename to core/src/main/java/info/nightscout/androidaps/plugins/pump/common/utils/StringUtil.java
index f7d86e5774..cc9533e669 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/utils/StringUtil.java
+++ b/core/src/main/java/info/nightscout/androidaps/plugins/pump/common/utils/StringUtil.java
@@ -84,8 +84,8 @@ public class StringUtil {
}
- public static String toDateTimeString(LocalDateTime localDateTime) {
- return DateUtil.dateAndTimeAndSecondsString(localDateTime.toDateTime().getMillis());
+ public static String toDateTimeString(DateUtil dateUtil, LocalDateTime localDateTime) {
+ return dateUtil.dateAndTimeAndSecondsString(localDateTime.toDateTime().getMillis());
//return localDateTime.toString("dd.MM.yyyy HH:mm:ss");
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/utils/ThreadUtil.java b/core/src/main/java/info/nightscout/androidaps/plugins/pump/common/utils/ThreadUtil.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/utils/ThreadUtil.java
rename to core/src/main/java/info/nightscout/androidaps/plugins/pump/common/utils/ThreadUtil.java
diff --git a/core/src/main/java/info/nightscout/androidaps/plugins/treatments/TreatmentUpdateReturn.java b/core/src/main/java/info/nightscout/androidaps/plugins/treatments/TreatmentUpdateReturn.java
new file mode 100644
index 0000000000..42b71b0217
--- /dev/null
+++ b/core/src/main/java/info/nightscout/androidaps/plugins/treatments/TreatmentUpdateReturn.java
@@ -0,0 +1,27 @@
+package info.nightscout.androidaps.plugins.treatments;
+
+import info.nightscout.androidaps.db.Treatment;
+
+public class TreatmentUpdateReturn {
+
+ public TreatmentUpdateReturn(boolean success, boolean newRecord) {
+ this.success = success;
+ this.newRecord = newRecord;
+ }
+
+ boolean newRecord;
+ boolean success;
+
+ @Override
+ public String toString() {
+ return "UpdateReturn [" +
+ "newRecord=" + newRecord +
+ ", success=" + success +
+ ']';
+ }
+
+}
+
+
+
+
diff --git a/core/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/ProfileGraph.kt b/core/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/ProfileGraph.kt
new file mode 100644
index 0000000000..8dd922ca60
--- /dev/null
+++ b/core/src/main/java/info/nightscout/androidaps/plugins/treatments/fragments/ProfileGraph.kt
@@ -0,0 +1,77 @@
+package info.nightscout.androidaps.plugins.treatments.fragments
+
+import android.content.Context
+import android.graphics.Color
+import android.util.AttributeSet
+import com.jjoe64.graphview.GraphView
+import com.jjoe64.graphview.series.DataPoint
+import com.jjoe64.graphview.series.LineGraphSeries
+import info.nightscout.androidaps.core.R
+import info.nightscout.androidaps.data.Profile
+import info.nightscout.androidaps.utils.Round
+import java.util.*
+import kotlin.math.max
+
+class ProfileGraph : GraphView {
+
+ constructor(context: Context?) : super(context)
+ constructor(context: Context?, attrs: AttributeSet?) : super(context, attrs)
+
+ fun show(profile: Profile) {
+ removeAllSeries()
+ val basalArray: MutableList = ArrayList()
+ for (hour in 0..23) {
+ basalArray.add(DataPoint(hour.toDouble(), profile.getBasalTimeFromMidnight(hour * 60 * 60)))
+ basalArray.add(DataPoint((hour + 1).toDouble(), profile.getBasalTimeFromMidnight(hour * 60 * 60)))
+ }
+ val basalDataPoints: Array = Array(basalArray.size) { i -> basalArray[i] }
+ val basalSeries: LineGraphSeries = LineGraphSeries(basalDataPoints)
+ addSeries(basalSeries)
+ basalSeries.thickness = 8
+ basalSeries.isDrawBackground = true
+ viewport.isXAxisBoundsManual = true
+ viewport.setMinX(0.0)
+ viewport.setMaxX(24.0)
+ viewport.isYAxisBoundsManual = true
+ viewport.setMinY(0.0)
+ viewport.setMaxY(Round.ceilTo(profile.maxDailyBasal * 1.1, 0.5))
+ gridLabelRenderer.numHorizontalLabels = 13
+ gridLabelRenderer.verticalLabelsColor = basalSeries.color
+ }
+
+ fun show(profile1: Profile, profile2: Profile) {
+ removeAllSeries()
+
+ // profile 1
+ val basalArray1: MutableList = ArrayList()
+ for (hour in 0..23) {
+ basalArray1.add(DataPoint(hour.toDouble(), profile1.getBasalTimeFromMidnight(hour * 60 * 60)))
+ basalArray1.add(DataPoint((hour + 1).toDouble(), profile1.getBasalTimeFromMidnight(hour * 60 * 60)))
+ }
+ val basalSeries1: LineGraphSeries = LineGraphSeries(Array(basalArray1.size) { i -> basalArray1[i] })
+ addSeries(basalSeries1)
+ basalSeries1.thickness = 8
+ basalSeries1.isDrawBackground = true
+
+ // profile 2
+ val basalArray2: MutableList = ArrayList()
+ for (hour in 0..23) {
+ basalArray2.add(DataPoint(hour.toDouble(), profile2.getBasalTimeFromMidnight(hour * 60 * 60)))
+ basalArray2.add(DataPoint((hour + 1).toDouble(), profile2.getBasalTimeFromMidnight(hour * 60 * 60)))
+ }
+ val basalSeries2: LineGraphSeries = LineGraphSeries(Array(basalArray2.size) { i -> basalArray2[i] })
+ addSeries(basalSeries2)
+ basalSeries2.thickness = 8
+ basalSeries2.isDrawBackground = false
+ basalSeries2.color = context.getColor(R.color.examinedProfile)
+ basalSeries2.backgroundColor = context.getColor(R.color.examinedProfile)
+
+ viewport.isXAxisBoundsManual = true
+ viewport.setMinX(0.0)
+ viewport.setMaxX(24.0)
+ viewport.isYAxisBoundsManual = true
+ viewport.setMinY(0.0)
+ viewport.setMaxY(Round.ceilTo(max(profile1.maxDailyBasal, profile2.maxDailyBasal) * 1.1, 0.5))
+ gridLabelRenderer.numHorizontalLabels = 13
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/queue/Callback.java b/core/src/main/java/info/nightscout/androidaps/queue/Callback.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/queue/Callback.java
rename to core/src/main/java/info/nightscout/androidaps/queue/Callback.java
diff --git a/app/src/main/java/info/nightscout/androidaps/queue/commands/Command.kt b/core/src/main/java/info/nightscout/androidaps/queue/commands/Command.kt
similarity index 97%
rename from app/src/main/java/info/nightscout/androidaps/queue/commands/Command.kt
rename to core/src/main/java/info/nightscout/androidaps/queue/commands/Command.kt
index eac1e6d103..ea6a8b9196 100644
--- a/app/src/main/java/info/nightscout/androidaps/queue/commands/Command.kt
+++ b/core/src/main/java/info/nightscout/androidaps/queue/commands/Command.kt
@@ -1,7 +1,7 @@
package info.nightscout.androidaps.queue.commands
import dagger.android.HasAndroidInjector
-import info.nightscout.androidaps.R
+import info.nightscout.androidaps.core.R
import info.nightscout.androidaps.data.PumpEnactResult
import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag
diff --git a/app/src/main/java/info/nightscout/androidaps/queue/events/EventQueueChanged.kt b/core/src/main/java/info/nightscout/androidaps/queue/events/EventQueueChanged.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/queue/events/EventQueueChanged.kt
rename to core/src/main/java/info/nightscout/androidaps/queue/events/EventQueueChanged.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/receivers/NetworkChangeReceiver.kt b/core/src/main/java/info/nightscout/androidaps/receivers/NetworkChangeReceiver.kt
similarity index 95%
rename from app/src/main/java/info/nightscout/androidaps/receivers/NetworkChangeReceiver.kt
rename to core/src/main/java/info/nightscout/androidaps/receivers/NetworkChangeReceiver.kt
index faeb4632cd..9233ee1b1b 100644
--- a/app/src/main/java/info/nightscout/androidaps/receivers/NetworkChangeReceiver.kt
+++ b/core/src/main/java/info/nightscout/androidaps/receivers/NetworkChangeReceiver.kt
@@ -12,6 +12,7 @@ import info.nightscout.androidaps.events.EventNetworkChange
import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
+import info.nightscout.androidaps.utils.StringUtils
import javax.inject.Inject
class NetworkChangeReceiver : DaggerBroadcastReceiver() {
@@ -39,7 +40,7 @@ class NetworkChangeReceiver : DaggerBroadcastReceiver() {
val wifiManager = context.applicationContext.getSystemService(Context.WIFI_SERVICE) as WifiManager
val wifiInfo = wifiManager.connectionInfo
if (wifiInfo.supplicantState == SupplicantState.COMPLETED) {
- event.ssid = wifiInfo.ssid
+ event.ssid = StringUtils.removeSurroundingQuotes(wifiInfo.ssid)
// aapsLogger.debug(LTag.CORE, "NETCHANGE: Wifi connected. SSID: ${event.connectedSsid()}")
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/receivers/ReceiverStatusStore.kt b/core/src/main/java/info/nightscout/androidaps/receivers/ReceiverStatusStore.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/receivers/ReceiverStatusStore.kt
rename to core/src/main/java/info/nightscout/androidaps/receivers/ReceiverStatusStore.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/services/AlarmSoundService.kt b/core/src/main/java/info/nightscout/androidaps/services/AlarmSoundService.kt
similarity index 83%
rename from app/src/main/java/info/nightscout/androidaps/services/AlarmSoundService.kt
rename to core/src/main/java/info/nightscout/androidaps/services/AlarmSoundService.kt
index 0d261b5071..f84e6af6e2 100644
--- a/app/src/main/java/info/nightscout/androidaps/services/AlarmSoundService.kt
+++ b/core/src/main/java/info/nightscout/androidaps/services/AlarmSoundService.kt
@@ -6,17 +6,17 @@ import android.media.AudioManager
import android.media.MediaPlayer
import android.os.IBinder
import dagger.android.DaggerService
-import info.nightscout.androidaps.R
+import info.nightscout.androidaps.core.R
+import info.nightscout.androidaps.interfaces.NotificationHolderInterface
import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag
-import info.nightscout.androidaps.utils.androidNotification.NotificationHolder
import info.nightscout.androidaps.utils.resources.ResourceHelper
import javax.inject.Inject
class AlarmSoundService : DaggerService() {
@Inject lateinit var aapsLogger: AAPSLogger
@Inject lateinit var resourceHelper: ResourceHelper
- @Inject lateinit var notificationHolder: NotificationHolder
+ @Inject lateinit var notificationHolder: NotificationHolderInterface
private var player: MediaPlayer? = null
private var resourceId = R.raw.error
@@ -29,13 +29,13 @@ class AlarmSoundService : DaggerService() {
startForeground(notificationHolder.notificationID, notificationHolder.notification)
}
- override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
+ override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
startForeground(notificationHolder.notificationID, notificationHolder.notification)
player?.let { if (it.isPlaying) it.stop() }
aapsLogger.debug(LTag.CORE, "onStartCommand")
- if (intent.hasExtra("soundid")) resourceId = intent.getIntExtra("soundid", R.raw.error)
+ if (intent?.hasExtra("soundid") == true) resourceId = intent.getIntExtra("soundid", R.raw.error)
player = MediaPlayer()
try {
val afd = resourceHelper.openRawResourceFd(resourceId) ?: return START_STICKY
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/CRC.java b/core/src/main/java/info/nightscout/androidaps/utils/CRC.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/utils/CRC.java
rename to core/src/main/java/info/nightscout/androidaps/utils/CRC.java
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/DateUtil.java b/core/src/main/java/info/nightscout/androidaps/utils/DateUtil.java
similarity index 90%
rename from app/src/main/java/info/nightscout/androidaps/utils/DateUtil.java
rename to core/src/main/java/info/nightscout/androidaps/utils/DateUtil.java
index f058896f19..afa469f468 100644
--- a/app/src/main/java/info/nightscout/androidaps/utils/DateUtil.java
+++ b/core/src/main/java/info/nightscout/androidaps/utils/DateUtil.java
@@ -1,5 +1,7 @@
package info.nightscout.androidaps.utils;
+import android.content.Context;
+
import androidx.collection.LongSparseArray;
import org.joda.time.DateTime;
@@ -26,15 +28,27 @@ import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import info.nightscout.androidaps.MainApp;
-import info.nightscout.androidaps.R;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import info.nightscout.androidaps.core.R;
import info.nightscout.androidaps.utils.resources.ResourceHelper;
/**
* The Class DateUtil. A simple wrapper around SimpleDateFormat to ease the handling of iso date string <-> date obj
* with TZ
*/
+
+@Singleton
public class DateUtil {
+ private final Context context;
+ private final ResourceHelper resourceHelper;
+
+ @Inject
+ public DateUtil(Context context, ResourceHelper resourceHelper) {
+ this.context = context;
+ this.resourceHelper = resourceHelper;
+ }
/**
* The date format in iso.
@@ -147,33 +161,33 @@ public class DateUtil {
return df.format(mills);
}
- public static String dateStringShort(long mills) {
+ public String dateStringShort(long mills) {
String format = "MM/dd";
- if (android.text.format.DateFormat.is24HourFormat(MainApp.instance())) {
+ if (android.text.format.DateFormat.is24HourFormat(context)) {
format = "dd/MM";
}
return new DateTime(mills).toString(DateTimeFormat.forPattern(format));
}
- public static String timeString(Date date) {
+ public String timeString(Date date) {
String format = "hh:mma";
- if (android.text.format.DateFormat.is24HourFormat(MainApp.instance())) {
+ if (android.text.format.DateFormat.is24HourFormat(context)) {
format = "HH:mm";
}
return new DateTime(date).toString(DateTimeFormat.forPattern(format));
}
- public static String timeString(long mills) {
+ public String timeString(long mills) {
String format = "hh:mma";
- if (android.text.format.DateFormat.is24HourFormat(MainApp.instance())) {
+ if (android.text.format.DateFormat.is24HourFormat(context)) {
format = "HH:mm";
}
return new DateTime(mills).toString(DateTimeFormat.forPattern(format));
}
- public static String timeStringWithSeconds(long mills) {
+ public String timeStringWithSeconds(long mills) {
String format = "hh:mm:ssa";
- if (android.text.format.DateFormat.is24HourFormat(MainApp.instance())) {
+ if (android.text.format.DateFormat.is24HourFormat(context)) {
format = "HH:mm:ss";
}
return new DateTime(mills).toString(DateTimeFormat.forPattern(format));
@@ -183,36 +197,32 @@ public class DateUtil {
return new DateTime(mills).toString(DateTimeFormat.fullTime());
}
- public static String dateAndTimeString(Date date) {
+ public String dateAndTimeString(Date date) {
return dateString(date) + " " + timeString(date);
}
- public static String dateAndTimeRangeString(long start, long end) {
+ public String dateAndTimeRangeString(long start, long end) {
return dateAndTimeString(start) + " - " + timeString(end);
}
- public static String dateAndTimeString(long mills) {
+ public String dateAndTimeString(long mills) {
if (mills == 0) return "";
return dateString(mills) + " " + timeString(mills);
}
- public static String dateAndTimeAndSecondsString(long mills) {
+ public String dateAndTimeAndSecondsString(long mills) {
if (mills == 0) return "";
return dateString(mills) + " " + timeStringWithSeconds(mills);
}
- public static String dateAndTimeFullString(long mills) {
- return dateString(mills) + " " + timeFullString(mills);
- }
-
public static String minAgo(ResourceHelper resourceHelper, long time) {
int mins = (int) ((now() - time) / 1000 / 60);
return resourceHelper.gs(R.string.minago, mins);
}
public static String minAgoShort(long time) {
- Integer mins = (int) ((time - now()) / 1000 / 60);
- return (mins > 0 ? "+" : "") + mins.toString();
+ int mins = (int) ((time - now()) / 1000 / 60);
+ return (mins > 0 ? "+" : "") + Integer.toString(mins);
}
public static String hourAgo(long time, ResourceHelper resourceHelper) {
@@ -222,7 +232,7 @@ public class DateUtil {
private static LongSparseArray timeStrings = new LongSparseArray<>();
- public static String timeStringFromSeconds(int seconds) {
+ public String timeStringFromSeconds(int seconds) {
String cached = timeStrings.get(seconds);
if (cached != null)
return cached;
@@ -247,6 +257,10 @@ public class DateUtil {
return timeFrameString(timestamp - System.currentTimeMillis(), resourceHelper);
}
+ public long _now() {
+ return System.currentTimeMillis();
+ }
+
public static long now() {
return System.currentTimeMillis();
}
@@ -326,13 +340,13 @@ public class DateUtil {
t = t / 60;
if (t != 1) unit = resourceHelper.gs(R.string.unit_hours);
if (t > 24) {
- unit = resourceHelper.gs(R.string.unit_day) + "\"";
+ unit = resourceHelper.gs(R.string.unit_day);
t = t / 24;
- if (t != 1) unit = resourceHelper.gs(R.string.unit_days) + "\"";
+ if (t != 1) unit = resourceHelper.gs(R.string.unit_days);
if (t > 28) {
- unit = resourceHelper.gs(R.string.unit_week) + "\"";
+ unit = resourceHelper.gs(R.string.unit_week);
t = t / 7;
- if (t != 1) unit = resourceHelper.gs(R.string.unit_weeks) + "\"";
+ if (t != 1) unit = resourceHelper.gs(R.string.unit_weeks);
}
}
}
@@ -344,6 +358,7 @@ public class DateUtil {
// singletons to avoid repeated allocation
private static DecimalFormatSymbols dfs;
private static DecimalFormat df;
+
public static String qs(double x, int digits) {
if (digits == -1) {
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/DecimalFormatter.java b/core/src/main/java/info/nightscout/androidaps/utils/DecimalFormatter.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/utils/DecimalFormatter.java
rename to core/src/main/java/info/nightscout/androidaps/utils/DecimalFormatter.java
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/DefaultValueHelper.kt b/core/src/main/java/info/nightscout/androidaps/utils/DefaultValueHelper.kt
similarity index 97%
rename from app/src/main/java/info/nightscout/androidaps/utils/DefaultValueHelper.kt
rename to core/src/main/java/info/nightscout/androidaps/utils/DefaultValueHelper.kt
index 6f7e49c9bd..1f85996369 100644
--- a/app/src/main/java/info/nightscout/androidaps/utils/DefaultValueHelper.kt
+++ b/core/src/main/java/info/nightscout/androidaps/utils/DefaultValueHelper.kt
@@ -1,9 +1,9 @@
package info.nightscout.androidaps.utils
import info.nightscout.androidaps.Constants
-import info.nightscout.androidaps.R
+import info.nightscout.androidaps.core.R
import info.nightscout.androidaps.data.Profile
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
+import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.utils.sharedPreferences.SP
import javax.inject.Inject
import javax.inject.Singleton
diff --git a/core/src/main/java/info/nightscout/androidaps/utils/FabricPrivacy.kt b/core/src/main/java/info/nightscout/androidaps/utils/FabricPrivacy.kt
index 9468f21bd4..744c692541 100644
--- a/core/src/main/java/info/nightscout/androidaps/utils/FabricPrivacy.kt
+++ b/core/src/main/java/info/nightscout/androidaps/utils/FabricPrivacy.kt
@@ -2,13 +2,12 @@ package info.nightscout.androidaps.utils
import android.content.Context
import android.os.Bundle
-import com.crashlytics.android.Crashlytics
import com.google.firebase.analytics.FirebaseAnalytics
+import com.google.firebase.crashlytics.FirebaseCrashlytics
import info.nightscout.androidaps.core.R
import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.utils.sharedPreferences.SP
-import io.fabric.sdk.android.Fabric
import javax.inject.Inject
import javax.inject.Singleton
@@ -27,21 +26,9 @@ class FabricPrivacy @Inject constructor(
var firebaseAnalytics: FirebaseAnalytics
init {
- instance = this
firebaseAnalytics = FirebaseAnalytics.getInstance(context)
firebaseAnalytics.setAnalyticsCollectionEnabled(!java.lang.Boolean.getBoolean("disableFirebase") && fabricEnabled())
-
- if (fabricEnabled()) {
- Fabric.with(context, Crashlytics())
- }
- }
-
- companion object {
- private lateinit var instance: FabricPrivacy
-
- @JvmStatic
- @Deprecated("Use Dagger")
- fun getInstance(): FabricPrivacy = instance
+ FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(!java.lang.Boolean.getBoolean("disableFirebase") && fabricEnabled())
}
// Analytics logCustom
@@ -76,38 +63,8 @@ class FabricPrivacy @Inject constructor(
// Crashlytics logException
fun logException(throwable: Throwable) {
- try {
- val crashlytics = Crashlytics.getInstance()
- crashlytics.core.logException(throwable)
- } catch (e: NullPointerException) {
- aapsLogger.debug(LTag.CORE, "Ignoring opted out non-initialized log: $throwable")
- } catch (e: IllegalStateException) {
- aapsLogger.debug(LTag.CORE, "Ignoring opted out non-initialized log: $throwable")
- }
- }
-
- // Crashlytics log
- fun log(msg: String) {
- try {
- val crashlytics = Crashlytics.getInstance()
- crashlytics.core.log(msg)
- } catch (e: NullPointerException) {
- aapsLogger.debug(LTag.CORE, "Ignoring opted out non-initialized log: $msg")
- } catch (e: IllegalStateException) {
- aapsLogger.debug(LTag.CORE, "Ignoring opted out non-initialized log: $msg")
- }
- }
-
- // Crashlytics log
- fun log(priority: Int, tag: String?, msg: String) {
- try {
- val crashlytics = Crashlytics.getInstance()
- crashlytics.core.log(priority, tag, msg)
- } catch (e: NullPointerException) {
- aapsLogger.debug(LTag.CORE, "Ignoring opted out non-initialized log: $msg")
- } catch (e: IllegalStateException) {
- aapsLogger.debug(LTag.CORE, "Ignoring opted out non-initialized log: $msg")
- }
+ FirebaseCrashlytics.getInstance().recordException(throwable)
+ aapsLogger.debug(LTag.CORE, "Exception: ", throwable)
}
fun fabricEnabled(): Boolean {
diff --git a/core/src/main/java/info/nightscout/androidaps/utils/HtmlHelper.kt b/core/src/main/java/info/nightscout/androidaps/utils/HtmlHelper.kt
new file mode 100644
index 0000000000..dd0da3b72f
--- /dev/null
+++ b/core/src/main/java/info/nightscout/androidaps/utils/HtmlHelper.kt
@@ -0,0 +1,11 @@
+package info.nightscout.androidaps.utils
+
+import android.os.Build
+import android.text.Html
+import android.text.Spanned
+
+object HtmlHelper {
+ fun fromHtml(source: String): Spanned {
+ return Html.fromHtml(source, Html.FROM_HTML_MODE_LEGACY)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/JsonHelper.kt b/core/src/main/java/info/nightscout/androidaps/utils/JsonHelper.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/utils/JsonHelper.kt
rename to core/src/main/java/info/nightscout/androidaps/utils/JsonHelper.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/Round.java b/core/src/main/java/info/nightscout/androidaps/utils/Round.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/utils/Round.java
rename to core/src/main/java/info/nightscout/androidaps/utils/Round.java
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/StringUtils.java b/core/src/main/java/info/nightscout/androidaps/utils/StringUtils.java
similarity index 86%
rename from app/src/main/java/info/nightscout/androidaps/utils/StringUtils.java
rename to core/src/main/java/info/nightscout/androidaps/utils/StringUtils.java
index ebd31dea17..01b92a680f 100644
--- a/app/src/main/java/info/nightscout/androidaps/utils/StringUtils.java
+++ b/core/src/main/java/info/nightscout/androidaps/utils/StringUtils.java
@@ -1,8 +1,5 @@
package info.nightscout.androidaps.utils;
-import info.nightscout.androidaps.MainApp;
-import info.nightscout.androidaps.R;
-
/**
* class contains useful String functions
*/
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/TimeChangeType.java b/core/src/main/java/info/nightscout/androidaps/utils/TimeChangeType.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/utils/TimeChangeType.java
rename to core/src/main/java/info/nightscout/androidaps/utils/TimeChangeType.java
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/Translator.kt b/core/src/main/java/info/nightscout/androidaps/utils/Translator.kt
similarity index 98%
rename from app/src/main/java/info/nightscout/androidaps/utils/Translator.kt
rename to core/src/main/java/info/nightscout/androidaps/utils/Translator.kt
index b68fb74194..501c2e7d1a 100644
--- a/app/src/main/java/info/nightscout/androidaps/utils/Translator.kt
+++ b/core/src/main/java/info/nightscout/androidaps/utils/Translator.kt
@@ -1,6 +1,6 @@
package info.nightscout.androidaps.utils
-import info.nightscout.androidaps.R
+import info.nightscout.androidaps.core.R
import info.nightscout.androidaps.utils.resources.ResourceHelper
import javax.inject.Inject
import javax.inject.Singleton
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/SetWarnColor.kt b/core/src/main/java/info/nightscout/androidaps/utils/WarnColors.kt
similarity index 97%
rename from app/src/main/java/info/nightscout/androidaps/utils/SetWarnColor.kt
rename to core/src/main/java/info/nightscout/androidaps/utils/WarnColors.kt
index fd375ad1cc..5c74ab6c7d 100644
--- a/app/src/main/java/info/nightscout/androidaps/utils/SetWarnColor.kt
+++ b/core/src/main/java/info/nightscout/androidaps/utils/WarnColors.kt
@@ -2,7 +2,7 @@ package info.nightscout.androidaps.utils
import android.graphics.Color
import android.widget.TextView
-import info.nightscout.androidaps.R
+import info.nightscout.androidaps.core.R
import info.nightscout.androidaps.db.CareportalEvent
import info.nightscout.androidaps.utils.resources.ResourceHelper
import javax.inject.Inject
diff --git a/core/src/main/java/info/nightscout/androidaps/utils/alertDialogs/OKDialog.kt b/core/src/main/java/info/nightscout/androidaps/utils/alertDialogs/OKDialog.kt
index 2d45d2910d..c0fc646258 100644
--- a/core/src/main/java/info/nightscout/androidaps/utils/alertDialogs/OKDialog.kt
+++ b/core/src/main/java/info/nightscout/androidaps/utils/alertDialogs/OKDialog.kt
@@ -12,6 +12,7 @@ import info.nightscout.androidaps.utils.extensions.runOnUiThread
object OKDialog {
@SuppressLint("InflateParams")
fun show(context: Context, title: String, message: String, runnable: Runnable? = null) {
+ var okClicked = false
var notEmptytitle = title
if (notEmptytitle.isEmpty()) notEmptytitle = context.getString(R.string.message)
@@ -19,18 +20,21 @@ object OKDialog {
.setCustomTitle(AlertDialogHelper.buildCustomTitle(context, notEmptytitle))
.setMessage(message)
.setPositiveButton(context.getString(R.string.ok)) { dialog: DialogInterface, _: Int ->
- dialog.dismiss()
- SystemClock.sleep(100)
- runOnUiThread(runnable)
+ if (okClicked) return@setPositiveButton
+ else {
+ okClicked = true
+ dialog.dismiss()
+ SystemClock.sleep(100)
+ runOnUiThread(runnable)
+ }
}
.show()
.setCanceledOnTouchOutside(false)
}
@SuppressLint("InflateParams")
- @JvmStatic
- @JvmOverloads
fun show(activity: Activity, title: String, message: Spanned, runnable: Runnable? = null) {
+ var okClicked = false
var notEmptytitle = title
if (notEmptytitle.isEmpty()) notEmptytitle = activity.getString(R.string.message)
@@ -38,9 +42,13 @@ object OKDialog {
.setCustomTitle(AlertDialogHelper.buildCustomTitle(activity, notEmptytitle))
.setMessage(message)
.setPositiveButton(activity.getString(R.string.ok)) { dialog: DialogInterface, _: Int ->
- dialog.dismiss()
- SystemClock.sleep(100)
- runnable?.let { activity.runOnUiThread(it) }
+ if (okClicked) return@setPositiveButton
+ else {
+ okClicked = true
+ dialog.dismiss()
+ SystemClock.sleep(100)
+ runnable?.let { activity.runOnUiThread(it) }
+ }
}
.show()
.setCanceledOnTouchOutside(false)
@@ -57,71 +65,89 @@ object OKDialog {
}
@SuppressLint("InflateParams")
- @JvmStatic
- @JvmOverloads
fun showConfirmation(activity: Activity, title: String, message: Spanned, ok: Runnable?, cancel: Runnable? = null) {
+ var okClicked = false
AlertDialogHelper.Builder(activity)
.setMessage(message)
.setCustomTitle(AlertDialogHelper.buildCustomTitle(activity, title))
.setPositiveButton(android.R.string.ok) { dialog: DialogInterface, _: Int ->
- dialog.dismiss()
- SystemClock.sleep(100)
- ok?.let { activity.runOnUiThread(it) }
+ if (okClicked) return@setPositiveButton
+ else {
+ okClicked = true
+ dialog.dismiss()
+ SystemClock.sleep(100)
+ ok?.let { activity.runOnUiThread(it) }
+ }
}
.setNegativeButton(android.R.string.cancel) { dialog: DialogInterface, _: Int ->
- dialog.dismiss()
- SystemClock.sleep(100)
- cancel?.let { activity.runOnUiThread(it) }
+ if (okClicked) return@setNegativeButton
+ else {
+ okClicked = true
+ dialog.dismiss()
+ SystemClock.sleep(100)
+ cancel?.let { activity.runOnUiThread(it) }
+ }
}
- .setNegativeButton(android.R.string.cancel, null)
.show()
.setCanceledOnTouchOutside(false)
}
@SuppressLint("InflateParams")
- @JvmStatic
fun showConfirmation(activity: Activity, title: String, message: String, ok: Runnable?, cancel: Runnable? = null) {
+ var okClicked = false
AlertDialogHelper.Builder(activity)
.setMessage(message)
.setCustomTitle(AlertDialogHelper.buildCustomTitle(activity, title))
.setPositiveButton(android.R.string.ok) { dialog: DialogInterface, _: Int ->
- dialog.dismiss()
- SystemClock.sleep(100)
- ok?.let { activity.runOnUiThread(it) }
+ if (okClicked) return@setPositiveButton
+ else {
+ okClicked = true
+ dialog.dismiss()
+ SystemClock.sleep(100)
+ ok?.let { activity.runOnUiThread(it) }
+ }
}
.setNegativeButton(android.R.string.cancel) { dialog: DialogInterface, _: Int ->
- dialog.dismiss()
- SystemClock.sleep(100)
- cancel?.let { activity.runOnUiThread(it) }
+ if (okClicked) return@setNegativeButton
+ else {
+ okClicked = true
+ dialog.dismiss()
+ SystemClock.sleep(100)
+ cancel?.let { activity.runOnUiThread(it) }
+ }
}
.show()
.setCanceledOnTouchOutside(false)
}
- @JvmStatic
- @JvmOverloads
fun showConfirmation(context: Context, message: Spanned, ok: Runnable?, cancel: Runnable? = null) {
showConfirmation(context, context.getString(R.string.confirmation), message, ok, cancel)
}
@SuppressLint("InflateParams")
- @JvmStatic
- @JvmOverloads
fun showConfirmation(context: Context, title: String, message: Spanned, ok: Runnable?, cancel: Runnable? = null) {
+ var okClicked = false
AlertDialogHelper.Builder(context)
.setMessage(message)
.setCustomTitle(AlertDialogHelper.buildCustomTitle(context, title))
.setPositiveButton(android.R.string.ok) { dialog: DialogInterface, _: Int ->
- dialog.dismiss()
- SystemClock.sleep(100)
- runOnUiThread(ok)
+ if (okClicked) return@setPositiveButton
+ else {
+ okClicked = true
+ dialog.dismiss()
+ SystemClock.sleep(100)
+ runOnUiThread(ok)
+ }
}
.setNegativeButton(android.R.string.cancel) { dialog: DialogInterface, _: Int ->
- dialog.dismiss()
- SystemClock.sleep(100)
- runOnUiThread(cancel)
+ if (okClicked) return@setNegativeButton
+ else {
+ okClicked = true
+ dialog.dismiss()
+ SystemClock.sleep(100)
+ runOnUiThread(cancel)
+ }
}
- .setNegativeButton(android.R.string.cancel, null)
.show()
.setCanceledOnTouchOutside(false)
}
@@ -136,18 +162,27 @@ object OKDialog {
@JvmStatic
@JvmOverloads
fun showConfirmation(context: Context, title: String, message: String, ok: Runnable?, cancel: Runnable? = null) {
+ var okClicked = false
AlertDialogHelper.Builder(context)
.setMessage(message)
.setCustomTitle(AlertDialogHelper.buildCustomTitle(context, title))
.setPositiveButton(android.R.string.ok) { dialog: DialogInterface, _: Int ->
- dialog.dismiss()
- SystemClock.sleep(100)
- runOnUiThread(ok)
+ if (okClicked) return@setPositiveButton
+ else {
+ okClicked = true
+ dialog.dismiss()
+ SystemClock.sleep(100)
+ runOnUiThread(ok)
+ }
}
.setNegativeButton(android.R.string.cancel) { dialog: DialogInterface, _: Int ->
- dialog.dismiss()
- SystemClock.sleep(100)
- runOnUiThread(cancel)
+ if (okClicked) return@setNegativeButton
+ else {
+ okClicked = true
+ dialog.dismiss()
+ SystemClock.sleep(100)
+ runOnUiThread(cancel)
+ }
}
.show()
.setCanceledOnTouchOutside(false)
@@ -157,18 +192,27 @@ object OKDialog {
@JvmStatic
@JvmOverloads
fun showConfirmation(context: Context, title: String, message: String, ok: DialogInterface.OnClickListener?, cancel: DialogInterface.OnClickListener? = null) {
+ var okClicked = false
AlertDialogHelper.Builder(context)
.setMessage(message)
.setCustomTitle(AlertDialogHelper.buildCustomTitle(context, title))
.setPositiveButton(android.R.string.ok) { dialog: DialogInterface, which: Int ->
- dialog.dismiss()
- SystemClock.sleep(100)
- ok?.onClick(dialog, which)
+ if (okClicked) return@setPositiveButton
+ else {
+ okClicked = true
+ dialog.dismiss()
+ SystemClock.sleep(100)
+ ok?.onClick(dialog, which)
+ }
}
.setNegativeButton(android.R.string.cancel) { dialog: DialogInterface, which: Int ->
- dialog.dismiss()
- SystemClock.sleep(100)
- cancel?.onClick(dialog, which)
+ if (okClicked) return@setNegativeButton
+ else {
+ okClicked = true
+ dialog.dismiss()
+ SystemClock.sleep(100)
+ cancel?.onClick(dialog, which)
+ }
}
.show()
.setCanceledOnTouchOutside(false)
diff --git a/core/src/main/java/info/nightscout/androidaps/utils/alertDialogs/WarningDialog.kt b/core/src/main/java/info/nightscout/androidaps/utils/alertDialogs/WarningDialog.kt
index 847287d57a..2894f1b8d4 100644
--- a/core/src/main/java/info/nightscout/androidaps/utils/alertDialogs/WarningDialog.kt
+++ b/core/src/main/java/info/nightscout/androidaps/utils/alertDialogs/WarningDialog.kt
@@ -13,31 +13,37 @@ import info.nightscout.androidaps.utils.extensions.runOnUiThread
object WarningDialog {
@SuppressLint("InflateParams")
- @JvmStatic
- @JvmOverloads
fun showWarning(context: Context, title: String, message: String, @StringRes positiveButton: Int = -1, ok: (() -> Unit)? = null, cancel: (() -> Unit)? = null) {
-
+ var okClicked = false
val builder = AlertDialogHelper.Builder(context, R.style.AppThemeWarningDialog)
.setMessage(message)
.setCustomTitle(AlertDialogHelper.buildCustomTitle(context, title, R.drawable.ic_header_warning, R.style.AppThemeWarningDialog))
.setNegativeButton(R.string.dismiss) { dialog: DialogInterface, _: Int ->
- dialog.dismiss()
- SystemClock.sleep(100)
- if (cancel != null) {
- runOnUiThread(Runnable {
- cancel()
- })
+ if (okClicked) return@setNegativeButton
+ else {
+ okClicked = true
+ dialog.dismiss()
+ SystemClock.sleep(100)
+ if (cancel != null) {
+ runOnUiThread(Runnable {
+ cancel()
+ })
+ }
}
}
if (positiveButton != -1) {
builder.setPositiveButton(positiveButton) { dialog: DialogInterface, _: Int ->
- dialog.dismiss()
- SystemClock.sleep(100)
- if (ok != null) {
- runOnUiThread(Runnable {
- ok()
- })
+ if (okClicked) return@setPositiveButton
+ else {
+ okClicked = true
+ dialog.dismiss()
+ SystemClock.sleep(100)
+ if (ok != null) {
+ runOnUiThread(Runnable {
+ ok()
+ })
+ }
}
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/extensions/CompositeDisposablePlusAssign.kt b/core/src/main/java/info/nightscout/androidaps/utils/extensions/CompositeDisposablePlusAssign.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/utils/extensions/CompositeDisposablePlusAssign.kt
rename to core/src/main/java/info/nightscout/androidaps/utils/extensions/CompositeDisposablePlusAssign.kt
diff --git a/core/src/main/java/info/nightscout/androidaps/utils/extensions/Concurrency.kt b/core/src/main/java/info/nightscout/androidaps/utils/extensions/Concurrency.kt
new file mode 100644
index 0000000000..b958a0ea24
--- /dev/null
+++ b/core/src/main/java/info/nightscout/androidaps/utils/extensions/Concurrency.kt
@@ -0,0 +1,22 @@
+package info.nightscout.androidaps.utils.extensions
+
+
+@Suppress("PLATFORM_CLASS_MAPPED_TO_KOTLIN", "NOTHING_TO_INLINE")
+inline fun Any.wait() = (this as Object).wait()
+
+/**
+ * Lock and wait a duration in milliseconds and nanos.
+ * Unlike [java.lang.Object.wait] this interprets 0 as "don't wait" instead of "wait forever".
+ */
+@Suppress("PLATFORM_CLASS_MAPPED_TO_KOTLIN")
+fun Any.waitMillis(timeout: Long, nanos: Int = 0) {
+ if (timeout > 0L || nanos > 0) {
+ (this as Object).wait(timeout, nanos)
+ }
+}
+
+@Suppress("PLATFORM_CLASS_MAPPED_TO_KOTLIN", "NOTHING_TO_INLINE")
+inline fun Any.notify() = (this as Object).notify()
+
+@Suppress("PLATFORM_CLASS_MAPPED_TO_KOTLIN", "NOTHING_TO_INLINE")
+inline fun Any.notifyAll() = (this as Object).notifyAll()
diff --git a/core/src/main/java/info/nightscout/androidaps/utils/extensions/HexByteArrayConversion.kt b/core/src/main/java/info/nightscout/androidaps/utils/extensions/HexByteArrayConversion.kt
new file mode 100644
index 0000000000..7492135983
--- /dev/null
+++ b/core/src/main/java/info/nightscout/androidaps/utils/extensions/HexByteArrayConversion.kt
@@ -0,0 +1,35 @@
+package info.nightscout.androidaps.utils.extensions
+
+import java.util.*
+
+private val HEX_CHARS = "0123456789abcdef".toCharArray()
+
+fun ByteArray.toHex() : String{
+ val result = StringBuffer()
+
+ forEach {
+ val octet = it.toInt()
+ val firstIndex = (octet and 0xF0).ushr(4)
+ val secondIndex = octet and 0x0F
+ result.append(HEX_CHARS[firstIndex])
+ result.append(HEX_CHARS[secondIndex])
+ }
+
+ return result.toString()
+}
+
+fun String.hexStringToByteArray() : ByteArray {
+
+ val result = ByteArray(length / 2)
+
+ val lowerCased = this.toLowerCase(Locale.getDefault())
+ for (i in 0 until length step 2) {
+ val firstIndex = HEX_CHARS.indexOf(lowerCased[i]);
+ val secondIndex = HEX_CHARS.indexOf(lowerCased[i + 1]);
+
+ val octet = firstIndex.shl(4).or(secondIndex)
+ result.set(i.shr(1), octet.toByte())
+ }
+
+ return result
+}
\ No newline at end of file
diff --git a/core/src/main/java/info/nightscout/androidaps/utils/locale/LocaleHelper.kt b/core/src/main/java/info/nightscout/androidaps/utils/locale/LocaleHelper.kt
index 7180bf7927..29d53e1e53 100644
--- a/core/src/main/java/info/nightscout/androidaps/utils/locale/LocaleHelper.kt
+++ b/core/src/main/java/info/nightscout/androidaps/utils/locale/LocaleHelper.kt
@@ -1,22 +1,23 @@
-package info.nightscout.androidaps.utils
+package info.nightscout.androidaps.utils.locale
import android.content.Context
import android.content.ContextWrapper
-import android.os.Build
import android.os.LocaleList
import androidx.preference.PreferenceManager
import info.nightscout.androidaps.core.R
import java.util.*
object LocaleHelper {
- private fun currentLanguage(context: Context): String =
- PreferenceManager.getDefaultSharedPreferences(context).getString(context.getString(R.string.key_language), "en")
- ?: "en"
+ private fun selectedLanguage(context: Context): String =
+ PreferenceManager.getDefaultSharedPreferences(context).getString(context.getString(R.string.key_language), "default")
+ ?: "default"
// injection not possible because of use in attachBaseContext
//SP.getString(R.string.key_language, Locale.getDefault().language)
private fun currentLocale(context: Context): Locale {
- val language = currentLanguage(context)
+ val language = selectedLanguage(context)
+ if (language == "default") return Locale.getDefault()
+
var locale = Locale(language)
if (language.contains("_")) {
// language with country like pt_BR defined in arrays.xml
@@ -27,32 +28,30 @@ object LocaleHelper {
return locale
}
- @Suppress("DEPRECATION")
fun update(context: Context) {
+ // no action for system default language
+ if (selectedLanguage(context) == "default") return
+
val locale = currentLocale(context)
Locale.setDefault(locale)
val resources = context.resources
val configuration = resources.configuration
context.createConfigurationContext(configuration)
configuration.setLocale(locale)
- configuration.locale = locale
- resources.updateConfiguration(configuration, resources.displayMetrics)
}
- fun wrap(ctx: Context): ContextWrapper {
+ fun wrap(ctx: Context): Context {
+ // no action for system default language
+ if (selectedLanguage(ctx) == "default") return ctx
+
val res = ctx.resources
val configuration = res.configuration
val newLocale = currentLocale(ctx)
- val context = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
- configuration.setLocale(newLocale)
- val localeList = LocaleList(newLocale)
- LocaleList.setDefault(localeList)
- configuration.locales = localeList
- ctx.createConfigurationContext(configuration)
- } else {
- configuration.setLocale(newLocale)
- ctx.createConfigurationContext(configuration)
- }
+ configuration.setLocale(newLocale)
+ val localeList = LocaleList(newLocale)
+ LocaleList.setDefault(localeList)
+ configuration.locales = localeList
+ val context = ctx.createConfigurationContext(configuration)
return ContextWrapper(context)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/textValidator/DefaultEditTextValidator.kt b/core/src/main/java/info/nightscout/androidaps/utils/textValidator/DefaultEditTextValidator.kt
similarity index 96%
rename from app/src/main/java/info/nightscout/androidaps/utils/textValidator/DefaultEditTextValidator.kt
rename to core/src/main/java/info/nightscout/androidaps/utils/textValidator/DefaultEditTextValidator.kt
index 4c15100edd..2956a8d2b8 100644
--- a/app/src/main/java/info/nightscout/androidaps/utils/textValidator/DefaultEditTextValidator.kt
+++ b/core/src/main/java/info/nightscout/androidaps/utils/textValidator/DefaultEditTextValidator.kt
@@ -7,7 +7,7 @@ import android.text.TextUtils
import android.text.TextWatcher
import android.widget.EditText
import com.google.android.material.textfield.TextInputLayout
-import info.nightscout.androidaps.R
+import info.nightscout.androidaps.core.R
import info.nightscout.androidaps.utils.textValidator.validators.*
class DefaultEditTextValidator : EditTextValidator {
@@ -15,6 +15,9 @@ class DefaultEditTextValidator : EditTextValidator {
protected var testErrorString: String? = null
protected var emptyAllowed = false
protected lateinit var editTextView: EditText
+ private var tw: TextWatcher? = null
+ private var defaultEmptyErrorString: String? = null
+
protected var testType: Int
protected var classType: String? = null
protected var customRegexp: String? = null
@@ -26,8 +29,6 @@ class DefaultEditTextValidator : EditTextValidator {
protected var maxNumber = 0
protected var floatminNumber = 0f
protected var floatmaxNumber = 0f
- private var tw: TextWatcher? = null
- private var defaultEmptyErrorString: String? = null
@Suppress("unused")
constructor(editTextView: EditText, context: Context) {
@@ -167,44 +168,50 @@ class DefaultEditTextValidator : EditTextValidator {
}
@Suppress("unused")
- fun setClassType(classType: String?, testErrorString: String?, context: Context) {
+ fun setClassType(classType: String?, testErrorString: String?, context: Context) : DefaultEditTextValidator{
testType = EditTextValidator.TEST_CUSTOM
this.classType = classType
this.testErrorString = testErrorString
resetValidators(context)
+ return this
}
@Suppress("unused")
- fun setCustomRegexp(customRegexp: String?, context: Context) {
+ fun setCustomRegexp(customRegexp: String?, context: Context) : DefaultEditTextValidator {
testType = EditTextValidator.TEST_REGEXP
this.customRegexp = customRegexp
resetValidators(context)
+ return this
}
@Suppress("unused")
- fun setEmptyAllowed(emptyAllowed: Boolean, context: Context) {
+ fun setEmptyAllowed(emptyAllowed: Boolean, context: Context) : DefaultEditTextValidator {
this.emptyAllowed = emptyAllowed
resetValidators(context)
+ return this
}
- fun setEmptyErrorString(emptyErrorString: String?) {
+ fun setEmptyErrorString(emptyErrorString: String?) : DefaultEditTextValidator {
emptyErrorStringActual = if (!TextUtils.isEmpty(emptyErrorString)) {
emptyErrorString
} else {
defaultEmptyErrorString
}
+ return this
}
@Suppress("unused")
- fun setTestErrorString(testErrorString: String?, context: Context) {
+ fun setTestErrorString(testErrorString: String?, context: Context) : DefaultEditTextValidator {
this.testErrorString = testErrorString
resetValidators(context)
+ return this
}
@Suppress("unused")
- fun setTestType(testType: Int, context: Context) {
+ fun setTestType(testType: Int, context: Context) : DefaultEditTextValidator {
this.testType = testType
resetValidators(context)
+ return this
}
override fun testValidity(): Boolean {
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/textValidator/EditTextValidator.java b/core/src/main/java/info/nightscout/androidaps/utils/textValidator/EditTextValidator.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/utils/textValidator/EditTextValidator.java
rename to core/src/main/java/info/nightscout/androidaps/utils/textValidator/EditTextValidator.java
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/textValidator/ValidatingEditTextPreference.kt b/core/src/main/java/info/nightscout/androidaps/utils/textValidator/ValidatingEditTextPreference.kt
similarity index 94%
rename from app/src/main/java/info/nightscout/androidaps/utils/textValidator/ValidatingEditTextPreference.kt
rename to core/src/main/java/info/nightscout/androidaps/utils/textValidator/ValidatingEditTextPreference.kt
index b4a49c42de..ae75641b4c 100644
--- a/app/src/main/java/info/nightscout/androidaps/utils/textValidator/ValidatingEditTextPreference.kt
+++ b/core/src/main/java/info/nightscout/androidaps/utils/textValidator/ValidatingEditTextPreference.kt
@@ -1,11 +1,12 @@
package info.nightscout.androidaps.utils.textValidator
+import android.annotation.SuppressLint
import android.content.Context
import android.util.AttributeSet
import androidx.preference.EditTextPreference
import androidx.preference.EditTextPreference.OnBindEditTextListener
import androidx.preference.PreferenceViewHolder
-import info.nightscout.androidaps.R
+import info.nightscout.androidaps.core.R
class ValidatingEditTextPreference(ctx: Context, attrs: AttributeSet, defStyleAttr: Int, defStyleRes: Int)
: EditTextPreference(ctx, attrs, defStyleAttr, defStyleRes) {
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/AlphaNumericValidator.kt b/core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/AlphaNumericValidator.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/AlphaNumericValidator.kt
rename to core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/AlphaNumericValidator.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/AlphaValidator.kt b/core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/AlphaValidator.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/AlphaValidator.kt
rename to core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/AlphaValidator.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/AndValidator.kt b/core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/AndValidator.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/AndValidator.kt
rename to core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/AndValidator.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/CreditCardValidator.kt b/core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/CreditCardValidator.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/CreditCardValidator.kt
rename to core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/CreditCardValidator.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/DateValidator.kt b/core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/DateValidator.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/DateValidator.kt
rename to core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/DateValidator.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/DigitLengthRangeValidator.kt b/core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/DigitLengthRangeValidator.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/DigitLengthRangeValidator.kt
rename to core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/DigitLengthRangeValidator.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/DomainValidator.kt b/core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/DomainValidator.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/DomainValidator.kt
rename to core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/DomainValidator.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/DummyValidator.kt b/core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/DummyValidator.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/DummyValidator.kt
rename to core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/DummyValidator.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/EmailValidator.kt b/core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/EmailValidator.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/EmailValidator.kt
rename to core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/EmailValidator.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/EmptyValidator.kt b/core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/EmptyValidator.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/EmptyValidator.kt
rename to core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/EmptyValidator.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/FloatNumericRangeValidator.kt b/core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/FloatNumericRangeValidator.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/FloatNumericRangeValidator.kt
rename to core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/FloatNumericRangeValidator.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/HttpsUrlValidator.kt b/core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/HttpsUrlValidator.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/HttpsUrlValidator.kt
rename to core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/HttpsUrlValidator.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/IpAddressValidator.kt b/core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/IpAddressValidator.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/IpAddressValidator.kt
rename to core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/IpAddressValidator.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/MinDigitLengthValidator.kt b/core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/MinDigitLengthValidator.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/MinDigitLengthValidator.kt
rename to core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/MinDigitLengthValidator.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/MultiPhoneValidator.kt b/core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/MultiPhoneValidator.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/MultiPhoneValidator.kt
rename to core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/MultiPhoneValidator.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/MultiValidator.kt b/core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/MultiValidator.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/MultiValidator.kt
rename to core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/MultiValidator.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/NotValidator.kt b/core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/NotValidator.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/NotValidator.kt
rename to core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/NotValidator.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/NumericRangeValidator.kt b/core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/NumericRangeValidator.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/NumericRangeValidator.kt
rename to core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/NumericRangeValidator.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/NumericValidator.kt b/core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/NumericValidator.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/NumericValidator.kt
rename to core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/NumericValidator.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/OrValidator.kt b/core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/OrValidator.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/OrValidator.kt
rename to core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/OrValidator.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/PatternValidator.kt b/core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/PatternValidator.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/PatternValidator.kt
rename to core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/PatternValidator.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/PersonFullNameValidator.kt b/core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/PersonFullNameValidator.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/PersonFullNameValidator.kt
rename to core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/PersonFullNameValidator.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/PersonNameValidator.kt b/core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/PersonNameValidator.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/PersonNameValidator.kt
rename to core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/PersonNameValidator.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/PhoneValidator.kt b/core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/PhoneValidator.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/PhoneValidator.kt
rename to core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/PhoneValidator.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/PinStrengthValidator.kt b/core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/PinStrengthValidator.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/PinStrengthValidator.kt
rename to core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/PinStrengthValidator.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/RegexpValidator.kt b/core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/RegexpValidator.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/RegexpValidator.kt
rename to core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/RegexpValidator.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/SameValueValidator.kt b/core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/SameValueValidator.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/SameValueValidator.kt
rename to core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/SameValueValidator.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/Validator.kt b/core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/Validator.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/Validator.kt
rename to core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/Validator.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/WebUrlValidator.kt b/core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/WebUrlValidator.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/WebUrlValidator.kt
rename to core/src/main/java/info/nightscout/androidaps/utils/textValidator/validators/WebUrlValidator.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/DigitsKeyListenerWithComma.java b/core/src/main/java/info/nightscout/androidaps/utils/ui/DigitsKeyListenerWithComma.java
similarity index 99%
rename from app/src/main/java/info/nightscout/androidaps/utils/DigitsKeyListenerWithComma.java
rename to core/src/main/java/info/nightscout/androidaps/utils/ui/DigitsKeyListenerWithComma.java
index a84ccd61a2..6a3189c287 100644
--- a/app/src/main/java/info/nightscout/androidaps/utils/DigitsKeyListenerWithComma.java
+++ b/core/src/main/java/info/nightscout/androidaps/utils/ui/DigitsKeyListenerWithComma.java
@@ -1,4 +1,4 @@
-package info.nightscout.androidaps.utils;
+package info.nightscout.androidaps.utils.ui;
import android.text.InputType;
import android.text.SpannableStringBuilder;
diff --git a/core/src/main/java/info/nightscout/androidaps/utils/ui/MinutesNumberPicker.kt b/core/src/main/java/info/nightscout/androidaps/utils/ui/MinutesNumberPicker.kt
new file mode 100644
index 0000000000..d00a91104a
--- /dev/null
+++ b/core/src/main/java/info/nightscout/androidaps/utils/ui/MinutesNumberPicker.kt
@@ -0,0 +1,33 @@
+package info.nightscout.androidaps.utils.ui
+
+import android.content.Context
+import android.text.TextWatcher
+import android.util.AttributeSet
+import android.util.Log
+import android.view.View.OnFocusChangeListener
+import android.widget.Button
+import info.nightscout.androidaps.core.R
+import java.text.DecimalFormat
+
+class MinutesNumberPicker constructor(context: Context, attrs: AttributeSet? = null) : NumberPicker(context, attrs) {
+
+ fun setParams(initValue: Double, minValue: Double, maxValue: Double, step: Double, allowZero: Boolean, okButton: Button? = null, textWatcher: TextWatcher? = null) {
+ super.setParams(initValue, minValue, maxValue, step, null, allowZero, okButton)
+ }
+
+ override fun updateEditText() {
+ if (value == 0.0 && !allowZero) editText.setText("")
+ else {
+ if (focused) editText.setText(DecimalFormat("0").format(value))
+ else {
+ val hours = (value / 60).toInt()
+ val minutes = (value - hours * 60).toInt()
+ val formatted =
+ if (hours != 0) String.format(context.getString(R.string.format_hour_minute), hours, minutes)
+ else DecimalFormat("0").format(value)
+ editText.setText(formatted)
+ }
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/utils/NumberPicker.java b/core/src/main/java/info/nightscout/androidaps/utils/ui/NumberPicker.java
similarity index 90%
rename from app/src/main/java/info/nightscout/androidaps/utils/NumberPicker.java
rename to core/src/main/java/info/nightscout/androidaps/utils/ui/NumberPicker.java
index 775582473e..da5bf0ab92 100644
--- a/app/src/main/java/info/nightscout/androidaps/utils/NumberPicker.java
+++ b/core/src/main/java/info/nightscout/androidaps/utils/ui/NumberPicker.java
@@ -1,5 +1,6 @@
-package info.nightscout.androidaps.utils;
+package info.nightscout.androidaps.utils.ui;
+import android.app.Service;
import android.content.Context;
import android.os.Handler;
import android.os.Message;
@@ -10,6 +11,7 @@ import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
+import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
@@ -19,7 +21,9 @@ import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
-import info.nightscout.androidaps.R;
+import info.nightscout.androidaps.core.R;
+import info.nightscout.androidaps.utils.SafeParse;
+import info.nightscout.androidaps.utils.ToastUtils;
/**
* Created by mike on 28.06.2016.
@@ -39,12 +43,14 @@ public class NumberPicker extends LinearLayout implements View.OnKeyListener,
Double minValue = 0d;
Double maxValue = 1d;
Double step = 1d;
- NumberFormat formater;
+ NumberFormat formatter;
boolean allowZero = false;
TextWatcher textWatcher = null;
Button okButton = null;
+ protected Boolean focused = false;
+
private Handler mHandler;
private ScheduledExecutorService mUpdater;
private OnValueChangedListener mOnValueChangedListener;
@@ -93,7 +99,7 @@ public class NumberPicker extends LinearLayout implements View.OnKeyListener,
LayoutInflater.from(context).inflate(R.layout.number_picker_layout, this, true);
}
- private void initialize(Context context) {
+ protected void initialize(Context context) {
// set layout view
inflate(context);
@@ -136,7 +142,7 @@ public class NumberPicker extends LinearLayout implements View.OnKeyListener,
@Override
public void afterTextChanged(Editable s) {
- value = SafeParse.stringToDouble(editText.getText().toString());
+ if (focused) value = SafeParse.stringToDouble(editText.getText().toString());
callValueChangedListener();
if (okButton != null) {
if (value > maxValue || value < minValue)
@@ -146,6 +152,13 @@ public class NumberPicker extends LinearLayout implements View.OnKeyListener,
}
}
});
+
+ editText.setOnFocusChangeListener(new OnFocusChangeListener() {
+ @Override public void onFocusChange(View v, boolean hasFocus) {
+ focused = hasFocus;
+ updateEditText();
+ }
+ });
}
@Override
@@ -196,7 +209,7 @@ public class NumberPicker extends LinearLayout implements View.OnKeyListener,
this.minValue = minValue;
this.maxValue = maxValue;
this.step = step;
- this.formater = formater;
+ this.formatter = formater;
this.allowZero = allowZero;
callValueChangedListener();
this.okButton = okButton;
@@ -254,11 +267,11 @@ public class NumberPicker extends LinearLayout implements View.OnKeyListener,
updateEditText();
}
- private void updateEditText() {
+ protected void updateEditText() {
if (value == 0d && !allowZero)
editText.setText("");
else
- editText.setText(formater.format(value));
+ editText.setText(formatter.format(value));
}
private void callValueChangedListener() {
@@ -286,6 +299,9 @@ public class NumberPicker extends LinearLayout implements View.OnKeyListener,
@Override
public void onClick(View v) {
if (mUpdater == null) {
+ InputMethodManager imm = (InputMethodManager) getContext().getSystemService(Service.INPUT_METHOD_SERVICE);
+ imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
+ editText.clearFocus();
if (v == plusButton) {
inc(1);
} else {
diff --git a/app/src/main/res/drawable-hdpi/background_darkgray.xml b/core/src/main/res/drawable-hdpi/background_darkgray.xml
similarity index 100%
rename from app/src/main/res/drawable-hdpi/background_darkgray.xml
rename to core/src/main/res/drawable-hdpi/background_darkgray.xml
diff --git a/app/src/main/res/drawable-hdpi/border_gray.xml b/core/src/main/res/drawable-hdpi/border_gray.xml
similarity index 100%
rename from app/src/main/res/drawable-hdpi/border_gray.xml
rename to core/src/main/res/drawable-hdpi/border_gray.xml
diff --git a/app/src/main/res/drawable/toast_border_ok.xml b/core/src/main/res/drawable-hdpi/toast_border_ok.xml
similarity index 97%
rename from app/src/main/res/drawable/toast_border_ok.xml
rename to core/src/main/res/drawable-hdpi/toast_border_ok.xml
index 1c62848b31..c16b59d200 100644
--- a/app/src/main/res/drawable/toast_border_ok.xml
+++ b/core/src/main/res/drawable-hdpi/toast_border_ok.xml
@@ -1,12 +1,12 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/alert_border_error.xml b/core/src/main/res/drawable/alert_border_error.xml
similarity index 97%
rename from app/src/main/res/drawable/alert_border_error.xml
rename to core/src/main/res/drawable/alert_border_error.xml
index d1bcae1348..310604bdea 100644
--- a/app/src/main/res/drawable/alert_border_error.xml
+++ b/core/src/main/res/drawable/alert_border_error.xml
@@ -1,15 +1,15 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/alert_border_warning.xml b/core/src/main/res/drawable/alert_border_warning.xml
similarity index 97%
rename from app/src/main/res/drawable/alert_border_warning.xml
rename to core/src/main/res/drawable/alert_border_warning.xml
index c73a9517a5..6c6feeafe2 100644
--- a/app/src/main/res/drawable/alert_border_warning.xml
+++ b/core/src/main/res/drawable/alert_border_warning.xml
@@ -1,15 +1,15 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
diff --git a/core/src/main/res/drawable/ic_actions_profileswitch.xml b/core/src/main/res/drawable/ic_actions_profileswitch.xml
new file mode 100644
index 0000000000..31c93c3483
--- /dev/null
+++ b/core/src/main/res/drawable/ic_actions_profileswitch.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/core/src/main/res/drawable/ic_actions_refill.xml b/core/src/main/res/drawable/ic_actions_refill.xml
new file mode 100644
index 0000000000..09e8cd2953
--- /dev/null
+++ b/core/src/main/res/drawable/ic_actions_refill.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
diff --git a/core/src/main/res/drawable/ic_compare_profiles.xml b/core/src/main/res/drawable/ic_compare_profiles.xml
new file mode 100644
index 0000000000..d63aae66b2
--- /dev/null
+++ b/core/src/main/res/drawable/ic_compare_profiles.xml
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/core/src/main/res/drawable/ic_danar_useropt.xml b/core/src/main/res/drawable/ic_danar_useropt.xml
new file mode 100644
index 0000000000..04edfa4d71
--- /dev/null
+++ b/core/src/main/res/drawable/ic_danar_useropt.xml
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/core/src/main/res/drawable/ic_danarhistory.xml b/core/src/main/res/drawable/ic_danarhistory.xml
new file mode 100644
index 0000000000..d4ef6ac5f0
--- /dev/null
+++ b/core/src/main/res/drawable/ic_danarhistory.xml
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/core/src/main/res/drawable/ic_danarprofile.xml b/core/src/main/res/drawable/ic_danarprofile.xml
new file mode 100644
index 0000000000..d24a8eb1a5
--- /dev/null
+++ b/core/src/main/res/drawable/ic_danarprofile.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/core/src/main/res/drawable/ic_danarstats.xml b/core/src/main/res/drawable/ic_danarstats.xml
new file mode 100644
index 0000000000..81b3952eb4
--- /dev/null
+++ b/core/src/main/res/drawable/ic_danarstats.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
diff --git a/core/src/main/res/drawable/ic_doubledown.xml b/core/src/main/res/drawable/ic_doubledown.xml
new file mode 100644
index 0000000000..6bccc9cb47
--- /dev/null
+++ b/core/src/main/res/drawable/ic_doubledown.xml
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/core/src/main/res/drawable/ic_doubleup.xml b/core/src/main/res/drawable/ic_doubleup.xml
new file mode 100644
index 0000000000..9c56d4cf85
--- /dev/null
+++ b/core/src/main/res/drawable/ic_doubleup.xml
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_error_red_48dp.xml b/core/src/main/res/drawable/ic_error_red_48dp.xml
similarity index 100%
rename from app/src/main/res/drawable/ic_error_red_48dp.xml
rename to core/src/main/res/drawable/ic_error_red_48dp.xml
diff --git a/core/src/main/res/drawable/ic_flat.xml b/core/src/main/res/drawable/ic_flat.xml
new file mode 100644
index 0000000000..487a647f10
--- /dev/null
+++ b/core/src/main/res/drawable/ic_flat.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/core/src/main/res/drawable/ic_fortyfivedown.xml b/core/src/main/res/drawable/ic_fortyfivedown.xml
new file mode 100644
index 0000000000..673a965fe4
--- /dev/null
+++ b/core/src/main/res/drawable/ic_fortyfivedown.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/core/src/main/res/drawable/ic_fortyfiveup.xml b/core/src/main/res/drawable/ic_fortyfiveup.xml
new file mode 100644
index 0000000000..930857ec66
--- /dev/null
+++ b/core/src/main/res/drawable/ic_fortyfiveup.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/core/src/main/res/drawable/ic_home_profile.xml b/core/src/main/res/drawable/ic_home_profile.xml
new file mode 100644
index 0000000000..31c93c3483
--- /dev/null
+++ b/core/src/main/res/drawable/ic_home_profile.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/core/src/main/res/drawable/ic_invalid.xml b/core/src/main/res/drawable/ic_invalid.xml
new file mode 100644
index 0000000000..bdda131e7d
--- /dev/null
+++ b/core/src/main/res/drawable/ic_invalid.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
diff --git a/core/src/main/res/drawable/ic_local_save.xml b/core/src/main/res/drawable/ic_local_save.xml
new file mode 100644
index 0000000000..7b946244f3
--- /dev/null
+++ b/core/src/main/res/drawable/ic_local_save.xml
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/core/src/main/res/drawable/ic_singledown.xml b/core/src/main/res/drawable/ic_singledown.xml
new file mode 100644
index 0000000000..bc3a0e7501
--- /dev/null
+++ b/core/src/main/res/drawable/ic_singledown.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/core/src/main/res/drawable/ic_singleup.xml b/core/src/main/res/drawable/ic_singleup.xml
new file mode 100644
index 0000000000..6dda71fc74
--- /dev/null
+++ b/core/src/main/res/drawable/ic_singleup.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_trending_flat_white_48dp.xml b/core/src/main/res/drawable/ic_trending_flat_white_48dp.xml
similarity index 100%
rename from app/src/main/res/drawable/ic_trending_flat_white_48dp.xml
rename to core/src/main/res/drawable/ic_trending_flat_white_48dp.xml
diff --git a/core/src/main/res/drawable/mdtp_material_button_background.xml b/core/src/main/res/drawable/mdtp_material_button_background.xml
new file mode 100644
index 0000000000..f70c39c0cf
--- /dev/null
+++ b/core/src/main/res/drawable/mdtp_material_button_background.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/core/src/main/res/drawable/mdtp_material_button_selected.xml b/core/src/main/res/drawable/mdtp_material_button_selected.xml
new file mode 100644
index 0000000000..1733e2d3ea
--- /dev/null
+++ b/core/src/main/res/drawable/mdtp_material_button_selected.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/pillborder.xml b/core/src/main/res/drawable/pillborder.xml
similarity index 100%
rename from app/src/main/res/drawable/pillborder.xml
rename to core/src/main/res/drawable/pillborder.xml
diff --git a/core/src/main/res/layout/close.xml b/core/src/main/res/layout/close.xml
new file mode 100644
index 0000000000..682cf2bc22
--- /dev/null
+++ b/core/src/main/res/layout/close.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
diff --git a/app/src/main/res/layout/danar_statsactivity.xml b/core/src/main/res/layout/danar_statsactivity.xml
similarity index 88%
rename from app/src/main/res/layout/danar_statsactivity.xml
rename to core/src/main/res/layout/danar_statsactivity.xml
index d4320c05f2..3b19dcc30d 100644
--- a/app/src/main/res/layout/danar_statsactivity.xml
+++ b/core/src/main/res/layout/danar_statsactivity.xml
@@ -5,17 +5,7 @@
android:layout_height="fill_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingTop="@dimen/activity_vertical_margin"
- tools:context=".plugins.pump.danaR.activities.DanaRHistoryActivity">
-
-
-
-
+ tools:context="info.nightscout.androidaps.activities.TDDStatsActivity">
+ android:text="@string/tdd" />
+ android:text="@string/cumulative_tdd" />
+ android:text="@string/expweight" />
+ android:orientation="horizontal"
+ android:baselineAligned="false">
+ android:text="@string/warning_Message" />
+ android:text="@string/reload" />
diff --git a/core/src/main/res/layout/dialog_alert_custom.xml b/core/src/main/res/layout/dialog_alert_custom.xml
index f006387d28..312be67ac7 100644
--- a/core/src/main/res/layout/dialog_alert_custom.xml
+++ b/core/src/main/res/layout/dialog_alert_custom.xml
@@ -28,8 +28,8 @@
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_gravity="center"
- android:layout_marginLeft="2dp"
- android:layout_marginRight="50dp"
+ android:layout_marginStart="2dp"
+ android:layout_marginEnd="50dp"
android:layout_toEndOf="@id/alertdialog_icon"
android:textAlignment="center"
android:textAppearance="?android:attr/textAppearanceLarge"
diff --git a/app/src/main/res/layout/dialog_bolusprogress.xml b/core/src/main/res/layout/dialog_bolusprogress.xml
similarity index 94%
rename from app/src/main/res/layout/dialog_bolusprogress.xml
rename to core/src/main/res/layout/dialog_bolusprogress.xml
index e2da43a067..d6a2527288 100644
--- a/app/src/main/res/layout/dialog_bolusprogress.xml
+++ b/core/src/main/res/layout/dialog_bolusprogress.xml
@@ -3,7 +3,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
- tools:context=".dialogs.BolusProgressDialog"
+ tools:context="info.nightscout.androidaps.dialogs.BolusProgressDialog"
>
+ android:text="@string/stop" />
diff --git a/app/src/main/res/layout/dialog_error.xml b/core/src/main/res/layout/dialog_error.xml
similarity index 97%
rename from app/src/main/res/layout/dialog_error.xml
rename to core/src/main/res/layout/dialog_error.xml
index 42ad93318d..a731078fd4 100644
--- a/app/src/main/res/layout/dialog_error.xml
+++ b/core/src/main/res/layout/dialog_error.xml
@@ -3,7 +3,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
- tools:context=".dialogs.ErrorDialog">
+ tools:context="info.nightscout.androidaps.dialogs.ErrorDialog">
+ tools:context="info.nightscout.androidaps.dialogs.ProfileViewerDialog">
+ android:layout_centerVertical="true"
+ android:src="@drawable/ic_home_profile" />
@@ -127,7 +129,7 @@
android:layout_weight="2"
android:gravity="end"
android:layout_marginEnd="5dp"
- android:text="@string/nsprofileview_units_label"
+ android:text="@string/units_label"
android:textSize="14sp" />
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/spinner_centered.xml b/core/src/main/res/layout/spinner_centered.xml
similarity index 100%
rename from app/src/main/res/layout/spinner_centered.xml
rename to core/src/main/res/layout/spinner_centered.xml
diff --git a/app/src/main/res/raw/boluserror.mp3 b/core/src/main/res/raw/boluserror.mp3
similarity index 100%
rename from app/src/main/res/raw/boluserror.mp3
rename to core/src/main/res/raw/boluserror.mp3
diff --git a/app/src/main/res/raw/error.mp3 b/core/src/main/res/raw/error.mp3
similarity index 100%
rename from app/src/main/res/raw/error.mp3
rename to core/src/main/res/raw/error.mp3
diff --git a/core/src/main/res/values-af-rZA/strings.xml b/core/src/main/res/values-af-rZA/strings.xml
new file mode 100644
index 0000000000..547b8d8642
--- /dev/null
+++ b/core/src/main/res/values-af-rZA/strings.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Operasie nog nie ondersteun deur pomp.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/src/main/res/values-ar-rSA/strings.xml b/core/src/main/res/values-ar-rSA/strings.xml
new file mode 100644
index 0000000000..6cacb70673
--- /dev/null
+++ b/core/src/main/res/values-ar-rSA/strings.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/src/main/res/values-bg-rBG/strings.xml b/core/src/main/res/values-bg-rBG/strings.xml
new file mode 100644
index 0000000000..d2fc002a47
--- /dev/null
+++ b/core/src/main/res/values-bg-rBG/strings.xml
@@ -0,0 +1,228 @@
+
+
+ Сдвояване
+
+ Грешка
+ Не е зададен
+ Неуспешно обновяване на базалния профил
+ Профила на помпата е обновен
+ Грешни данни
+ Грешка при подаване на временен базал
+ Ще стартира %1$.2fЕ болус
+ Чакаме помпата
+ Свързване %1$d сек
+ Пускам %1$.2fЕ
+ Сдвояване
+ Свързване
+ Свързана
+ Не е сврзана
+ Разкачане
+ Стартиран AndroidAPS
+ %1$.2fЕ
+ %1$.0f / %2$d Е
+ %1$.2f Е/ч
+ %1$.2f ч
+ %1$d мин
+ %1$dm
+ Помпата е заета
+ Грешка при връзка с помпата
+ Достигнахте лимита
+ Цели
+ Затвори
+ Моля изчакайте...
+ Заглушаване
+ Презареди
+ Натиснат е СТОП!
+ Стоп
+ въглехидрати
+ Грешен профил !!!
+ НЕ Е АКТИВИРАН ПРОФИЛ
+ Дата
+ Единици
+ DIA (Време на действие на инсулина):
+ IC (Инсулин/въглехидр.):
+ ISF (Инс.чувствителност):
+ Базал
+ Целeва КЗ:
+ Инициализация ...
+ Сериен номер
+ Батерия
+ Последна връзка
+ Последен болус:
+ Инсулин за деня
+ Базална стойност
+ Временен базал
+ Удължен болус
+ Резервоар
+ История
+ Виж профил
+ Тип събитие
+ мг/дл
+ ммол/л
+ Допълнителни настройки
+ Bluetooth
+ BT ограничения
+ Изключва Bluetooth на телефона за една секунда, ако няма връзка с помпата. Това може да помогне на някои телефони, където Bluetooth блокира.
+
+ Ограничаване на макс. базална стойност до %1$.2f Е/ч поради %2$s
+ лимит на помпата
+ Ограничаване на максималната процентна стойност до %1$d%% поради %2$s
+ трябва да бъде положително число
+ Ограничаване на болус до %1$.1f Е поради %2$s
+ Помпата не е инициализирана, профила не е зададен!
+
+ Потвърждение
+ Съобщение
+ ОК
+ Откажи
+ Разбрах
+
+ Bluetooth Low Energy не се поддържа.
+ Bluetooth не е включен.
+ Локацията не е включена
+ За да работи откриването на нови устройсва чрез Bluetooth, трябва да включите локацията. AAPS не проследява вашето местоположение и ще можете да я изключите след успешното свързване.
+
+ преди %1$d мин
+ преди %1$.1fч
+ ч.
+ дни
+ часа
+ секунда
+ минута
+ час
+ ден
+ седмица
+ секунди
+ минути
+ часове
+ дни
+ седмици
+ мин.
+ д
+
+ Базалните стойности не са за кръгли часове: %1$s
+ Базалната стойност е заместена от минимално поддържаната стойност %1$s
+ Базалната стойност е заместена от максимално поддържаната стойност %1$s
+ /Е
+ Е/ч
+ гр/Е
+
+ Няма избран профил
+
+ * Само конкретни стойности! Диапазони не се поддържат за базал/болус при виртуална помпа.
+
+ Откажи временен базал
+ Нека текущия временен базал продължи
+ Стойност
+ Срок
+ Основание
+ Не се изисква промяна
+
+ Грешен профил: %1$s
+
+ %1$dмин
+
+ %1$s: ∑: %2$.2fЕ Бол: %3$.2fЕ Баз: %4$.2fЕ(%5$.0f%%)]]>
+ %1$s: ∑: %2$.2fЕ Бол: %3$.2fЕ Баз: %4$.2fЕ(%5$.0f%%) Въгл: %6$.0fгр]]>
+
+ Проверка на КЗ
+ Известие
+ Бележка
+ Въпрос
+ Физ. активност
+ Смяна на сет
+ Смяна на сензор
+ Старт на сензор
+ Смяна на резервоар
+ Смяна на профил
+ Болус за закуска
+ Болус за основно хранене
+ Болус корекция
+ Комбиниран болус
+ Старт на временен базал
+ Край на временен базал
+ Корекция с въглехидрати
+ OpenAPS спрян
+ Смяна на батерия
+ Временна цел
+ Откажи временна цел
+ Пръст
+ Сензор
+ Друго
+ неизвестно
+
+ Времето за връзка изтече
+
+ Приложено
+ Коментар
+ Успешен
+ Процент
+ Абсолютна
+ Инсулин (ед.):
+ Ед.
+ Изчаква резултат от помпата
+ SMB
+
+ %dгр допълнителни въглехидрати ще са необходими до %d минути
+
+ Статистика
+ Комулативна TDD
+ Експоненциално претеглена TDD
+ Базал
+ Болус
+ ОДД
+ Коефициент
+ # дни
+ Тегло
+ Възможна неточност, ако сте използвали болус за презареждане!
+ Стари данни - натиснете \"ПРЕЗАРЕДИ\"
+ Общо базален инсулин
+ ОБИ * 2
+
+ Засичане на времето
+ %1$dч:%2$dм
+
+ Помпата не поддържа тази операция.
+ Операцията не се поддържа от помпата (ВСЕ ОЩЕ).
+ ОК
+
+ Никога не сме се свързвали
+ Събуждане
+ Грешка в комуникацията
+ Изтече времето за връзка
+ Помпата е недостъпна
+ Грешна конфигурация
+ Активна
+ Спинка си
+
+ Базали
+ Конфигурации
+ Известия
+ Статистика
+ Неизвестни
+ Всички
+ Болуси
+ Пълнене
+ Аларми
+ Кръвна захар
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/src/main/res/values-cs-rCZ/strings.xml b/core/src/main/res/values-cs-rCZ/strings.xml
new file mode 100644
index 0000000000..1ca72eba96
--- /dev/null
+++ b/core/src/main/res/values-cs-rCZ/strings.xml
@@ -0,0 +1,228 @@
+
+
+ Párování
+
+ Chyba
+ Nenastaveno
+ Chyba při nastavení bazálního pprofilu
+ Bazální profil aktualizován
+ Chybná vstupní data
+ Chyba nastavování dočasného bazálu
+ Podávání %1$.2fU inzulínu
+ Čekání na pumpu
+ Připojování %1$d sec
+ Aplikováno %1$.2fU
+ Navazování spojení
+ Připojuji
+ Připojeno
+ Odpojeno
+ Odpojuji
+ AndroidAPS restartován
+ %1$.2fU
+ %1$.0f / %2$d U
+ %1$.2fU/h
+ %1$.2f h
+ %1$d min
+ %1$d m
+ Pumpa je zaneprázdněna
+ Chyba připojování pumpy
+ Dosaženo limitu
+ Cíle
+ Zavřít
+ Počkejte prosím…
+ Ztlumit
+ Znovu načíst
+ STISKNUTO STOP
+ Stop
+ Sacharidy
+ Chybný profil !!!
+ ŽÁDNÝ PROFIL NENASTAVEN
+ Datum
+ Jednotky
+ Doba působnosti inzulínu
+ Inzulínosacharidový poměr
+ Citlivost
+ Bazál
+ Cíl
+ Inicializuji ...
+ Sériové číslo
+ Baterie
+ Poslední spojení
+ Poslední bolus
+ Jednotek za den
+ Základní hodnota bazálu
+ Dočasný bazál
+ Prodloužený bolus
+ Zásobník
+ Historie pumpy
+ Zobrazit profil
+ Typ události
+ mg/dL
+ mmol/L
+ Rozšířené nastavení
+ Bluetooth
+ Hlídač BT
+ Vypne na 1 sek bluetooth v telefonu, pokud se nedaří připojit k pumpě. Může to pomoci u telefonů, které mají problémy s BT
+
+ Max bazál omezen na %1$.2f U/h: %2$s
+ limit pumpy
+ Bazál omezen na %1$d%%: %2$s
+ požadována kladná hodnota
+ Bolus omezen na %1$.1f U: %2$s
+ Pumpa není inicializována, profil nenastaven!
+
+ Potvrzení
+ Zpráva
+ OK
+ Zrušit
+ POTVRDIT
+
+ Bluetooth Low Energy nepodporováno.
+ Bluetooth není povoleno.
+ Zjišťování polohy není povoleno
+ Pro vyhledání Bluetooth zařízení na novějších telefonech musí být povoleno zjišťování polohy. AAPS vás nesleduje a po provedení párování můžete tuto volbu opět zakázat.
+
+ před %1$dm
+ před %1$.1fh
+ h
+ dnů
+ hodin
+ sekunda
+ minuta
+ hodina
+ den
+ týden
+ sekund
+ minut
+ hodin
+ dní
+ týdnů
+ m
+ d
+
+ Hodnoty bazálů nejsou zarovnané na celé hodiny: %1$s
+ Hodnota bazálu nahrazena minimální možnou: %1$s
+ Hodnota bazálu nahrazena maximální možnou: %1$s
+ /U
+ U/h
+ g/U
+
+ Není vybrán žádný profil
+
+ * Pouze diskrétní hodnoty a ne rozsahy jsou podporovány pro bazál/bolus ve virtuální pumpě.
+
+ Zrušit dočasný bazál
+ Nechat běžet aktuální dočasný bazál
+ Hodnota
+ Trvání
+ Zdůvodnění
+ Změna nepožadována
+
+ Chybný profil: %1$s
+
+ %1$d minut
+
+ %1$s: ∑: %2$.2fU Bol: %3$.2fU Baz: %4$.2fU(%5$.0f%%)]]>
+ %1$s: ∑: %2$.2fU Bol: %3$.2fU Baz: %4$.2fU(%5$.0f%%) Sach.: %6$.0fg]]>
+
+ Kontrola glykémie
+ Oznámení
+ Poznámka
+ Otázka
+ Cvičení
+ Výměna setu
+ Výměna senzoru
+ Znovu spuštění senzoru
+ Výměna inzulínu
+ Přepnutí profilu
+ Bolus na svačinu
+ Bolus na jídlo
+ Korekční bolus
+ Kombinovaný bolus
+ Dočasný bazál začátek
+ Dočasný bazál konec
+ Přídavek sacharidů
+ OpenAPS vypnuto
+ Výměna baterie pumpy
+ Dočasný cíl
+ Dočasný cíl konec
+ Glukoměr
+ Senzor
+ Ručně
+ neznámý
+
+ Vypršel čas připojování
+
+ Provedeno
+ Komentář
+ Úspěch
+ Procenta
+ Absolutní
+ Inzulín
+ U
+ Čekání na výsledek
+ SMB
+
+ Požadováno dalších %d g sacharidů během %d minut
+
+ Statistiky
+ Kumulativní CDD
+ Exponenciálně vážená CDD
+ Bazál
+ Bolus
+ CDD
+ Koef
+ Dní
+ Váha
+ Pravděpodobně nepřesné při používání bolusů k doplňování
+ Zastaralá data. Prosím načtěte je znovu
+ Celk. denní bazál
+ CZB * 2
+
+ Detekce času
+ %1$dh %2$dm
+
+ Operace není podporována pumpou a/nebo ovladačem.
+ Operace prozatím pumpou nepodporována.
+ OK
+
+ Nikdy nekontaktováno
+ Probouzení
+ Chyba komunikace
+ Vypršel časový limit komunikace
+ Pumpa nedostupná
+ Neplatná konfigurace
+ Aktivní
+ Spánek
+
+ Bazály
+ Konfigurace
+ Oznámení
+ Statistika
+ Neznámé
+ Vše
+ Bolusy
+ Doplňování
+ Alarmy
+ Glykémie
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/src/main/res/values-cy-rGB/strings.xml b/core/src/main/res/values-cy-rGB/strings.xml
new file mode 100644
index 0000000000..6cacb70673
--- /dev/null
+++ b/core/src/main/res/values-cy-rGB/strings.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/src/main/res/values-de-rDE/strings.xml b/core/src/main/res/values-de-rDE/strings.xml
new file mode 100644
index 0000000000..b26b0f6032
--- /dev/null
+++ b/core/src/main/res/values-de-rDE/strings.xml
@@ -0,0 +1,227 @@
+
+
+ Koppeln
+
+ Fehler
+ Nicht angegeben
+ Fehler beim Aktualisieren des Basalprofils
+ Basal-Profil in der Pumpe aktualisiert
+ Ungültige Eingabedaten
+ TBR Abgabe-Fehler
+ Werde %1$.2fIE abgeben
+ Warte auf Pumpe
+ Verbindungsaufbau seit %1$d s
+ Gebe %1$.2fIE ab
+ Handshaking
+ Verbinden
+ Verbunden
+ Getrennt
+ Verbindung wird getrennt
+ AndroidAPS gestartet
+ %1$.2f IE
+ %1$.0f / %2$d IE
+ %1$.2f IE/h
+ %1$.2f h
+ %1$d min.
+ %1$dm
+ Pumpe ist beschäftigt
+ Pumpen-Verbindungsfehler
+ Limit erreicht
+ Objectives (Ziele)
+ Schließen
+ Bitte warten…
+ Alarm stoppen
+ Neu laden
+ STOPP GEDRÜCKT
+ Stopp
+ Kohlenhydrate
+ Ungültiges oder defektes Profil!
+ KEIN PROFIL GESETZT
+ Datum
+ Einheiten
+ DIA
+ IC
+ ISF
+ Basal
+ Ziel
+ Initialisierung...
+ Seriennummer
+ Batterie
+ Letzte Verbindung
+ Letzter Bolus
+ Tägliche Einheiten
+ Basis-Basalrate
+ TBR
+ Verzögerter Bolus
+ Reservoir
+ Pumpen-Historie
+ Profil anzeigen
+ Ereignistyp
+ mg/dl
+ mmol/l
+ Erweiterte Einstellungen
+ Bluetooth
+ BT Watchdog
+ Deaktiviert Bluetooth kurzzeitig, falls keine Verbindung zur Pumpe besteht. Dies kann für Smartphones mit Verbindungsproblemen nützlich sein.
+
+ Begrenzung der max. Basalrate auf %1$.2f IE/h wegen %2$s
+ Limit der Pumpe
+ Begrenzung des max. Prozentsatzes auf %1$d%% wegen %2$s
+ Es muss ein positiver Wert sein.
+ Begrenze Bolusmenge auf %1$.1f IE wegen %2$s
+ Pumpe nicht initialisiert, Profil nicht gesetzt!
+
+ Bestätigung
+ Nachricht
+ OK
+ Abbrechen
+ VERWERFEN
+
+ Bluetooth-Low-Energy nicht unterstützt.
+ Bluetooth nicht aktiviert.
+ Standortdienst ist nicht aktiviert
+ Auf neueren Geräten muss für die Bluetooth-Erkennung der Standortdienst aktiviert sein. AAPS speichert keine Standortdaten und der Dienst kann nach erfolgreichem Pairing wieder deaktiviert werden.
+
+ vor %1$d Min.
+ vor %1$.1f Stunde
+ h
+ Tage
+ Stunden
+ Sekunde
+ Minute
+ Stunde
+ Tag
+ Woche
+ Sekunden
+ Minuten
+ Stunden
+ Tage
+ Wochen
+ min
+ d
+
+ Basalraten beginnen nicht zur vollen Stunde: %1$s
+ Basal-Wert wurde durch den kleinst möglichen Wert ersetzt: %1$s
+ Basal-Wert wurde durch größt möglichen Wert ersetzt: %1$s
+ /IE
+ IE/h
+ g/IE
+
+ Kein Profil ausgewählt
+
+ * Bei der virtuellen Pumpe können nur einzelne Werte und keine Bereiche zur Festlegung der Basal/Bolus-Granularität gewählt werden.
+
+ TBR abbrechen
+ Temporäre Basalrate aktiv lassen
+ Rate
+ Dauer
+ Begründung
+ Keine Anpassung benötigt
+
+ Ungültiges Profil: %1$s
+
+ %1$d Min.
+
+ %1$s: ∑: %2$.2fU Bol: %3$.2fU Bas: %4$.2fIE(%5$.0f%%)]]>
+ %1$s: ∑: %2$.2fU Bol: %3$.2fU Bas: %4$.2fIE(%5$.0f%%) KH: %6$.0fg]]>
+
+ BZ-Test
+ Ankündigung
+ Notiz
+ Frage
+ Bewegung
+ Pumpenkatheter-Wechsel
+ CGM-Sensor gesetzt
+ CGM-Sensor Start
+ Insulinreservoir-Wechsel
+ Profilwechsel
+ Snack-Bolus
+ Mahlzeiten-Bolus
+ Korrektur-Bolus
+ Combo-Bolus
+ TBR Start
+ TBR Ende
+ Kohlenhydrat-Korrektur
+ OpenAPS offline
+ Pumpenbatterie-Wechsel
+ Temporäres Ziel
+ Temporäres Ziel abbrechen
+ Finger
+ Sensor
+ Manuell
+ unbekannt
+
+ Zeitüberschreitung bei Verbindung
+
+ Ausgeführt
+ Kommentar
+ Erfolgreich
+ Prozent
+ Absolut
+ Insulin
+ IE
+ Auf Pumpenergebnis warten
+ SMB
+
+ %dg Kohlenhydrate sollten innerhalb von %d Minuten aufgenommen werden
+
+ Statistik
+ Kumulative TDD
+ Exponentiell gewichtete TDD
+ Basal
+ Bolus
+ TDD
+ Verhältnis
+ # Tage
+ Gewichtung
+ Möglicherweise ungenau, wenn zum Befüllen ein Bolus verwendet wurde!
+ Veraltete Daten, bitte klicke auf \"NEU LADEN\"
+ Tägl. Basalmenge
+ Tägl. Basalmenge * 2
+
+ Zeiterkennung
+
+ Aktion von Pumpe und/oder Treiber nicht unterstützt.
+ Operation NOCH NICHT von Pumpe unterstützt.
+ OK
+
+ Nie verbunden
+ Aufwecken
+ Fehler bei der Kommunikation
+ Zeitüberschreitung bei Kommunikation
+ Pumpe nicht erreichbar
+ Ungültige Einstellung
+ Aktiv
+ Schlafen
+
+ Basal
+ Konfigurationen
+ Benachrichtigungen
+ Statistiken
+ Unbekannte
+ Alle
+ Boli
+ Füllen
+ Alarme
+ Glukose
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/src/main/res/values-el-rGR/strings.xml b/core/src/main/res/values-el-rGR/strings.xml
new file mode 100644
index 0000000000..4a4b06493f
--- /dev/null
+++ b/core/src/main/res/values-el-rGR/strings.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Η λειτουργία δεν υποστηρίζεται ΑΚΟΜΑ από την αντλία.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/src/main/res/values-es-rES/strings.xml b/core/src/main/res/values-es-rES/strings.xml
new file mode 100644
index 0000000000..321d35aee2
--- /dev/null
+++ b/core/src/main/res/values-es-rES/strings.xml
@@ -0,0 +1,205 @@
+
+
+ Emparejando
+
+ Error
+ No configurado
+ Error al actualizar el perfil basal
+ Perfil basal actualizado en bomba
+ Datos inválidos
+ Basal Temporal no emitida
+ Se van a infundir %1$.2fU
+ Esperando bomba
+ Conexión por %1$d s
+ Infundiendo %1$.2fU
+ Estableciendo comunicacion
+ Conectando
+ Conectado
+ Desconectado
+ Desconectando
+ AndroidAPS iniciado
+ %1$.2fU
+ %1$.0f/%2$dU
+ %1$.2fU/h
+ %1$.2f h
+ %1$d min
+ %1$dm
+ Bomba ocupada
+ Error de conexión de la bomba
+ Límite permitido alcanzado
+ Objetivos
+ Cerrar
+ Por favor, espere…
+ Silenciar
+ Recargar
+ STOP pulsado
+ Detener
+ Carbohidratos [g]
+ Perfil inválido !!!
+ NINGÚN PERFIL ACTIVO
+ Fecha
+ Unidades
+ DIA (Duración Insulina Activa)
+ IC (Ratio Insulina/Carbohidratos)
+ ISF (Factor Sensibilidad Insulina)
+ Dosis Basal
+ Objetivo
+ Iniciando...
+ Número de serie
+ Batería
+ Última conexión
+ Último bolo
+ Unidades diarias
+ Dosis Basal
+ Basal Temporal
+ Bolo extendido
+ Reservorio
+ Historial de la bomba
+ Ver perfil
+ Tipo de evento
+ mg/dl
+ mmol/l
+ Ajustes avanzados
+ Bluetooth
+ Vigilante de BT
+ Apaga el bluetooth del móvil por un segundo si no hay conexión con la bomba. Esto ayuda con algunos móviles con problemas para establecer conexión bluetooth estable.
+
+ Limitando max basal rate a %1$.2f U/h debido a %2$s
+ límite de la bomba
+ Limitando porcentaje máximo de dosis a %1$d%% debido a %2$s
+ tiene que ser un valor positivo
+ Limitando el bolo a %1$.1f U debido a %2$s
+ Bomba no iniciada, ¡perfil establecido!
+
+ Confirmación
+ Mensaje
+ Ok
+ Cancelar
+ DESCARTAR
+
+ Bluetooth de baja energía no soportado.
+ Bluetooth no activado.
+ Ubicación no habilitada
+ Para activar la visibilidad Bluetooth en nuevos dispositivos, la ubicación debe estar habilitada. AAPS no hace un seguimiento de su ubicación y se puede desactivar después de realizar la vinculación.
+
+ Hace %1$dm
+ Hace %1$.1fh
+ h
+ días
+ horas
+ segundo
+ minuto
+ hora
+ día
+ semana
+ segundos
+ minutos
+ horas
+ días
+ semanas
+ m
+ d
+
+ Valores basales no alineados a las horas: %1$s
+ Valor basal reemplazado por el valor mínimo soportado: %1$s
+ Valor basal reemplazado por el valor máximo soportado: %1$s
+ /U
+ U/h
+ g/U
+
+ Ningun perfil seleccionado
+
+ * Sólo se soportan valores discretos, no rangos, como entrada de datos para basal/bolo en la bomba virtual.
+
+ Cancelar basal temporal
+ Deja ejecutar basal temporal
+ Dosis
+ Duración
+ Motivo
+ Ningún cambio solicitado
+
+ Perfil inválido: %1$s
+
+ %1$dmin
+
+
+ Medir glucosa
+ Aviso
+ Nota
+ Pregunta
+ Ejercicio
+ Cambio Cánula de Bomba
+ Inserción de sensor
+ Inicio de Sensor
+ Cambio Cartucho insulina
+ Cambio de perfil
+ Bolo de aperitivo
+ Bolo de comida
+ Bolo de corrección
+ Bolo combo
+ Inicio Basal Temp
+ Fin Basal Temp
+ Corrección Carbohidratos
+ OpenAPS sin conexión
+ Cambio batería bomba
+ Objetivo temporal
+ Cancelar Objetivo temporal
+ Dedo
+ Sensor
+ Manualmente
+ desconocido
+
+ Tiempo de conexión agotado
+
+ Establecido
+ Comentario
+ Exito
+ Porcentaje
+ Absoluto
+ Insulina
+ U
+ Esperando resultado
+ SMB
+
+ %dg Carbohidratos adicionales son necesarios dentro de %d minutos
+
+ Estadísticas
+ TDD acumulativa
+ TDD ampliada exponencialmente
+ Dosis Basal
+ Bolo
+ Dosis diaria
+ Ratio
+ # Días
+ Peso
+ Probablemente impreciso si se usan bolos para llenar/rellenar!
+ Datos caducados por favor pulsa RELOAD
+ Basal total
+ Basal diaria *2
+
+ Detección de tiempo
+
+ Operación no soportada todavía por la bomba.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/src/main/res/values-fi-rFI/strings.xml b/core/src/main/res/values-fi-rFI/strings.xml
new file mode 100644
index 0000000000..6cacb70673
--- /dev/null
+++ b/core/src/main/res/values-fi-rFI/strings.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/src/main/res/values-fr-rFR/strings.xml b/core/src/main/res/values-fr-rFR/strings.xml
new file mode 100644
index 0000000000..b9f44d9d35
--- /dev/null
+++ b/core/src/main/res/values-fr-rFR/strings.xml
@@ -0,0 +1,228 @@
+
+
+ Appairage
+
+ Erreur
+ Non configuré
+ La mise à jour du profil basal a échouée
+ Profil Basal mise à jour dans la pompe
+ Données saisies invalides
+ Erreur injection basal temporaire
+ %1$.2fU vont être injectées
+ Attente connection pompe
+ Connexion à %1$d en cours
+ Injection en cours %1$.2fU
+ Connexion
+ Connection en cours
+ Connectée
+ Déconnectée
+ Déconnexion en cours
+ AndroidAPS est lancé
+ %1$.2fU
+ %1$.0f / %2$d U
+ %1$.2fU/h
+ %1$.2f h
+ %1$d min
+ %1$dm
+ Pompe occupée
+ Erreur connection pompe
+ Vous avez atteint la limite maximale
+ Objectifs
+ Fermer
+ Merci de patienter...
+ Muet
+ Actualiser
+ ARRÊT APPUYÉ
+ Arrêt
+ Glucides
+ Profil incorrect !!!
+ PAS DE PROFIL DÉFINI
+ Date
+ Unités
+ DAI
+ G/I
+ SI
+ Basal
+ Cible
+ En cours d\'initialisation...
+ Numéro de série
+ Niveau batterie
+ Dernière connexion
+ Dernier bolus
+ Unités quotidiennes
+ Débit de Basal
+ Basal temporaire
+ Bolus étendu
+ Réservoir
+ Historique pompe
+ Consulter le profil
+ Type d\'évènement
+ mg/dl
+ mmol/l
+ Paramètres Avancés
+ Bluetooth
+ BT Watchdog
+ Coupe le Bluetooth du téléphone une seconde si la connexion pompe n’est pas possible. Cela peut aider pour les téléphones dont la connexion Bluetooth se bloque.
+
+ Limiter le débit de basal max à %1$.2f U/h à cause de %2$s
+ Limite de la pompe
+ Limiter le pourcentage max à %1$d%% à cause de %2$s
+ la valeur doit être positive
+ Limiter le Bolus à %1$.1f U à cause de %2$s
+ Pompe non initialisée, profil non défini !
+
+ Confirmation
+ Message
+ OK
+ Annuler
+ REJETER
+
+ Bluetooth Low Energy non pris en charge.
+ Bluetooth désactivé.
+ Localisation désactivée
+ La localisation doit être activée sur les nouveaux appareils pour que la recherche Bluetooth fonctionne. AAPS n\'enregistre pas votre localisation et la localisation peut être désactivée après l\'appairage.
+
+ il y a %1$dm
+ il y a %1$.1fh
+ h
+ jours
+ heures
+ seconde
+ minute
+ heure
+ jour
+ semaine
+ secondes
+ minutes
+ heures
+ jours
+ semaines
+ m
+ j
+
+ Valeurs des débits de basal non alignées sur des heures: %1$s
+ Valeur de basal remplacée par la valeur minimale autorisée : %1$s
+ Valeur de basal remplacée par la valeur maximale autorisée : %1$s
+ /U
+ U/h
+ g/U
+
+ Aucun profil séléctionné
+
+ * Uniquement les valeurs unitaires sont acceptées. Les plages pour les basal/bolus ne sont pas supportées par les pompes virtuelles.
+
+ Annuler Basal Temp
+ Laisser démarrer le Basal Temp
+ Débit
+ Durée
+ Raison
+ Pas de changement demandé
+
+ Profil incorrect : %1$s
+
+ %1$dmin
+
+ %1$s: ∑: %2$.2fU Bol: %3$.2fU Bas: %4$.2fU(%5$.0f%%)]]>
+ %1$s: ∑: %2$.2fU Bol: %3$.2fU Bas: %4$.2fU(%5$.0f%%) Gluc.: %6$.0fg]]>
+
+ Contrôle Glycémie
+ Notification
+ Remarque
+ Question
+ Activité Physique
+ Changement Zone D\'insertion
+ Insertion Capteur MGC
+ Démarrage Capteur MGC
+ Changement du Réservoir
+ Changement de profil
+ Bolus Goûter
+ Bolus Repas
+ Bolus de correction
+ Bolus Combiné
+ Début Basal Temp
+ Fin Basal Temp
+ Ressucrage
+ OpenAPS hors ligne
+ Changement Pile Pompe
+ Cible temp.
+ Annuler Cible Temporaire
+ Doigt
+ Capteur
+ Manuel
+ inconnu
+
+ Connexion expirée
+
+ Activé
+ Commentaire
+ Succès
+ Pourcentage
+ Absolu
+ Insuline
+ U
+ Attente de résultat
+ SMB
+
+ %dg de glucides supplémentaires requis d\'ici %d minutes
+
+ Stats
+ DTI cumulé
+ DTI avec Pondération Exponentielle
+ Basal
+ Bolus
+ DTI
+ Ratio
+ Nb Jours
+ Pondération
+ Peut être inexact si des bolus sont utilisés pour l’amorçage et le remplissage !
+ Données anciennes, appuyez sur \"Actualiser\"
+ Basal Totale (TBB)
+ DTB*2
+
+ Détection de temps
+ %1$dh %2$dm
+
+ Opération non prise en charge par la pompe et/ou le pilote.
+ Opération non ENCORE supportée par la pompe.
+ OK
+
+ Jamais contacté
+ Réveil en cours
+ Erreur de communication
+ Expiration du délai d\'attente en communication
+ Pompe hors de portée
+ Configuration non valable
+ Activé
+ En veille
+
+ Basals
+ Configurations
+ Notifications
+ Statistiques
+ Inconnus
+ Tous
+ Bolus
+ Amorcer
+ Alarmes
+ Glucose
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/src/main/res/values-ga-rIE/strings.xml b/core/src/main/res/values-ga-rIE/strings.xml
new file mode 100644
index 0000000000..6cacb70673
--- /dev/null
+++ b/core/src/main/res/values-ga-rIE/strings.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/src/main/res/values-hr-rHR/strings.xml b/core/src/main/res/values-hr-rHR/strings.xml
new file mode 100644
index 0000000000..6cacb70673
--- /dev/null
+++ b/core/src/main/res/values-hr-rHR/strings.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/src/main/res/values-it-rIT/strings.xml b/core/src/main/res/values-it-rIT/strings.xml
new file mode 100644
index 0000000000..cfa8421b84
--- /dev/null
+++ b/core/src/main/res/values-it-rIT/strings.xml
@@ -0,0 +1,228 @@
+
+
+ Associazione
+
+ Errore
+ Non impostato
+ Impossibile aggiornare il profilo basale
+ Profilo basale aggiornato nel micro
+ Dati di input non validi
+ Errore erogazione basale temporanea
+ Sto per erogare %1$.2fU
+ In attesa del micro
+ In connessione per %1$d s
+ Erogazione di %1$.2fU
+ Connessione
+ Connessione
+ Connesso
+ Disconnesso
+ Disconnessione
+ AndroidAPS avviato
+ %1$.2fU
+ %1$.0f / %2$d U
+ %1$.2fU/h
+ %1$.2f h
+ %1$d min
+ %1$dm
+ Il micro è occupato
+ Errore connessione micro
+ Hai raggiunto il limite consentito
+ Obiettivi
+ Chiudi
+ Attendi…
+ Muto
+ Ricarica
+ STOP PREMUTO
+ Stop
+ CHO
+ Profilo non valido !!!
+ NESSUN PROFILO IMPOSTATO
+ Data
+ Unità
+ DIA
+ IC
+ ISF
+ Basale
+ Target
+ Inizializzazione...
+ Numero seriale
+ Batteria
+ Ultima connessione
+ Ultimo bolo
+ Unità giornaliere
+ Velocità basale originale
+ Basale temporanea
+ Bolo Esteso
+ Serbatoio
+ Storico micro
+ Visualizza profilo
+ Tipo evento
+ mg/dl
+ mmol/l
+ Impostazioni avanzate
+ Bluetooth
+ BT Watchdog
+ Spegne il bluetooth del telefono per qualche secondo se non è possibile alcuna connessione al micro. Questo può essere utile su alcuni telefoni.
+
+ Limitazione max velocità basale a %1$.2f U/h a causa di: %2$s
+ limite micro
+ Limitazione max tasso percentuale a %1$d%% a causa di: %2$s
+ deve essere un valore positivo
+ Limitazione bolo a %1$.1f U a causa di: %2$s
+ Micro non inizializzato, profilo non impostato!
+
+ Conferma
+ Messaggio
+ OK
+ Annulla
+ RIMUOVI
+
+ Bluetooth Low Energy non supportato.
+ Bluetooth non abilitato.
+ La localizzazione non è abilitata
+ Affinché la ricerca bluetooth funzioni sui dispositivi più recenti, la localizzazione deve essere abilitata, ma può essere disabilitata dopo l\'associazione. AAPS non tiene traccia della tua posizione.
+
+ %1$dm fa
+ %1$.1fh fa
+ h
+ giorni
+ ore
+ secondo
+ minuto
+ ora
+ giorno
+ settimana
+ secondi
+ minuti
+ ore
+ giorni
+ settimane
+ m
+ d
+
+ Valori basali non allineati alle ore: %1$s
+ Valore basale sostituito dal minimo valore supportato: %1$s
+ Valore basale sostituito dal massimo valore supportato: %1$s
+ /U
+ U/h
+ g/U
+
+ Nessun profilo selezionato
+
+ * Sono supportati solo valori discreti, non intervalli di valori, come incrementi per basale/bolo nel micro virtuale.
+
+ Cancella basale temporanea
+ Lascia eseguire la basale temporanea
+ Tasso
+ Durata
+ Motivo
+ Nessun cambiamento richiesto
+
+ Profilo non valido: %1$s
+
+ %1$dmin
+
+ %1$s: ∑: %2$.2fU Boli: %3$.2fU Bas: %4$.2fU(%5$.0f%%)]]>
+ %1$s: ∑: %2$.2fU Boli: %3$.2fU Bas: %4$.2fU(%5$.0f%%) CHO: %6$.0fg]]>
+
+ Controllo BG
+ Avviso
+ Nota
+ Domanda
+ Esercizio fisico
+ Cambio posizione cannula
+ Inserimento sensore
+ Avvio sensore
+ Cambio cartuccia insulina
+ Cambio profilo
+ Bolo spuntino
+ Bolo pasto
+ Bolo di correzione
+ Bolo combo
+ Avvio basale temporanea
+ Fine basale temporanea
+ Correzione con CHO
+ OpenAPS Offline
+ Cambio batteria micro
+ Target temporaneo
+ Cancellazione temp-target
+ Dito
+ Sensore
+ Manuale
+ sconosciuto
+
+ Time out connessione
+
+ Attivato
+ Commento
+ OK
+ Percento
+ Assoluto
+ Insulina
+ U
+ In attesa del risultato
+ SMB
+
+ %dg di CHO aggiuntivi richiesti entro %d minuti
+
+ Statistiche
+ TDD cumulativo
+ TDD esponenzialmente ponderato
+ Basale
+ Bolo
+ TDD
+ Rapporto
+ # Giorni
+ Peso
+ Probabilmente inaccurato se per il caricamento/riempimento si usano i boli al posto dell\'apposita funzione!
+ Dati vecchi, premi \"RICARICA\"
+ Basale originale totale
+ TBB * 2
+
+ Rilevamento tempo
+ %1$dh %2$dm
+
+ Operazione non supportata dal micro e/o dal driver.
+ Operazione NON ANCORA supportata dal micro.
+ OK
+
+ Mai connesso
+ Risveglio
+ Errore nella comunicazione
+ Timeout della comunicazione
+ Micro irraggiungibile
+ Configurazione non valida
+ Attivo
+ In sospensione
+
+ Basali
+ Configurazioni
+ Notifiche
+ Statistiche
+ Sconosciuti
+ Tutto
+ Boli
+ Caricamento
+ Allarmi
+ Glicemia
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/src/main/res/values-iw-rIL/strings.xml b/core/src/main/res/values-iw-rIL/strings.xml
new file mode 100644
index 0000000000..6cacb70673
--- /dev/null
+++ b/core/src/main/res/values-iw-rIL/strings.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/src/main/res/values-ja-rJP/strings.xml b/core/src/main/res/values-ja-rJP/strings.xml
new file mode 100644
index 0000000000..4c45586f82
--- /dev/null
+++ b/core/src/main/res/values-ja-rJP/strings.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/src/main/res/values-ko-rKR/strings.xml b/core/src/main/res/values-ko-rKR/strings.xml
new file mode 100644
index 0000000000..b8ceea7c1f
--- /dev/null
+++ b/core/src/main/res/values-ko-rKR/strings.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 펌프에서 지원되지 않는 작동.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/src/main/res/values-lt-rLT/strings.xml b/core/src/main/res/values-lt-rLT/strings.xml
new file mode 100644
index 0000000000..00cd2ef279
--- /dev/null
+++ b/core/src/main/res/values-lt-rLT/strings.xml
@@ -0,0 +1,207 @@
+
+
+ Sujungiama
+
+ Klaida
+ Nenustatyta
+ Nepavyko atnaujinti bazės profilio
+ Bazės profilis pompoje atnaujintas
+ Neteisingai įvesti duomenys
+ Laikinos bazės suleidimo klaida
+ Bus suleista %1$.2fvv
+ Laukiama ryšio su pompa
+ Jungiamasi %1$d s
+ Leidžiama %1$.2fvv
+ Ryšio užmezgimas
+ Jungiamasi
+ Prisijungta
+ Atsijungta
+ Atsijungiama
+ AndroidAPS paleista
+ %1$.2fvv
+ %1$.0f / %2$d vv
+ %1$.2fvv/val
+ %1$.2f val.
+ %1$d min.
+ %1$dm
+ Pompa šiuo metu veikia
+ Pompos prisijungimo klaida
+ Pasiekėte leistiną ribą
+ Tikslai
+ Uždaryti
+ Palaukite…
+ Nutildyti
+ Atnaujinti
+ Paspausta STOP
+ Stop
+ AV
+ Netinkamas profilis!!!
+ Nenustatytas profilis
+ Data
+ Vienetai
+ IVT
+ IA
+ JIF
+ VB
+ Tikslas
+ Inicijuojama ...
+ Serijos numeris
+ Baterija
+ Paskutinis prisijungimas
+ Paskutinis bolusas
+ Paros insulinas
+ Pagrindinis bazės dydis
+ Laikina bazė
+ Ištęstas bolusas
+ Rezervuaras
+ Pompos istorija
+ Peržiūrėti profilį
+ Įvykio tipas
+ mg/dl
+ mmol/l
+ Papildomi nustatymai
+ Bluetooth
+ BT Watchdog
+ Vienai sekundei išjungia telefono bluetooth, jei ryšys su pompa nutrūksta. Gali būti veiksminga kai kuriems telefonų modeliams, turintiems BT problemų.
+
+ Ribojamas maksimalus bazės dydis%1$.2f vv/val dėl %2$s
+ pompos limitas
+ Ribojamas maks procentų skaičius %1$d%%, nes %2$s
+ reikšmė turi būti teigiama
+ Bolusas ribojamas iki %1$.1f vv dėl %2$s
+ Pompa neprijungta, profilis nepasirinktas!
+
+ Patvirtinimas
+ Pranešimas
+ Gerai
+ Atšaukti
+ ATMESTI
+
+ Bluetooth Low Energy nepalaikoma.
+ Bluetooth neįjungta.
+ Vietovės nustatymas neįjungtas
+ Vietos nustatymo paslauga turi būti įjungta, kad Bluetooth aptikimas veiktų naujesniuose įrenginiuose. AAPS neseka Jūsų lokacijos, o vietos nustatymo paslauga gali būti išjungta po sėkmingo įrenginių suporavimo.
+
+ prieš %1$d min
+ Prieš %1$.1f val.
+ val
+ d.
+ val.
+ sek.
+ min.
+ val.
+ d.
+ savaitė
+ sekundės
+ min.
+ val.
+ d.
+ savaičių
+ min.
+ d
+
+ Bazės reikšmės nesuderintos su valandomis: %1$s
+ Valandinė bazė pakeista mažiausia palaikoma verte: %1$s
+ Valandinė bazė pakeista didžiausia palaikoma verte: %1$s
+ /vv
+ Vv/val
+ g/vv
+
+ Nepasirinktas profilis
+
+ * Virtualioje pompoje palaikomos tik atskiros vertės, o ne diapazonas detalumui užtikrinti.
+
+ Atšaukti laikiną bazę
+ Paleisti laikinąją bazę
+ Vertė
+ Trukmė
+ Priežastis
+ Pakeitimai nereikalingi
+
+ Netinkamas profilis: %1$s
+
+ %1$dmin
+
+ %1$s: ∑: %2$.2fU Boluso: %3$.2fU Bazės: %4$.2fU(%5$.0f%%)]]>
+ %1$s: ∑: %2$.2fU Boluso: %3$.2fU Bazės: %4$.2fU(%5$.0f%%) AV: %6$.0fg]]>
+
+ KG testas
+ Pranešimas
+ Pastaba
+ Klausimas
+ Aktyvumas
+ Kateterio keitimas
+ NGJ įvedimas
+ NGJ paleidimas
+ Rezervuaro keitimas
+ Profilio keitimas
+ Bolusas užkandžiui
+ Bolusas valgiui
+ Bolusas korekcijai
+ Kombinuotas bolusas
+ Pradėta laikina bazė
+ Užbaigta laikina bazė
+ AV korekcijai
+ OpenAPS neprisijungus
+ Baterijos keitimas
+ Laikinas tikslas
+ Laikino tikslo atšaukimas
+ Iš piršto
+ Iš sensoriaus
+ Rankiniu būdu
+ nežinoma
+
+ Prijungimo laikas baigėsi
+
+ Vykdoma
+ Komentaras
+ Atlikta
+ Procentai
+ Absoliutus
+ Insulinas
+ vv
+ Laukiama rezultato
+ SMB
+
+ Būtini %dg papildomų AV per %d min
+
+ Statistika
+ BPD viso
+ Eksponentiškai svertinė BPD
+ Valandinė bazė
+ Bolusas
+ BPD
+ Vertė
+ # d.
+ Svoris
+ Duomenys netikslūs, jei bolusai naudojami kateterių užpildymui!
+ Duomenys seni, spauskite \"ATNAUJINTI\"
+ Pagrindinė bazė (PB)
+ PB * 2
+
+ Laiko nustatymas
+
+ Pompa dar nepalaiko operacijos.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/src/main/res/values-nl-rNL/strings.xml b/core/src/main/res/values-nl-rNL/strings.xml
new file mode 100644
index 0000000000..bdd382799c
--- /dev/null
+++ b/core/src/main/res/values-nl-rNL/strings.xml
@@ -0,0 +1,205 @@
+
+
+ Koppelen
+
+ Fout
+ Niet ingesteld
+ Update basaal profiel mislukt
+ Basaal profiel in pomp bijgewerkt
+ Ongeldige invoer
+ Storing toedienen tijdelijk basaal
+ Er worden %1$.2fE toegediend
+ Wacht op pomp
+ Verbinding maken gedurende %1$d s
+ Toedienen van %1$.2fE
+ Handshaking
+ Verbining maken
+ Verbonden
+ Verbinding verbroken
+ Verbinding aan het verbreken
+ AndroidAPS gestart
+ %1$.2fE
+ %1$.0f / %2$d E
+ %1$.2f E/uur
+ %1$.2f u
+ %1$d minuten
+ %1$dm
+ Pomp is bezig
+ Pomp verbindingsstoring
+ Limiet bereikt
+ Doelen
+ Sluiten
+ Even geduld a.u.b.…
+ Geluid dempen
+ Vernieuw
+ STOP INGEDRUKT
+ Stop
+ Koolhydraten
+ Ongeldig profiel !!!
+ Geen profiel ingesteld
+ Datum
+ Eenheden
+ DIA
+ KH ratio
+ ISF
+ Basaal
+ Streefdoel
+ Initialiseren...
+ Serie nummer
+ Batterij
+ Laatste verbinding
+ Laatste bolus
+ Dag totaal
+ Basis basale dosis
+ Tijdelijk basaal
+ Vertraagde bolus
+ Reservoir
+ Historiek
+ Profiel bekijken
+ Gebeurtenis type
+ mg/dl
+ mmol/l
+ Geavanceerde instellingen
+ Bluetooth
+ BT Watchdog
+ Zet de bluetooth van de telefoon even kort uit en weer aan. Dit kan op sommige gsm\'s een vastgelopen bluetooth service verhelpen.
+
+ Beperken van basaal tot max %1$.2f E/uur wegens de %2$s
+ Pomp limiet
+ Begrezen van max procentuele wijzigen tot %1$d%% wegens de %2$s
+ dit moet een positieve waarde zijn
+ Bolus beperkt tot %1$.1f E doordat %2$s
+ Pomp niet geïnitialiseerd, profiel niet ingesteld!
+
+ Bevestiging
+ Bericht
+ OK
+ Afbreken
+ AFWIJZEN
+
+ Bluetooth Low Energy wordt niet ondersteund.
+ Bluetooth niet ingeschakeld.
+ Locatie is niet ingeschakeld
+ Om Bluetooth discovery met nieuwere apparaten te laten werken moet locatie worden ingeschakeld. AAPS volgt je locatie niet en locatie kan ook weer worden uitgeschakeld nadat het koppelen is gelukt.
+
+ %1$dm geleden
+ %1$.1fu geleden
+ u
+ dagen
+ uren
+ seconde
+ minuut
+ uur
+ dag
+ week
+ seconden
+ minuten
+ uren
+ dagen
+ weken
+ m
+ d
+
+ Basaalstanden niet ingesteld in hele uren: %1$s
+ Basale waarde vervangen door minimaal ondersteunde waarde; %1$s
+ Basale waarde vervangen door maximale ondersteunde waarde: %1$s
+ /E
+ E/u
+ g/E
+
+ Geen profiel geselecteerd
+
+ * Alleen absolute waardes (geen van-tot bereik) worden ondersteund voor basaal / bolus in virtuele pomp.
+
+ Annuleer tijdelijk basaal
+ Laat tijdelijk basaal lopen
+ Dosis
+ Gedurende
+ Reden
+ Geen aanpassing noodzakelijk
+
+ Ongeldig profiel: %1$s
+
+ %1$dmin
+
+
+ BG Controle
+ Mededeling
+ Notitie
+ Vraag
+ Sport
+ Infuus wissel
+ CGM Sens. ingebracht
+ CGM Sens. Start
+ Insulinereservoir wissel
+ Profiel wissel
+ Snack bolus
+ Maaltijd bolus
+ Correctie bolus
+ Combinatie-Bolus
+ Start tijd. basaal
+ Einde tijd. basaal
+ Koolhydraten correctie
+ OpenAPS Offline
+ Pomp bat. wissel
+ Tijdelijk streefdoel
+ Tijdelijk streefdoel annuleren
+ Vingerprik
+ Sensor
+ Manueel
+ onbekend
+
+ Connectie verlopen
+
+ Uitgevoerd
+ Commentaar
+ Succes
+ Procent
+ Absoluut
+ Insuline
+ E
+ Wachtend op resultaat
+ SMB
+
+ %dg Extra Koolhydraten Nodig Binnen %d Minuten
+
+ Statistieken
+ Cumulatieve TDD
+ Exponentieel gewogen TDD
+ Basaal
+ Bolus
+ TDD
+ Ratio
+ # Dagen
+ Gewicht
+ Mogelijks inaccuraat bij gebruik van bolussen om infusieset te vullen!
+ Oude gegevens, druk op \"VERNIEUW\"
+ Totaal basaal
+ TBB * 2
+
+ Tijd detectie
+
+ Operatie NU nog niet ondersteund door pomp.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/src/main/res/values-pl-rPL/strings.xml b/core/src/main/res/values-pl-rPL/strings.xml
new file mode 100644
index 0000000000..4e387f137c
--- /dev/null
+++ b/core/src/main/res/values-pl-rPL/strings.xml
@@ -0,0 +1,205 @@
+
+
+ Parowanie
+
+ Błąd
+ Nie ustawiono
+ Nieudane uaktualnienie profilu bazy
+ Profil bazowy w pompie uaktualniony
+ Błędne dane wejściowe
+ Błąd podania bazy tymczasowej
+ Zamierzam podać %1$.2fU
+ Czekam na pompę
+ Łączenie przez %1$d s
+ Dostarczam %1$.2fU
+ Uściskdłoni
+ Łączę
+ Połączono
+ Rozłączono
+ Rozłączanie
+ AndroidAPS uruchomiony
+ %1$.2fU
+ %1$.0f / %2$d U
+ %1$.2fJ/g
+ %1$.2f h
+ %1$d min.
+ %1$dm
+ Pompa jest zajęta
+ Błąd połączenia z pompą
+ Osiągnąłeś dozwolony limit
+ Zadania
+ Zamknij
+ Proszę czekać…
+ Wycisz
+ Załaduj ponownie
+ NACIŚNIĘTY STOP
+ Stop
+ Węglowodany
+ Nieprawidłowy profil !!!
+ NIE USTAWIONO PROFILU
+ Data
+ Jednostki
+ DIA
+ IC
+ ISF
+ Baza
+ Cel
+ Inicjuje ...
+ Numer seryjny
+ Bateria
+ Ostatnie połączenie
+ Ostatni bolus
+ Jednostki dzienne
+ Podstawowa dawka bazowa
+ Baza tymczasowa
+ Bolus Przedłużony
+ Zbiornik
+ Historia pompy
+ Zobacz profil
+ Typ zdarzenia
+ mg/dl
+ mmol/l
+ Ustawienia zaawansowane
+ Bluetooth
+ BT Watchdog
+ Wyłącza bluetooth telefonu na jedną sekundę, jeśli nie jest możliwe połączenie z pompą. Może to pomóc w niektórych telefonach, w których blokuje się bluetooth.
+
+ Ograniczam maks. dawkę bazową do %1$.2f U/h z uwagi na %2$s
+ ograniczenie pompy
+ Ograniczam maksymalną wartość w procentach do %1$d%% z uwagi na %2$s
+ wartość musi być dodatnia
+ Ograniczam bolus do %1$.1f U z uwagi na %2$s
+ Pompa nie zainicjowana, profil nie ustawiony!
+
+ Potwierdzenie
+ Wiadomość
+ OK
+ Anuluj
+ ODRZUĆ
+
+ Bluetooth Low Energy nie jest obsługiwany.
+ Bluetooth nie jest włączony.
+ Lokalizacja nie jest włączona
+ Aby uruchomić odnajdywanie Bluetooth na nowszych urządzeniach, lokalizacja musi być uruchomiona. AAPS nie śledzi twojej lokalizacji więc po udanym parowaniu urządzenia Bluetooth można wyłączyć lokalizację.
+
+ %1$dmin temu
+ %1$.1fh temu
+ h
+ dni
+ godzin
+ sekunda
+ minuta
+ godzina
+ dzień
+ tydzień
+ sekund
+ minut
+ godzin
+ dni
+ tygodni
+ m
+ d
+
+ Wartości bazy nie są ustawione w pełnych godzinach: %1$s
+ Wartość bazy zastąpiona minimalną obsługiwaną wartością: %1$s
+ Wartość bazy zastąpiona maksymalną obsługiwaną wartością: %1$s
+ /U
+ U/h
+ g/U
+
+ Nie wybrano profilu
+
+ *Tylko wartości dyskretne, nie zakresy są wspierane jako dawki bazowe/bolusy w pompie wirtualnej.
+
+ Wyłącz bazę tymczasową
+ Pozwól na działanie bazy tymczasowej
+ Wartość
+ Czas trwania
+ Powód
+ Zmiana nie wymagana
+
+ Nieprawidłowy profil: %1$s
+
+ %1$dmin
+
+
+ Sprawdź BG
+ Powiadomienie
+ Notatka
+ Pytanie
+ Ćwiczenia
+ Zmiana wkłucia
+ Założenie sensora CGM
+ Uruchomienie sensora CGM
+ Zmiana zasobnika insuliny
+ Zmiana profilu
+ Bolus na przekąskę
+ Bolus na posiłek
+ Bolus korekcyjny
+ Bolus złożony
+ Dawka Tymczasowa Start
+ Dawka Tymczasowa Koniec
+ Węglow. korekcyjne
+ OpenAPS Rozłączony (Offline)
+ Zmiana baterii pompy
+ Cel tymczasowy (TT)
+ Odrzuć Cel tymczasowy
+ Palec
+ Sensor
+ Ręczne
+ nieznany
+
+ Przekroczono limit czasu połączenia
+
+ Wykonane
+ Komentarz
+ Sukces
+ Procent
+ Całkowity
+ Insulina
+ U
+ Oczekiwanie na wynik
+ SMB
+
+ Zalecane podanie %dg węglowodanów w przeciągu %d minut
+
+ Statystyki
+ Kumulatywna TDD (dawka dzienna)
+ Ważona wykładniczo TDD
+ Baza
+ Bolus
+ TDD
+ Stosunek
+ # Dni
+ Waga
+ Możliwa niedokładność jeśli używasz bolusów do wypełnień!
+ Stare dane, naciśnij \"RELOAD\"
+ Suma dzienna bazy (TBB)
+ TBB * 2
+
+ Wykrywanie czasu
+
+ Operacja nie jest JESZCZE wspierana przez pompę.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/src/main/res/values-pt-rBR/strings.xml b/core/src/main/res/values-pt-rBR/strings.xml
new file mode 100644
index 0000000000..3d9a8ff084
--- /dev/null
+++ b/core/src/main/res/values-pt-rBR/strings.xml
@@ -0,0 +1,197 @@
+
+
+ A emparelhar
+
+ Erro
+ Não definido
+ Falha ao atualizar o perfil basal
+ Perfil Basal atualizado na bomba
+ Dados de entrada inválidos
+ Erro na entrega da basal temporária
+ Vão ser administradas %1$.2fU
+ Aguardando a bomba
+ Conectando para %1$d
+ Administrando %1$.2fU
+ Cumprimento
+ Conectando
+ Conectado
+ Desconectado
+ A desligar
+ AndroidAPS iniciado
+ %1$.2fU
+ %1$.0f / %2$d U
+ %1$.2f h
+ A bomba está ocupada
+ Erro de conexão com a bomba
+ Atingiu o limite autorizado
+ Objetivos
+ Fechar
+ Por favor aguarde…
+ Silêncio
+ Recarregar
+ STOP PRESSIONADO
+ Parar
+ Carbos
+ Perfil inválido !!!
+ SEM PERFIL DEFINIDO
+ Data
+ Unidades
+ DIA
+ IC
+ ISF
+ Basal
+ Meta
+ Inicializando...
+ Número de série
+ Bateria
+ Última ligação
+ Último Bolus
+ Unidades diárias
+ Taxa Basal de base
+ Basal temporaria
+ Bólus estendido
+ Reservatório
+ Histórico da Bomba
+ Ver perfil
+ Tipo de evento
+ mg/dL
+ mmol/L
+ Configurações Avançadas
+ Bluetooth
+ Watchdog BT
+ Desliga o bluetooth do telefone durante um segundo se nenhuma conexão com bomba for possível. Este parâmetro pode ser util em alguns telefones, onde a pilha bluetooth congela.
+
+ A basal max está limitada a %1$.2f U/h por %2$s
+ limite bomba
+ A limitar rácio percentagem máx para %1$d%% porque %2$s
+ deve ser valor positivo
+ A limitar bólus para %1$.1f U porque %2$s
+ Bomba não inicializada, perfil não definido!
+
+ Confirmação
+ Mensagem
+ OK
+ Cancelar
+ Dispensar
+
+ Bluetooth de energia baixa (LE) não suportado.
+ Bluetooth não está activado.
+ Localização Não Está Activada
+ Para que a procura de Bluetooth funcione em aparelhos mais recentes, a localização tem que ser activada. A app não rastreia a sua localização e pode ser desativada depois de um emparelhamento bem sucedido.
+
+ %1$.1fh atrás
+ h
+ dias
+ horas
+ segundo
+ minuto
+ hora
+ dia
+ semana
+ segundos
+ minutos
+ horas
+ dias
+ semanas
+ m
+
+ Valores das basais não definidos por horas: %1$s
+ Valor da basal alterado para o valor mínimo suportado: %1$s
+ Valor da basal alterado para o valor máximo suportado: %1$s
+ /U
+ U/h
+ g/U
+
+ Nenhum perfil selecionado
+
+ * Somente valores discretos nos intervalos são suportados como granularidade para basal/bolus na bomba virtual.
+
+ Cancelar basal temporária
+ Permitir basal temp correr
+ Rácio
+ Duração
+ Motivo
+ Nenhuma alteração solicitada
+
+ Perfil inválido: %1$s
+
+
+
+ Verificação BG
+ Anúncio
+ Anotação
+ Pergunta
+ Exercício
+ Alteração do local do cateter
+ Colocação do Sensor CGM
+ Início do Sensor CGM
+ Mudança de Cartucho de Insulina
+ Troca de Perfil
+ Bólus Lanche
+ Bólus Refeição
+ Bólus Correcção
+ Bólus Combo
+ Início Basal Temp
+ Fim de Basal Temp
+ Correção Carbos
+ OpenAPS Offline
+ Mudança de Bateria
+ Alvo Temporário
+ Cancelar alvo temporário
+ Dedo
+ Sensor
+ Manual
+ desconhecido
+
+ Ligação expirou
+
+ Executado
+ Commentário
+ Sucesso
+ Percentagem
+ Absoluto
+ Insulina
+ U
+ Aguardando resultados
+ SMB
+
+
+ Dose diária acumulativa
+ Dose diária exponencialmente ponderada
+ Basal
+ Bólus
+ TDD
+ Média
+ # Dias
+ Peso
+ Possivelmente impreciso se foram usados bolus para purgar/preencher!
+ Dados antigos, pressione \"Recarregar\"
+ Basal Diária Total
+ Basal diária * 2
+
+ Detecção de tempo
+
+ Operação não suportada ainda pela Bomba.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/src/main/res/values-pt-rPT/strings.xml b/core/src/main/res/values-pt-rPT/strings.xml
new file mode 100644
index 0000000000..009755726b
--- /dev/null
+++ b/core/src/main/res/values-pt-rPT/strings.xml
@@ -0,0 +1,228 @@
+
+
+ A Emparelhar
+
+ Erro
+ Não definido
+ Falha a actualizar perfil da basal
+ Perfil Basal actualizado na bomba
+ Entrada Inválida
+ Erro na administração da Basal Temp
+ A ser administrado %1$.2fU
+ À espera da bomba
+ A ligar durante %1$d s
+ A administrar %1$.2fU
+ Cumprimento
+ A ligar
+ Ligado
+ Desligado
+ A desligar
+ AndroidAPS iniciado
+ %1$.2fU
+ %1$.0f / %2$d U
+ %1$.2fU/h
+ %1$.2f h
+ %1$d mins
+ %1$dm
+ A bomba está ocupada
+ Erro de ligação da bomba
+ Atingiu o limite autorizado
+ Objectivos
+ Fechar
+ Por favor aguarde…
+ Silêncio
+ Recarregar
+ PARAR PRESSIONADO
+ Parar
+ Hidratos
+ Perfil inválido !!!
+ SEM PERFIL DEFINIDO
+ Data
+ Unidades
+ DIA
+ IC
+ FSI
+ Basal
+ Alvo
+ A inicializar ...
+ Número de série
+ Bateria
+ Última ligação
+ Último bólus
+ Unidades diárias
+ Taxa Basal de base
+ Basal temp
+ Bólus Prolongado
+ Reservatório
+ Histórico da Bomba
+ Ver perfil
+ Tipo de evento
+ mg/dL
+ mmol/L
+ Configurações Avançadas
+ Bluetooth
+ Watchdog BT
+ Desliga o bluetooth do telefone durante um segundo se nenhuma ligação com bomba for possível. Este parâmetro pode ser útil em alguns telefones, onde o bluetooth congela.
+
+ A basal máx está limitada a %1$.2f U/h por %2$s
+ limite bomba
+ A limitar rácio percentagem máx para %1$d%% porque %2$s
+ deve ser valor positivo
+ A limitar bólus para %1$.1f U porque %2$s
+ Bomba não inicializada, perfil não definido!
+
+ Confirmação
+ Mensagem
+ OK
+ Cancelar
+ DISPENSAR
+
+ Bluetooth Low Energy não suportado.
+ Bluetooth não está activado.
+ Localização Não Está Activa
+ Para a Pesquisa Bluetooth funcionar em dispositivos mais recentes, a localização deve ser activada. AAPS não acompanha a sua localização e pode ser desactivada após o emparelhamento bem-sucedido.
+
+ %1$dm atrás
+ %1$.1fh atrás
+ h
+ dias
+ horas
+ segundo
+ minuto
+ hora
+ dia
+ semana
+ segundos
+ minutos
+ horas
+ dias
+ semanas
+ m
+ d
+
+ Valores das basais não definidos por horas: %1$s
+ Valor da basal alterado para o valor mínimo suportado: %1$s
+ Valor da basal alterado para o valor máximo suportado: %1$s
+ /U
+ U/h
+ g/U
+
+ Nenhum perfil seleccionado
+
+ * Somente valores discretos nos intervalos são suportados como granularidade para basal/bolus na bomba virtual.
+
+ Cancelar Basal Temp
+ Permitir Basal Temp Correr
+ Rácio
+ Duração
+ Motivo
+ Nenhuma alteração solicitada
+
+ Perfil inválido: %1$s
+
+ %1$dmin
+
+ %1$s: ∑: %2$.2fU Bol: %3$.2fU Bas: %4$.2fU(%5$.0f%%)]]>
+ %1$s: ∑: %2$.2fU Bol: %3$.2fU Bas: %4$.2fU(%5$.0f%%) Hidratos: %6$.0fg]]>
+
+ Verificar Glic
+ Anúncio
+ Nota
+ Questão
+ Exercício
+ Mudança Local Bomba
+ Colocação Sensor CGM
+ Início do Sensor CGM
+ Mudança de Cartucho de Insulina
+ Troca de Perfil
+ Bólus Lanche
+ Bólus Refeição
+ Bólus Correcção
+ Bólus Combo
+ Início Basal Temp
+ Fim Basal Temp
+ Correcção Hidratos
+ OpenAPS Offline
+ Troca Bateria Bomba
+ Alvo Temporário
+ Cancelar Alvo Temporário
+ Dedo
+ Sensor
+ Manual
+ desconhecido
+
+ Ligação expirou
+
+ Realizado
+ Comentário
+ Sucesso
+ Percentagem
+ Absoluto
+ Insulina
+ U
+ À espera de resultado
+ SMB
+
+ %dg Hidratos Adicionais Necessários Dentro de %d Minutos
+
+ Estatísticas
+ Dose diária acumulativa
+ Dose diária exponencialmente ponderada
+ Basal
+ Bólus
+ TDD
+ Rácio
+ # Dias
+ Peso
+ Possivelmente impreciso se foram usados bólus para purgar/preencher!
+ Dados antigos, pressione \"Recarregar\"
+ Basal Diária Total
+ Basal diária * 2
+
+ Detecção de tempo
+ %1$dh %2$dm
+
+ Operação não suportada pela Bomba e/ou Controlador.
+ Operação não suportada ainda pela Bomba.
+ OK
+
+ Nunca contactado
+ A acordar
+ Erro com comunicação
+ Tempo limite para comunicação
+ Bomba inacessível
+ Configuração inválida
+ Activo
+ A dormir
+
+ Basais
+ Configurações
+ Notificações
+ Estatísticas
+ Desconhecido
+ Tudo
+ Bólus
+ Purgar
+ Alarmes
+ Glucose
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/src/main/res/values-ro-rRO/strings.xml b/core/src/main/res/values-ro-rRO/strings.xml
new file mode 100644
index 0000000000..883b79b98f
--- /dev/null
+++ b/core/src/main/res/values-ro-rRO/strings.xml
@@ -0,0 +1,229 @@
+
+
+ Împerechere
+
+ Eroare
+ Nesetată
+ Actualizarea profilului bazalei a eșuat
+ Profilul bazalei a fost modificat în pompă
+ Date de intrare incorecte
+ Eroare la livrare bazală temporară
+ Se vor livra %1$.2fU
+ Se așteaptă pompa
+ Conectat de %1$d s
+ Se livrează %1$.2fU
+ Împerechere
+ Se conectează
+ Conectat
+ Deconectat
+ Se deconectează
+ AndroidAPS a pornit
+ %1$.2fU
+ %1$.0f / %2$d U
+ %1$.2fU/h
+ %1$.2f h
+ %1$d min
+ %1$dm
+ Pompa face altă acțiune
+ Eroare de conexiune cu pompa
+ Ați atins limita permisă
+ Obiective
+ Închide
+ Așteptați…
+ Liniște
+ Reîncărcare
+ STOP APĂSAT
+ Stop
+ Carbohidrați
+ Profil invalid!!!
+ NICIUN PROFIL SETAT
+ Data
+ Unități
+ DIA
+ IC
+ ISF
+ Bazală
+ Țintă
+ Inițializare...
+ Număr serial
+ Baterie
+ Ultima conexiune
+ Ultimul bolus
+ Unități zilnic
+ Rată bazală implicită
+ Bazală temporară
+ Bolus extins
+ Rezervor
+ Istoric pompă
+ Afișează profilul
+ Tip eveniment
+ mg/dl
+ mmol/l
+ Setări avansate
+ Bluetooth
+ BT Watchdog
+ Oprește bluetooth-ul telefonului pentru o secundă dacă nu se poate conecta la pompă. Aceasta poate ajuta în cazul telefoanelor cu bluetooth incompatitibil.
+
+ Se limitează maximul ratei bazale la %1$.2f U/o datorită %2$s
+ limită pompă
+ Se limitează procentul ratei maxime la %1$d%% datorită %2$s
+ trebuie să fie o valoare pozitivă
+ Se limitează bolusul la %1$.1f U datorită %2$s
+ Pompa nu este inițializată, profilul nu este setat!
+
+ Confirmare
+ Mesaj
+ OK
+ Renunță
+ RENUNȚĂ
+
+ BLE nu este suportat.
+ Bluetooth-ul este dezactivat.
+ Localizarea este dezactivată
+ Pentru a putea căuta dispozitive Bluetooth noi, trebuie să activați localizarea. AAPS nu folosește datele dumneavoastră de localizare și acestea pot fi dezactivate după stabilirea conexiunii cu pompa.
+
+ acum %1$dmin
+ %1$.1f h în urmă
+ h
+ zile
+ ore
+ secundă
+ minut
+ oră
+ zi
+ săptămână
+ secunde
+ minute
+ ore
+ zile
+ săptămâni
+ min
+ z
+
+ Valori bazale nesincronizate cu ora: %1$s
+ Valoarea bazalei a fost înlocuită cu valoarea minimă posibilă: %1$s
+ Valoarea bazalei a fost înlocuită cu valoarea maximă posibilă: %1$s
+ /U
+ U/h
+ g/U
+
+ Niciun profil selectat
+
+ * Pompa virtuală acceptă doar valori specifice ca și incremente, nu și intervale de valori.
+* Doar valorile specifice, nu şi intervalele de valori sunt suportate ca şi incremente în pompa virtuală.
+
+ Anulează bazala temporară
+ Lasă să funcționeze bazala temporară
+ Rată
+ Durată
+ Motiv
+ Nu este solicitată nicio schimbare
+
+ Profil invalid: %1$s
+
+ %1$dmin
+
+ %1$s: ∑: %2$.2fU Bolus: %3$.2fU Bazal: %4$.2fU(%5$.0f%%)]]>
+ %1$s: ∑: %2$.2fU Bolus: %3$.2fU Bazal: %4$.2fU(%5$.0f%%) CH: %6$.0fg]]>
+
+ Verificare glicemie
+ Anunț
+ Notă
+ Întrebare
+ Activitate fizică
+ Schimbare loc pompă
+ Inserare senzor
+ Start senzor
+ Schimbare cartuș insulină
+ Schimbare de profil
+ Bolus Gustare
+ Bolus Masă
+ Bolus de corecție
+ Bolus combo
+ Start bazală temporară
+ Sfârșit bazală temporară
+ Corecție de carbohidrați
+ OpenAPS Offline
+ Schimbare baterie pompă
+ Ţintă temporară
+ Oprire ţintă temporară
+ Deget
+ Senzor
+ Manual
+ necunoscută
+
+ Conectare eșuată
+
+ Executat
+ Comentariu
+ Succes
+ Procent
+ Absolut
+ Insulină
+ U
+ Se așteaptă rezultatul
+ SMB
+
+ %dg carbohidrați suplimentari necesari în %d minute
+
+ Statistici
+ TDD cumulat
+ TDD estimat exponențial
+ Bazală
+ Bolus
+ TDD
+ Rata
+ # Zile
+ Greutate
+ Posibil fără acuratețe bună dacă folosiți bolus de insulină pentru amorsare/umplere!
+ Date vechi, apăsați \"REÎNCĂRCARE\"
+ Total bazală implicită
+ TBB * 2
+
+ Detectare timp
+ %1$dh %2$dm
+
+ Operațiunea nu este suportată de către pompă și/sau driver.
+ Operațiunea nu este ÎNCĂ suportată de către pompă.
+ OK
+
+ Niciodată contactată
+ Se pornește
+ Eroare de comunicație
+ Comunicația nu a reușit la timp
+ Pompă indisponibilă
+ Configurație invalidă
+ Activă
+ În repaus
+
+ Bazale
+ Configurații
+ Notificări
+ Statistici
+ Necunoscute
+ Toate
+ Bolusuri
+ Amorsare
+ Alarme
+ Glicemie
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/src/main/res/values-ru-rRU/strings.xml b/core/src/main/res/values-ru-rRU/strings.xml
new file mode 100644
index 0000000000..317fe218d4
--- /dev/null
+++ b/core/src/main/res/values-ru-rRU/strings.xml
@@ -0,0 +1,228 @@
+
+
+ Сопряжение
+
+ Ошибка
+ Не выбрано
+ не удалось обновить базальный профиль
+ базальный профиль помпы обновлен
+ введенные данные неверны
+ Ошибка подачи врем базала
+ Начинается подача болюса %1$.2fед.
+ ожидание помпы
+ Связь установлена за %1$d сек
+ Подается болюс %1$.2fед.
+ Подтверждение связи
+ соединение устанавливается
+ соединение установлено
+ Разъединено
+ разъединение
+ AndroidAPS запущен
+ %1$.2f ед
+ %1$.0f/%2$d ед
+ %1$.2f ед/час
+ %1$.2f ч
+ %1$d мин
+ %1$dм
+ помпа занята
+ ошибка соединения
+ разрешенный предел достигнут
+ Цели
+ Закрыть
+ Подождите…
+ Отключить звук
+ Перезагрузка истории
+ нажат стоп
+ стоп
+ Углеводы
+ Неверный профиль !!!
+ ПРОФИЛЬ НЕ ЗАДАН
+ дата
+ единицы
+ DIA (время действия инсулина)
+ IC (инсулин/углеводы):
+ ISF (чувствительность к инсулину)
+ базал
+ Целевое значение СК:
+ инициализация...
+ Серийный номер
+ батарея
+ прошлое соединение
+ предыдущий болюс
+ суточные единицы
+ базовая величина базала
+ врем базал
+ Пролонгированный болюс
+ Резервуар
+ Журнал помпы
+ просмотр профиля
+ тип события
+ мг/дл
+ ммоль/л
+ расширенные настройки
+ Bluetooth
+ Дежурный режим Watchdog
+ Выключает bluetooth телефона на одну секунду, если подключение к помпе невозможно. Это помогает на тех телефонах, где зависает модуль bluetooth.
+
+ Макс базальный уровень ограничен до %1$.2f ед/ч вследствие %2$s
+ лимит помпы
+ Макс процент базала ограничен до %1$d%% ед/ч вследствие %2$s
+ величина должна быть положительной
+ Макс уровень болюса ограничен до %1$.1f ед вследствие %2$s
+ помпа не инициализирована, профиль не установлен
+
+ Подтверждение
+ Сообщение
+ OK
+ Отменить
+ ОТКЛОНИТЬ
+
+ Bluetooth с низким энергопотреблением не поддерживается.
+ Bluetooth не включен.
+ Геолокация не включена
+ Для обнаружения Bluetooth на новых устройствах необходимо включить геолокацию. AAPS не отслеживает ваше местоположение и может быть отключен после успешного сопряжения.
+
+ %1$d мин. назад
+ %1$.1fч. назад
+ ч
+ дн
+ час
+ сек
+ мин
+ час
+ дн
+ нед
+ сек
+ мин
+ час
+ дн
+ нед
+ мин
+ дн
+
+ Базальные значения не выровнены по часам: %1$s
+ Значение базала заменено минимальной поддерживаемой величиной: %1$s
+ Значение базала заменено максимальной поддерживаемой величиной: %1$s
+ /ед
+ ед/ч
+ г/ед
+
+ профиль не выбран
+
+ * В виртуальной помпе поддерживаются только дискретные величины для обработки базала/болюса.
+
+ отмена врем базала
+ Оставить временный базал работающим
+ Скорость
+ Продолжительность
+ Основание
+ Именения не запрошены
+
+ Недопустимый профиль: %1$s
+
+ %1$d мин
+
+ %1$s: ∑: %2$.2fедБол:%3$.2fед Баз: %4$.2fед(%5$.0f%%)]]>
+ %1$s∑: %2$.2fU Бол: %3$.2fед Баз: %4$.2fед(%5$.0f%%) ГУ: %6$.0fг]]>
+
+ Проверка ГК
+ Оовещение
+ Примечание
+ Вопрос
+ Нгрузка
+ Сена места катетера помпы
+ Установка сенсора мониторинга глюкозы
+ Сарт сенсора
+ Замена картриджа инсулина
+ Смена профиля
+ Болюс на перекус
+ Болюс на еду
+ Болюс на коррекцию
+ Комбинированный болюс
+ Начало действия врем базала
+ Оконч действия врем базала
+ Коррекция углеводов
+ OpenAPS в автономном режиме
+ Замена батареи помпы
+ Временная цель
+ Отмена временной цели
+ Палец
+ Сенсор
+ Вручную
+ неизвестно
+
+ Истекло время ожидания соединения
+
+ Выполнено
+ Комментарий
+ Успешно
+ Процент
+ Абсолютный
+ Инсулин
+ Ед
+ Ожидание результата
+ Супер микро болюс SMB
+
+ Необходимы дополнительные углеводы \"%d г в течение %d минут\"
+
+ Статистика
+ накопительные TDD
+ экспоненциально взвешенные TDD
+ базал
+ Болюс
+ TDD/общая суточная доза
+ коэффициент
+ количество дней
+ вес
+ возможны неточности если болюсы использовались для заполнения
+ старые данные. нажмите \"перезагрузка\"
+ общий базал
+ общий базал*2
+
+ Определение времени
+ %1$dч %2$dмин
+
+ Операция не поддерживается помпой и/или драйвером.
+ Операция ЕЩЕ не поддерживается помпой.
+ OK
+
+ Никогда не подключалась
+ Пробуждение
+ Ошибка связи
+ Таймаут связи
+ Помпа недоступна
+ Недопустимая конфигурация
+ Активно
+ Сон
+
+ Базал
+ Конфигурация
+ Уведомления
+ Статистика
+ Неизвестные
+ Все
+ Болюсы
+ Заполнение инфузионной системы
+ Оповещения об опасности
+ Гликемия
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/src/main/res/values-sk-rSK/strings.xml b/core/src/main/res/values-sk-rSK/strings.xml
new file mode 100644
index 0000000000..f510501ac7
--- /dev/null
+++ b/core/src/main/res/values-sk-rSK/strings.xml
@@ -0,0 +1,228 @@
+
+
+ Párovanie
+
+ Chyba
+ Nenastavené
+ Chyba pri aktualizovaní bazálneho profilu
+ Bazálny profil v pumpe aktualizovaný
+ Chybné vstupné dáta
+ Chyba podávania dočasného bazálu
+ Podávanie %1$.2fJ inzulínu
+ Čakám na pumpu
+ Pripájanie %1$d sek
+ Podávanie %1$.2fJI
+ Overovanie
+ Pripájanie
+ Pripojené
+ Odpojené
+ Odpájanie
+ AndroidAPS spustený
+ %1$.2fJI
+ %1$.0f / %2$d JI
+ %1$.2fJI/h
+ %1$.2f h
+ %1$d min
+ %1$dm
+ Pumpa je zaneprázdnená
+ Chyba pripájania pumpy
+ Dosiahnutý limit
+ Ciele
+ Zavrieť
+ Čakajte prosím...
+ Stíšiť
+ Načítať
+ STLAČENÝ STOP
+ Stop
+ Sacharidy
+ Chybný profil !!!
+ Nenastavený žiadny profil
+ Dátum
+ Jednotky
+ Doba pôsobenia inzulínu
+ Inzulínovo-sacharidový pomer
+ Citlivosť
+ Bazál
+ Cieľ
+ Inicializácia ...
+ Sériové číslo
+ Batéria
+ Posledné spojenie
+ Posledný bolus
+ Jednotiek za deň
+ Základná hodnota bazálu
+ Dočasný bazál
+ Rozložený bolus
+ Zásobník
+ História pumpy
+ Zobraziť profil
+ Typ udalosti
+ mg/dL
+ mmol/L
+ Rozšírené nastavenia
+ Bluetooth
+ Strážny pes BT
+ Vypne na 1 sekundu Bluetooth v telefóne, pokiaľ se nedarí pripojiť k pumpe. Môže to pomôcť pri telefónoch, ktoré majú problémy s BT.
+
+ Max bazál obmedzený na %1$.2f JI/h: %2$s
+ limit pumpy
+ Bazál obmedzený na %1$d%%: %2$s
+ požadovaná kladná hodnota
+ Bolus obmedzený na %1$.1f JI: %2$s
+ Pumpa nie je inicializovaná, profil nenastavený!
+
+ Potvrdenie
+ Správa
+ OK
+ Zrušiť
+ ODMIETNUŤ
+
+ Bluetooth Low Energy nie je podporované.
+ Bluetooth nie je aktivovaný.
+ Poloha nie je aktivovaná
+ Pre vyhľadanie Bluetooth zariadení na novších telefónoch musí byť povolené zisťovanie polohy. AAPS vás nesleduje a po úspešnom spárovaní môžete túto voľbu opäť zakázať.
+
+ pred %1$d min
+ pred %1$.1fh
+ h
+ dní
+ hodín
+ sekunda
+ minúta
+ hodina
+ deň
+ týždeň
+ sekúnd
+ minút
+ hodín
+ dní
+ týždňov
+ m
+ d
+
+ Bazálne hodnoty nie sú zarovnané na celé hodiny: %1$s
+ Hodnota bazálu nahradená minimálnou možnou: %1$s
+ Hodnota bazálu nahradená maximálnou možnou: %1$s
+ /JI
+ JI/h
+ g/JI
+
+ Nebol vybraný žiadny profil
+
+ * Iba diskrétne hodnoty a nie rozsahy sú podporované pre bazál/bolus vo virtuálnej pumpe.
+
+ Zrušiť dočasný bazál
+ Nechať bežať aktuálny dočasný bazál
+ Hodnota
+ Trvanie
+ Zdôvodnenie
+ Nepožadovaná žiadna zmena
+
+ Chybný profil: %1$s
+
+ %1$dmin
+
+ %1$s: ∑: %2$.2fJI Bol: %3$.2fJI Baz: %4$.2fJI(%5$.0f%%)]]>
+ %1$s: ∑: %2$.2fJI Bol: %3$.2fJI Baz: %4$.2fJI(%5$.0f%%) Sach.: %6$.0fg]]>
+
+ Kontrola glykémie
+ Oznámenie
+ Poznámka
+ Otázka
+ Pohyb
+ Výmena setu
+ Výmena senzora
+ Spustenie senzora
+ Výmena inzulínu
+ Prepnutie profilu
+ Bolus na desiatu/olovrant
+ Bolus na jedlo
+ Korekčný bolus
+ Kombinovaný bolus
+ Začiatok dočasného bazálu
+ Koniec dočasného bazálu
+ Prídavok sacharidov
+ OpenAPS vypnuté
+ Výmena batérie v pumpe
+ Dočasný cieľ
+ Zrušiť dočasný cieľ
+ Prst
+ Senzor
+ Iný
+ neznámy
+
+ Vypršal čas na pripojenie
+
+ Vykonané
+ Komentár
+ Úspešne
+ Percent
+ Absolútna
+ Inzulín
+ JI
+ Čakanie na výsledok
+ SMB
+
+ %dg dodatočných sacharidov vyžadovaných v priebehu %d minút
+
+ Štatistiky
+ Kumulatívny TDD
+ Exponenciálne vážený TDD
+ Bazál
+ Bolus
+ CDD
+ Pomer
+ Dní
+ Váha
+ Pravdepodobne nepresné, ak bol použitý bolus na plnenie!
+ Zastaralé dáta. Prosím načítajte ich znovu
+ Celk. denný bazál
+ TBB * 2
+
+ Detekcia času
+ %1$dh %2$dm
+
+ Operácia nie je podporovaná pumpou a/alebo ovladačom.
+ Operácia zatiaľ nepodporovaná pumpou.
+ OK
+
+ Nikdy nepripojené
+ Prebúdzanie
+ Chyba komunikácie
+ Uplynul časový limit komunikácie
+ Pumpa nedostupná
+ Neplatná konfigurácia
+ Aktívna
+ Spiaca
+
+ Bazály
+ Konfigurácie
+ Notifikácie
+ Štatistika
+ Neznáme
+ Všetko
+ Bolusy
+ Plnenie
+ Alarmy
+ Glykémia
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/src/main/res/values-sl-rSI/strings.xml b/core/src/main/res/values-sl-rSI/strings.xml
new file mode 100644
index 0000000000..6cacb70673
--- /dev/null
+++ b/core/src/main/res/values-sl-rSI/strings.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/src/main/res/values-sv-rSE/strings.xml b/core/src/main/res/values-sv-rSE/strings.xml
new file mode 100644
index 0000000000..933c64d88b
--- /dev/null
+++ b/core/src/main/res/values-sv-rSE/strings.xml
@@ -0,0 +1,205 @@
+
+
+ Parkoppling
+
+ Fel
+ Ej vald
+ Lyckades inte uppdatera basalprofilen
+ Basalprofilen uppdaterad i pumpen
+ Fel på inmatning
+ Fel vid justering av temp basal
+ Kommer att leverera %1$.2f enheter
+ Väntar på pump
+ Ansluter (%1$d s)
+ Levererar %1$.2f enheter
+ Anslutningen verifieras
+ Ansluter
+ Ansluten
+ Frånkopplad
+ Kopplar från
+ AndroidAPS startad
+ %1$.2f U
+ %1$.0f / %2$d U
+ %1$.2fU/h
+ %1$.2f h
+ %1$d min
+ %1$dm
+ Pump upptagen
+ Anslutningsfel
+ Du har nått din tillåtna gräns
+ Mål
+ Stäng
+ Var god vänta…
+ Tysta
+ Hämta
+ Stopp nedtryckt
+ Stopp
+ Kolhydrater
+ Ogiltig profil!
+ INGEN PROFIL VALD
+ Datum
+ Enheter
+ DIA
+ CR
+ ISF
+ Basal
+ Målvärde
+ Startar...
+ Serienummer
+ Batterinivå
+ Senast ansluten
+ Senaste bolus
+ Enheter per dag
+ Profilens basaldos
+ Temp basal
+ Förlängd bolus
+ Reservoar
+ Pumphistorik
+ Visa profil
+ Händelsetyp
+ mg/dl
+ mmol/l
+ Avancerade inställningar
+ Bluetooth
+ Bluetooth-övervakare
+ Startar om bluetooth på telefonen om anslutning till pumpen misslyckas. Detta hjälper på en del telefoner där bluetooth ibland hänger sig.
+
+ Max basal: %1$.2f E/h pga %2$s
+ pumpbegränsning
+ Begränsar max procent hastighet till %1$d%% pga %2$s
+ det måste vara ett positivt värde
+ Max bolus: %1$.1f U pga %2$s
+ Pump inte initierad, ingen profil vald.
+
+ Bekräftelse
+ Meddelande
+ OK
+ Avbryt
+ TA BORT
+
+ Enheten stöder inte BLE.
+ Bluetooth är avstängt.
+ Platsdata är inte aktiverat
+ För att Bluetooth ska fungera med nyare enheter, måste platsdata vara aktiverat. AAPS sparar inte din plats och det kan stängas av efter att enheten har parkopplats.
+
+ %1$dm sedan
+ %1$.1f tim sedan
+ h
+ dagar
+ timmar
+ sekund
+ minut
+ timme
+ dag
+ vecka
+ sekunder
+ minuter
+ timmar
+ dagar
+ veckor
+ m
+ d
+
+ Profilens basaler är inte satta på hel timme: %1$s
+ Basalvärdet ersatt med det lägsta tillåtna: %1$s
+ Basalvärdet ersatt med det högsta tillåtna: %1$s
+ /U
+ U/h
+ g/U
+
+ Ingen profil vald
+
+ * Inga spann stöds som granularitet för basal/bolus i den virtuella pumpen. Endast enkla värden.
+
+ Avbryt temp basal
+ Låt temp basalen gå
+ Basaldos
+ Duration
+ Orsak
+ Ingen ändring behövs
+
+ Ogiltig profil: %1$s
+
+ %1$d min
+
+
+ BG-kontroll
+ Meddelande
+ Anteckning
+ Fråga
+ Träning
+ Byte pumpkanyl
+ Byte CGM-sensor
+ Start CGM-sensor
+ Byte insulinreservoar
+ Profilbyte
+ Mellanmålsbolus
+ Måltidsbolus
+ Korrektionsbolus
+ Kombi-bolus
+ Temp basal start
+ Temp basal slut
+ KH-korrektion
+ OpenAPS Offline
+ Byte pumpbatteri
+ Temp mål
+ Avbryt temp mål
+ Finger
+ Sensor
+ Manuell
+ okänd
+
+ Anslutningen tog för lång tid
+
+ Utförd
+ Kommentar
+ Lyckad
+ Procent
+ Absolut
+ Insulin
+ U
+ Väntar på resultat
+ SMB
+
+ %dg kolhydrater krävs inom %d minuter
+
+ Statistik
+ Kumulativ TDD
+ Exponentiellt viktad TDD
+ Basal
+ Bolus
+ TDD
+ Kvot
+ Antal dagar
+ Vikt
+ Kan visa fel om man använder bolus för förfyllning!
+ Gammalt data. Tryck på Hämta
+ Total grundbasal
+ TDB * 2
+
+ Tidsdetektering
+
+ Operationen stöds inte av pumpen ännu.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/src/main/res/values-tr-rTR/strings.xml b/core/src/main/res/values-tr-rTR/strings.xml
new file mode 100644
index 0000000000..6cacb70673
--- /dev/null
+++ b/core/src/main/res/values-tr-rTR/strings.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/src/main/res/values-zh-rCN/strings.xml b/core/src/main/res/values-zh-rCN/strings.xml
new file mode 100644
index 0000000000..3a1944bc64
--- /dev/null
+++ b/core/src/main/res/values-zh-rCN/strings.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 泵不支持操作 YYT 。
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/src/main/res/values/colors.xml b/core/src/main/res/values/colors.xml
index ab83365d64..d6def91fd7 100644
--- a/core/src/main/res/values/colors.xml
+++ b/core/src/main/res/values/colors.xml
@@ -3,16 +3,54 @@
#212121#000000#40bbaa
+ #33969696
+ #009688
+ @color/mdtp_accent_color
+ #ffffff
+ #808080
+ #d8d8d8
+ #121212
+
+ #00695c
+
+
#303030#121212#FFFFFF#FFFFFF
-
#FFFB8C00#FF000000
-
#FFFF5555#FF000000
+ #FFFF5555
+
+
+ #C803A9F4
+ #505050
+
+
+ #00FF00
+ #FF0000
+ #FFFF00
+ #1e88e5
+ #1ea3e5
+ #FFFB8C00
+ #FFFB8C00
+ #c9bd60
+ #00d2d2
+ #ffffff
+
+
+ #FF8C00
+
+
+ #666666
+ #ffffff
+ #77dd77
+ #ff0400
+ #FF8C00
+ #03A9F4
+
diff --git a/core/src/main/res/values/dimens.xml b/core/src/main/res/values/dimens.xml
new file mode 100644
index 0000000000..b650a33ce6
--- /dev/null
+++ b/core/src/main/res/values/dimens.xml
@@ -0,0 +1,8 @@
+
+
+ 16dp
+ 16dp
+ 30dp
+ 16dp
+ 8dp
+
diff --git a/app/src/main/res/values/fet_attrs.xml b/core/src/main/res/values/fet_attrs.xml
similarity index 100%
rename from app/src/main/res/values/fet_attrs.xml
rename to core/src/main/res/values/fet_attrs.xml
diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml
index be67629d42..af37bbf430 100644
--- a/core/src/main/res/values/strings.xml
+++ b/core/src/main/res/values/strings.xml
@@ -2,16 +2,277 @@
enable_fabriclanguage
+ units
+ loop_openmode_min_change
+ absorption_maxtime
+ openapsama_min_5m_carbimpact
+ absorption_cutoff
+ danar_visualizeextendedaspercentage"
+ danar_useextended
+ eatingsoon_duration
+ eatingsoon_target
+ activity_duration
+ activity_target
+ hypo_duration
+ hypo_target
+ low_mark
+ high_mark
+ ns_create_announcements_from_errors
+ ns_logappstartedevent
+ ns_uploadlocalprofile
+ bt_watchdog
+ bt_watchdog_last
+ Pairing
+
+ Error
+ Not set
+ Failed to update basal profile
+ Basal profile in pump updated
+ Invalid input data
+ Tempbasal delivery error
+ Going to deliver %1$.2fU
+ Waiting for pump
+ Connecting for %1$d s
+ Delivering %1$.2fU
+ Handshaking
+ Connecting
+ Connected
+ Disconnected
+ Disconnecting
+ AndroidAPS started
+ %1$.2fU
+ %1$.0f / %2$d U
+ %1$.2fU/h
+ %1$.2f h
+ %1$d mins
+ %1$dm
+ Pump is busy
+ Pump connection error
+ You reached allowed limit
+ Objectives
+ Close
+ Please wait…
+ Mute
+ Reload
+ STOP PRESSED
+ Stop
+ Carbs
+ Invalid profile !!!
+ NO PROFILE SET
+ Date
+ Units
+ DIA
+ IC
+ ISF
+ Basal
+ Target
+ Initializing ...
+ Serial number
+ Battery
+ Last connection
+ Last bolus
+ Daily units
+ Base basal rate
+ Temp basal
+ Extended bolus
+ Reservoir
+ Pump history
+ View profile
+ Event type
+ mg/dl
+ mmol/l
+ Advanced Settings
+ Bluetooth
+ BT Watchdog
+ Switches off the phone\'s bluetooth for one second if no connection to the pump is possible. This may help on some phones where the bluetooth stack freezes.
+
+
+ Limiting max basal rate to %1$.2f U/h because of %2$s
+ pump limit
+ Limiting max percent rate to %1$d%% because of %2$s
+ it must be positive value
+ Limiting bolus to %1$.1f U because of %2$s
+ Pump not initialized, profile not set!
+
+
ConfirmationMessageOKCancelDISMISS
- Bluetooth Low Energy not supported.
- Bluetooth not enabled.
+
+ Bluetooth Low Energy not supported.
+ Bluetooth not enabled.Location Is Not EnabledFor Bluetooth discovery to work on newer devices, location must be enabled. AAPS does not track your location and it can be disabled after pairing is successful.
+
+ %1$dm ago
+ %1$.1fh ago
+ h
+ days
+ hours
+ second
+ minute
+ hour
+ day
+ week
+ seconds
+ minutes
+ hours
+ days
+ weeks
+ m
+ d
+
+
+ Basal values not aligned to hours: %1$s
+ Basal value replaced by minimal supported value: %1$s
+ Basal value replaced by maximum supported value: %1$s
+ /U
+ U/h
+ g/U
+
+
+ No profile selected
+
+
+ * Only discrete values no ranges are supported as granularity for basal/bolus in virtual pump.
+
+
+ Cancel temp basal
+ Let temp basal run
+ Rate
+ Duration
+ Reason
+ No change requested
+
+
+ Invalid profile: %1$s
+
+
+ %1$dmin
+
+
+ %1$s: ∑: %2$.2fU Bol: %3$.2fU Bas: %4$.2fU(%5$.0f%%)]]>
+ %1$s: ∑: %2$.2fU Bol: %3$.2fU Bas: %4$.2fU(%5$.0f%%) Carbs: %6$.0fg]]>
+
+
+ BG Check
+ Announcement
+ Note
+ Question
+ Exercise
+ Pump Site Change
+ CGM Sensor Insert
+ CGM Sensor Start
+ Insulin Cartridge Change
+ Profile switch
+ Snack Bolus
+ Meal Bolus
+ Correction Bolus
+ Combo Bolus
+ Temp Basal Start
+ Temp Basal End
+ Carbs correction
+ OpenAPS Offline
+ Pump Battery Change
+ Temporary target
+ Temporary target cancel
+ Finger
+ Sensor
+ Manual
+ unknown
+
+
+ Connection timed out
+
+
+ Enacted
+ Comment
+ Success
+ Percent
+ Absolute
+ Insulin
+ U
+ Waiting for result
+ SMB
+
+
+ %dg Additional Carbs Required Within %d Minutes
+
+
+ Stats
+ Cumulative TDD
+ Exponentially Weighted TDD
+ Basal
+ Bolus
+ TDD
+ Ratio
+ # Days
+ Weight
+ Possibly inaccurate if using boluses for priming/filling!
+ Old Data Please Press "RELOAD"
+ Total Base Basal
+ TBB * 2
+
+
+ Time detection
+ %1$dh %2$dm
+
+
+ Operation not supported by pump and/or driver.
+ Operation not YET supported by pump.
+ OK
+
+
+ Never contacted
+ Waking up
+ Error with communication
+ Timeout on communication
+ Pump unreachable
+ Invalid configuration
+ Active
+ Sleeping
+
+
+ Basals
+ Configurations
+ Notifications
+ Statistics
+ Unknowns
+ All
+ Boluses
+ Prime
+ Alarms
+ Glucose
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/core/src/main/res/values/styles.xml b/core/src/main/res/values/styles.xml
index aabdcd6d8d..7e8020884a 100644
--- a/core/src/main/res/values/styles.xml
+++ b/core/src/main/res/values/styles.xml
@@ -1,5 +1,5 @@
-
+
+
+
+
+
+
+
+
+ 48dp
+ 14sp
+ 64dp
+ 8dp
+
+
+
+
diff --git a/app/src/main/res/values/validator.xml b/core/src/main/res/values/validator.xml
similarity index 76%
rename from app/src/main/res/values/validator.xml
rename to core/src/main/res/values/validator.xml
index 15c40b743c..4de9c5fab1 100644
--- a/app/src/main/res/values/validator.xml
+++ b/core/src/main/res/values/validator.xml
@@ -16,9 +16,15 @@
Format not validMust be 4 digit numberMust be 6 digit number
+ Must be 12 characters of ABCDEF0123456789
+ Must be 8 characters of ABCDEF0123456789
+ Must be 4 characters of ABCDEF0123456789Not a minimum lengthPin should be 3 to 6 digits, not same or in series^\\d{4}
+ ^[A-F0-9]{12}$
+ ^[A-F0-9]{8}$
+ ^[A-F0-9]{4}$
\ No newline at end of file
diff --git a/crowdin.yml b/crowdin.yml
index ace938f2a1..6069f66394 100644
--- a/crowdin.yml
+++ b/crowdin.yml
@@ -15,3 +15,9 @@ files:
translation: /app/src/main/res/values-%android_code%/validator.xml
- source: /core/src/main/res/values/strings.xml
translation: /core/src/main/res/values-%android_code%/strings.xml
+ - source: /dana/src/main/res/values/strings.xml
+ 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: /rileylink/src/main/res/values/strings.xml
+ translation: /rileylink/src/main/res/values-%android_code%/strings.xml
diff --git a/dana/.gitignore b/dana/.gitignore
new file mode 100644
index 0000000000..796b96d1c4
--- /dev/null
+++ b/dana/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/dana/build.gradle b/dana/build.gradle
new file mode 100644
index 0000000000..48f8c44cce
--- /dev/null
+++ b/dana/build.gradle
@@ -0,0 +1,75 @@
+apply plugin: 'com.android.library'
+apply plugin: 'kotlin-android'
+apply plugin: 'kotlin-android-extensions'
+apply plugin: 'kotlin-kapt'
+
+android {
+ compileSdkVersion 28
+
+ defaultConfig {
+ minSdkVersion 24
+ targetSdkVersion 28
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ 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
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+dependencies {
+ implementation project(':core')
+
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
+ implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
+ implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutinesVersion"
+ implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutinesVersion"
+
+ implementation 'androidx.appcompat:appcompat:1.1.0'
+ implementation "androidx.core:core-ktx:${coreVersion}"
+ implementation "androidx.preference:preference-ktx:1.1.1"
+ implementation "androidx.activity:activity-ktx:${activityVersion}"
+
+ implementation "io.reactivex.rxjava2:rxandroid:${rxandroid_version}"
+
+ implementation 'net.danlew:android.joda:2.10.6'
+
+ // Graphview cannot be upgraded
+ implementation "com.jjoe64:graphview:4.0.1"
+
+ implementation "com.joanzapata.iconify:android-iconify-fontawesome:2.2.2"
+
+ implementation "com.google.dagger:dagger-android:$dagger_version"
+ implementation "com.google.dagger:dagger-android-support:$dagger_version"
+ 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"
+
+ testImplementation 'junit:junit:4.13'
+ androidTestImplementation 'androidx.test.ext:junit:1.1.1'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
+}
diff --git a/dana/consumer-rules.pro b/dana/consumer-rules.pro
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/dana/proguard-rules.pro b/dana/proguard-rules.pro
new file mode 100644
index 0000000000..f1b424510d
--- /dev/null
+++ b/dana/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
diff --git a/dana/src/androidTest/java/info/nightscout/androidaps/dana/ExampleInstrumentedTest.kt b/dana/src/androidTest/java/info/nightscout/androidaps/dana/ExampleInstrumentedTest.kt
new file mode 100644
index 0000000000..92ec3b8644
--- /dev/null
+++ b/dana/src/androidTest/java/info/nightscout/androidaps/dana/ExampleInstrumentedTest.kt
@@ -0,0 +1,25 @@
+package info.nightscout.androidaps.dana
+
+import androidx.test.platform.app.InstrumentationRegistry
+import androidx.test.ext.junit.runners.AndroidJUnit4
+
+import org.junit.Test
+import org.junit.runner.RunWith
+
+import org.junit.Assert.*
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * See [testing documentation](http://d.android.com/tools/testing).
+ */
+@RunWith(AndroidJUnit4::class)
+class ExampleInstrumentedTest {
+
+ @Test
+ fun useAppContext() {
+ // Context of the app under test.
+ val appContext = InstrumentationRegistry.getInstrumentation().targetContext
+ assertEquals("info.nightscout.androidaps.dana.test", appContext.packageName)
+ }
+}
diff --git a/dana/src/main/AndroidManifest.xml b/dana/src/main/AndroidManifest.xml
new file mode 100644
index 0000000000..3503bdc49f
--- /dev/null
+++ b/dana/src/main/AndroidManifest.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/DanaRFragment.kt b/dana/src/main/java/info/nightscout/androidaps/dana/DanaFragment.kt
similarity index 67%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/DanaRFragment.kt
rename to dana/src/main/java/info/nightscout/androidaps/dana/DanaFragment.kt
index 9a8477ae2d..4585b80aa7 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/DanaRFragment.kt
+++ b/dana/src/main/java/info/nightscout/androidaps/dana/DanaFragment.kt
@@ -1,4 +1,4 @@
-package info.nightscout.androidaps.plugins.pump.danaR
+package info.nightscout.androidaps.dana
import android.content.Intent
import android.os.Bundle
@@ -7,45 +7,44 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import dagger.android.support.DaggerFragment
-import info.nightscout.androidaps.R
import info.nightscout.androidaps.activities.TDDStatsActivity
import info.nightscout.androidaps.dialogs.ProfileViewerDialog
import info.nightscout.androidaps.events.EventExtendedBolusChange
+import info.nightscout.androidaps.events.EventInitializationChanged
import info.nightscout.androidaps.events.EventPumpStatusChanged
import info.nightscout.androidaps.events.EventTempBasalChange
import info.nightscout.androidaps.interfaces.ActivePluginProvider
import info.nightscout.androidaps.interfaces.CommandQueueProvider
-import info.nightscout.androidaps.interfaces.PluginType
import info.nightscout.androidaps.interfaces.PumpInterface
import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
-import info.nightscout.androidaps.plugins.pump.danaR.activities.DanaRHistoryActivity
-import info.nightscout.androidaps.plugins.pump.danaR.activities.DanaRUserOptionsActivity
-import info.nightscout.androidaps.plugins.pump.danaR.events.EventDanaRNewStatus
-import info.nightscout.androidaps.plugins.pump.danaRKorean.DanaRKoreanPlugin
+import info.nightscout.androidaps.plugins.pump.common.defs.PumpType
import info.nightscout.androidaps.queue.events.EventQueueChanged
import info.nightscout.androidaps.utils.DateUtil
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.sharedPreferences.SP
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.CompositeDisposable
import kotlinx.android.synthetic.main.danar_fragment.*
import javax.inject.Inject
-class DanaRFragment : DaggerFragment() {
+class DanaFragment : DaggerFragment() {
@Inject lateinit var rxBus: RxBusWrapper
@Inject lateinit var aapsLogger: AAPSLogger
@Inject lateinit var fabricPrivacy: FabricPrivacy
@Inject lateinit var commandQueue: CommandQueueProvider
@Inject lateinit var activePlugin: ActivePluginProvider
- @Inject lateinit var danaRKoreanPlugin: DanaRKoreanPlugin
- @Inject lateinit var danaRPump: DanaRPump
+ @Inject lateinit var danaPump: DanaPump
@Inject lateinit var resourceHelper: ResourceHelper
+ @Inject lateinit var sp: SP
@Inject lateinit var warnColors: WarnColors
+ @Inject lateinit var dateUtil: DateUtil
private var disposable: CompositeDisposable = CompositeDisposable()
@@ -69,11 +68,11 @@ class DanaRFragment : DaggerFragment() {
dana_pumpstatus.setBackgroundColor(resourceHelper.gc(R.color.colorInitializingBorder))
- danar_history.setOnClickListener { startActivity(Intent(context, DanaRHistoryActivity::class.java)) }
+ danar_history.setOnClickListener { startActivity(Intent(context, info.nightscout.androidaps.dana.activities.DanaHistoryActivity::class.java)) }
danar_viewprofile.setOnClickListener {
- val profile = danaRPump.createConvertedProfile()?.getDefaultProfile()
+ val profile = danaPump.createConvertedProfile()?.getDefaultProfile()
?: return@setOnClickListener
- val profileName = danaRPump.createConvertedProfile()?.getDefaultProfileName()
+ val profileName = danaPump.createConvertedProfile()?.getDefaultProfileName()
?: return@setOnClickListener
val args = Bundle()
args.putLong("time", DateUtil.now())
@@ -86,12 +85,21 @@ class DanaRFragment : DaggerFragment() {
pvd.show(childFragmentManager, "ProfileViewDialog")
}
danar_stats.setOnClickListener { startActivity(Intent(context, TDDStatsActivity::class.java)) }
- danar_user_options.setOnClickListener { startActivity(Intent(context, DanaRUserOptionsActivity::class.java)) }
+ danar_user_options.setOnClickListener { startActivity(Intent(context, info.nightscout.androidaps.dana.activities.DanaUserOptionsActivity::class.java)) }
danar_btconnection.setOnClickListener {
aapsLogger.debug(LTag.PUMP, "Clicked connect to pump")
- danaRPump.lastConnection = 0
+ danaPump.lastConnection = 0
commandQueue.readStatus("Clicked connect to pump", null)
}
+ if (activePlugin.activePump.pumpDescription.pumpType == PumpType.DanaRS)
+ danar_btconnection.setOnLongClickListener {
+ activity?.let {
+ OKDialog.showConfirmation(it, resourceHelper.gs(R.string.resetpairing), Runnable {
+ (activePlugin.activePump as DanaPumpInterface).clearPairing()
+ })
+ }
+ true
+ }
}
@Synchronized
@@ -99,7 +107,11 @@ class DanaRFragment : DaggerFragment() {
super.onResume()
loopHandler.postDelayed(refreshLoop, T.mins(1).msecs())
disposable += rxBus
- .toObservable(EventDanaRNewStatus::class.java)
+ .toObservable(EventInitializationChanged::class.java)
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({ updateGUI() }, { fabricPrivacy.logException(it) })
+ disposable += rxBus
+ .toObservable(info.nightscout.androidaps.dana.events.EventDanaRNewStatus::class.java)
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ updateGUI() }, { fabricPrivacy.logException(it) })
disposable += rxBus
@@ -148,14 +160,14 @@ class DanaRFragment : DaggerFragment() {
// GUI functions
@Synchronized
- internal fun updateGUI() {
+ fun updateGUI() {
if (danar_dailyunits == null) return
- val pump = danaRPump
+ val pump = danaPump
val plugin: PumpInterface = activePlugin.activePump
if (pump.lastConnection != 0L) {
val agoMsec = System.currentTimeMillis() - pump.lastConnection
val agoMin = (agoMsec.toDouble() / 60.0 / 1000.0).toInt()
- danar_lastconnection.text = DateUtil.timeString(pump.lastConnection) + " (" + resourceHelper.gs(R.string.minago, agoMin) + ")"
+ danar_lastconnection?.text = dateUtil.timeString(pump.lastConnection) + " (" + resourceHelper.gs(R.string.minago, agoMin) + ")"
warnColors.setColor(danar_lastconnection, agoMin.toDouble(), 16.0, 31.0)
}
if (pump.lastBolusTime != 0L) {
@@ -163,51 +175,46 @@ class DanaRFragment : DaggerFragment() {
val agoHours = agoMsec.toDouble() / 60.0 / 60.0 / 1000.0
if (agoHours < 6)
// max 6h back
- danar_lastbolus.text = DateUtil.timeString(pump.lastBolusTime) + " " + DateUtil.sinceString(pump.lastBolusTime, resourceHelper) + " " + resourceHelper.gs(R.string.formatinsulinunits, pump.lastBolusAmount)
+ danar_lastbolus?.text = dateUtil.timeString(pump.lastBolusTime) + " " + DateUtil.sinceString(pump.lastBolusTime, resourceHelper) + " " + resourceHelper.gs(R.string.formatinsulinunits, pump.lastBolusAmount)
else
- danar_lastbolus.text = ""
+ danar_lastbolus?.text = ""
}
- danar_dailyunits.text = resourceHelper.gs(R.string.reservoirvalue, pump.dailyTotalUnits, pump.maxDailyTotalUnits)
+ danar_dailyunits?.text = resourceHelper.gs(R.string.reservoirvalue, pump.dailyTotalUnits, pump.maxDailyTotalUnits)
warnColors.setColor(danar_dailyunits, pump.dailyTotalUnits, pump.maxDailyTotalUnits * 0.75, pump.maxDailyTotalUnits * 0.9)
- danar_basabasalrate.text = "( " + (pump.activeProfile + 1) + " ) " + resourceHelper.gs(R.string.pump_basebasalrate, plugin.baseBasalRate)
+ danar_basabasalrate?.text = "( " + (pump.activeProfile + 1) + " ) " + resourceHelper.gs(R.string.pump_basebasalrate, plugin.baseBasalRate)
// DanaRPlugin, DanaRKoreanPlugin
if (activePlugin.activePump.isFakingTempsByExtendedBoluses == true) {
- danar_tempbasal.text = activePlugin.activeTreatments.getRealTempBasalFromHistory(System.currentTimeMillis())?.toStringFull()
+ danar_tempbasal?.text = activePlugin.activeTreatments.getRealTempBasalFromHistory(System.currentTimeMillis())?.toStringFull()
?: ""
} else {
// v2 plugin
- danar_tempbasal.text = activePlugin.activeTreatments.getTempBasalFromHistory(System.currentTimeMillis())?.toStringFull()
+ danar_tempbasal?.text = activePlugin.activeTreatments.getTempBasalFromHistory(System.currentTimeMillis())?.toStringFull()
?: ""
}
- danar_extendedbolus.text = activePlugin.activeTreatments.getExtendedBolusFromHistory(System.currentTimeMillis())?.toString()
+ danar_extendedbolus?.text = activePlugin.activeTreatments.getExtendedBolusFromHistory(System.currentTimeMillis())?.toString()
?: ""
- danar_reservoir.text = resourceHelper.gs(R.string.reservoirvalue, pump.reservoirRemainingUnits, 300)
+ danar_reservoir?.text = resourceHelper.gs(R.string.reservoirvalue, pump.reservoirRemainingUnits, 300)
warnColors.setColorInverse(danar_reservoir, pump.reservoirRemainingUnits, 50.0, 20.0)
- danar_battery.text = "{fa-battery-" + pump.batteryRemaining / 25 + "}"
+ danar_battery?.text = "{fa-battery-" + pump.batteryRemaining / 25 + "}"
warnColors.setColorInverse(danar_battery, pump.batteryRemaining.toDouble(), 51.0, 26.0)
- danar_iob.text = resourceHelper.gs(R.string.formatinsulinunits, pump.iob)
- if (pump.model != 0 || pump.protocol != 0 || pump.productCode != 0) {
- danar_firmware.text = resourceHelper.gs(R.string.danar_model, pump.model, pump.protocol, pump.productCode)
- } else {
- @Suppress("SetTextI18n")
- danar_firmware.text = "OLD"
- }
- danar_basalstep.text = pump.basalStep.toString()
- danar_bolusstep.text = pump.bolusStep.toString()
- danar_serialnumber.text = pump.serialNumber
+ danar_iob?.text = resourceHelper.gs(R.string.formatinsulinunits, pump.iob)
+ danar_firmware?.text = resourceHelper.gs(R.string.dana_model, pump.modelFriendlyName(), pump.hwModel, pump.protocol, pump.productCode)
+ danar_basalstep?.text = pump.basalStep.toString()
+ danar_bolusstep?.text = pump.bolusStep.toString()
+ danar_serialnumber?.text = pump.serialNumber
val status = commandQueue.spannedStatus()
if (status.toString() == "") {
- danar_queue.visibility = View.GONE
+ danar_queue?.visibility = View.GONE
} else {
- danar_queue.visibility = View.VISIBLE
- danar_queue.text = status
+ danar_queue?.visibility = View.VISIBLE
+ danar_queue?.text = status
}
//hide user options button if not an RS pump or old firmware
// also excludes pump with model 03 because of untested error
- val isKorean = danaRKoreanPlugin.isEnabled(PluginType.PUMP)
- if (isKorean || danar_firmware.text === "OLD" || pump.model == 3) {
- danar_user_options.visibility = View.GONE
+ val isKorean = activePlugin.activePump.pumpDescription.pumpType == PumpType.DanaRKorean
+ if (isKorean || pump.hwModel == 0 || pump.hwModel == 3) {
+ danar_user_options?.visibility = View.GONE
}
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/DanaRPump.kt b/dana/src/main/java/info/nightscout/androidaps/dana/DanaPump.kt
similarity index 60%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/DanaRPump.kt
rename to dana/src/main/java/info/nightscout/androidaps/dana/DanaPump.kt
index 0621fd80ad..175daea266 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/DanaRPump.kt
+++ b/dana/src/main/java/info/nightscout/androidaps/dana/DanaPump.kt
@@ -1,18 +1,21 @@
-package info.nightscout.androidaps.plugins.pump.danaR
+package info.nightscout.androidaps.dana
import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.Constants
-import info.nightscout.androidaps.R
import info.nightscout.androidaps.data.Profile
-import info.nightscout.androidaps.data.ProfileStore
+import info.nightscout.androidaps.db.Treatment
+import info.nightscout.androidaps.interfaces.ProfileStore
import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag
-import info.nightscout.androidaps.plugins.treatments.Treatment
+import info.nightscout.androidaps.utils.T
import info.nightscout.androidaps.utils.sharedPreferences.SP
+import org.joda.time.DateTime
+import org.joda.time.DateTimeZone
import org.json.JSONArray
import org.json.JSONException
import org.json.JSONObject
import java.text.DecimalFormat
+import java.util.concurrent.TimeUnit
import javax.inject.Inject
import javax.inject.Singleton
@@ -20,12 +23,26 @@ import javax.inject.Singleton
* Created by mike on 04.07.2016.
*/
@Singleton
-class DanaRPump @Inject constructor(
+class DanaPump @Inject constructor(
private val aapsLogger: AAPSLogger,
private val sp: SP,
private val injector: HasAndroidInjector
) {
+ enum class ErrorState(val code: Int) {
+ NONE(0x00),
+ SUSPENDED(0x01),
+ DAILYMAX(0x02),
+ BOLUSBLOCK(0x04),
+ ORDERDELIVERING(0x08),
+ NOPRIME(0x10);
+
+ companion object {
+ private val map = values().associateBy(ErrorState::code)
+ operator fun get(value: Int) = map[value]
+ }
+ }
+
var lastConnection: Long = 0
var lastSettingsRead: Long = 0
@@ -33,12 +50,44 @@ class DanaRPump @Inject constructor(
var serialNumber = ""
var shippingDate: Long = 0
var shippingCountry = ""
- var isNewPump = true
- var password = -1
- var pumpTime: Long = 0
- var model = 0
+ var bleModel = "" // RS v3: like BPN-1.0.1
+ var isNewPump = true // R only , providing model info
+ var password = -1 // R, RSv1
+
+ // time
+ private var pumpTime: Long = 0
+ var zoneOffset: Int = 0 // i (hw 7+)
+
+ fun setPumpTime(value: Long) {
+ pumpTime = value
+ }
+
+ fun setPumpTime(value: Long, zoneOffset: Int) {
+ // Store time according to timezone in phone
+ val tz = DateTimeZone.getDefault()
+ val instant = DateTime.now().millis
+ val offsetInMilliseconds = tz.getOffset(instant).toLong()
+ val offset = TimeUnit.MILLISECONDS.toHours(offsetInMilliseconds)
+ pumpTime = value + T.hours(offset).msecs()
+ // but save zone in pump
+ this.zoneOffset = zoneOffset
+ }
+
+ fun resetPumpTime() {
+ pumpTime = 0
+ }
+
+ fun getPumpTime() = pumpTime
+
+ var hwModel = 0
+ val usingUTC
+ get() = hwModel >= 7
+ val profile24
+ get() = hwModel >= 7
+
var protocol = 0
var productCode = 0
+ var errorState: ErrorState = ErrorState.NONE
var isConfigUD = false
var isExtendedBolusEnabled = false
var isEasyModeEnabled = false
@@ -49,6 +98,7 @@ class DanaRPump @Inject constructor(
var dailyTotalUnits = 0.0
var dailyTotalBolusUnits = 0.0 // RS only
var dailyTotalBasalUnits = 0.0 // RS only
+ var decRatio = 0 // RS v3: [%] for pump IOB calculation
var maxDailyTotalUnits = 0
var bolusStep = 0.1
var basalStep = 0.1
@@ -74,8 +124,9 @@ class DanaRPump @Inject constructor(
var extendedBolusRemainingMinutes = 0
var extendedBolusDeliveredSoFar = 0.0 //RS only = 0.0
- // Profile
+ // Profile R,RSv1
var units = 0
+ var activeProfile = 0
var easyBasalMode = 0
var basal48Enable = false
var currentCIR = 0
@@ -91,7 +142,10 @@ class DanaRPump @Inject constructor(
var eveningCF = 0.0
var nightCIR = 0
var nightCF = 0.0
- var activeProfile = 0
+
+ // Profile I
+ var cf24 = Array(24) { 0.0 }
+ var cir24 = Array(24) { 0.0 }
//var pumpProfiles = arrayOf>()
var pumpProfiles: Array>? = null
@@ -102,6 +156,7 @@ class DanaRPump @Inject constructor(
// DanaRS specific
var rsPassword = ""
+ var v3RSPump = false;
// User settings
var timeDisplayType = 0
@@ -124,15 +179,17 @@ class DanaRPump @Inject constructor(
return if (units == UNITS_MGDL) Constants.MGDL else Constants.MMOL
}
- // DanaR,Rv2,RK specific flags
- // last start bolus erroCode
- var messageStartErrorCode: Int = 0
- var historyDoneReceived: Boolean = false
+ var bolusStartErrorCode: Int = 0 // last start bolus erroCode
+ var historyDoneReceived: Boolean = false // true when last history message is received
var bolusingTreatment: Treatment? = null // actually delivered treatment
var bolusAmountToBeDelivered = 0.0 // amount to be delivered
var bolusProgressLastTimeStamp: Long = 0 // timestamp of last bolus progress message
var bolusStopped = false // bolus finished
var bolusStopForced = false // bolus forced to stop by user
+ var bolusDone = false // success end
+ var lastEventTimeLoaded: Long = 0 // timestamp of last received event
+
+ val lastKnownHistoryId: Int = 0 // hwver 7+, 1-2000
fun createConvertedProfile(): ProfileStore? {
pumpProfiles?.let {
@@ -148,18 +205,30 @@ class DanaRPump @Inject constructor(
json.put("store", store)
profile.put("dia", Constants.defaultDIA)
val carbratios = JSONArray()
- carbratios.put(JSONObject().put("time", "00:00").put("timeAsSeconds", 0).put("value", nightCIR))
- carbratios.put(JSONObject().put("time", "06:00").put("timeAsSeconds", 6 * 3600).put("value", morningCIR))
- carbratios.put(JSONObject().put("time", "11:00").put("timeAsSeconds", 11 * 3600).put("value", afternoonCIR))
- carbratios.put(JSONObject().put("time", "14:00").put("timeAsSeconds", 17 * 3600).put("value", eveningCIR))
- carbratios.put(JSONObject().put("time", "22:00").put("timeAsSeconds", 22 * 3600).put("value", nightCIR))
+ if (!profile24) {
+ carbratios.put(JSONObject().put("time", "00:00").put("timeAsSeconds", 0).put("value", nightCIR))
+ carbratios.put(JSONObject().put("time", "06:00").put("timeAsSeconds", 6 * 3600).put("value", morningCIR))
+ carbratios.put(JSONObject().put("time", "11:00").put("timeAsSeconds", 11 * 3600).put("value", afternoonCIR))
+ carbratios.put(JSONObject().put("time", "14:00").put("timeAsSeconds", 17 * 3600).put("value", eveningCIR))
+ carbratios.put(JSONObject().put("time", "22:00").put("timeAsSeconds", 22 * 3600).put("value", nightCIR))
+ } else { // 24 values
+ for (i in 0..23) {
+ carbratios.put(JSONObject().put("time", String.format("%02d", i) + ":00").put("timeAsSeconds", i * 3600).put("value", cir24[i]))
+ }
+ }
profile.put("carbratio", carbratios)
val sens = JSONArray()
- sens.put(JSONObject().put("time", "00:00").put("timeAsSeconds", 0).put("value", nightCF))
- sens.put(JSONObject().put("time", "06:00").put("timeAsSeconds", 6 * 3600).put("value", morningCF))
- sens.put(JSONObject().put("time", "11:00").put("timeAsSeconds", 11 * 3600).put("value", afternoonCF))
- sens.put(JSONObject().put("time", "17:00").put("timeAsSeconds", 17 * 3600).put("value", eveningCF))
- sens.put(JSONObject().put("time", "22:00").put("timeAsSeconds", 22 * 3600).put("value", nightCF))
+ if (!profile24) {
+ sens.put(JSONObject().put("time", "00:00").put("timeAsSeconds", 0).put("value", nightCF))
+ sens.put(JSONObject().put("time", "06:00").put("timeAsSeconds", 6 * 3600).put("value", morningCF))
+ sens.put(JSONObject().put("time", "11:00").put("timeAsSeconds", 11 * 3600).put("value", afternoonCF))
+ sens.put(JSONObject().put("time", "17:00").put("timeAsSeconds", 17 * 3600).put("value", eveningCF))
+ sens.put(JSONObject().put("time", "22:00").put("timeAsSeconds", 22 * 3600).put("value", nightCF))
+ } else { // 24 values
+ for (i in 0..23) {
+ sens.put(JSONObject().put("time", String.format("%02d", i) + ":00").put("timeAsSeconds", i * 3600).put("value", cf24[i]))
+ }
+ }
profile.put("sens", sens)
val basals = JSONArray()
val basalValues = if (basal48Enable) 48 else 24
@@ -202,13 +271,32 @@ class DanaRPump @Inject constructor(
}
val isPasswordOK: Boolean
- get() = !(password != -1 && password != sp.getInt(R.string.key_danar_password, -1))
+ get() = password == sp.getInt(R.string.key_danar_password, -2)
+
+ val isRSPasswordOK: Boolean
+ get() = rsPassword.equals(sp.getString(R.string.key_danars_password, ""), ignoreCase = true) || v3RSPump
fun reset() {
aapsLogger.debug(LTag.PUMP, "DanaRPump reset")
lastConnection = 0
+ lastSettingsRead = 0
}
+ fun modelFriendlyName(): String =
+ when (hwModel) {
+ 0x01 -> "DanaR Korean"
+ 0x03 ->
+ if (protocol == 0x00) "DanaR old"
+ else if (protocol == 0x02) "DanaR v2"
+ else "DanaR" // 0x01 and 0x03 known
+ 0x05 ->
+ if (protocol < 10) "DanaRS"
+ else "DanaRS v3"
+ 0x06 -> "DanaRS Korean"
+ 0x07 -> "Dana-i"
+ else -> "Unknown Dana pump"
+ }
+
companion object {
const val UNITS_MGDL = 0
const val UNITS_MMOL = 1
@@ -234,6 +322,9 @@ class DanaRPump @Inject constructor(
const val PROFILECHANGE = 13
const val CARBS = 14
const val PRIMECANNULA = 15
+ const val TIMECHANGE = 16
+
+ // Dana R btModel
const val DOMESTIC_MODEL = 0x01
const val EXPORT_MODEL = 0x03
}
diff --git a/dana/src/main/java/info/nightscout/androidaps/dana/DanaPumpInterface.kt b/dana/src/main/java/info/nightscout/androidaps/dana/DanaPumpInterface.kt
new file mode 100644
index 0000000000..56bbede985
--- /dev/null
+++ b/dana/src/main/java/info/nightscout/androidaps/dana/DanaPumpInterface.kt
@@ -0,0 +1,5 @@
+package info.nightscout.androidaps.dana
+
+interface DanaPumpInterface {
+ fun clearPairing()
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/activities/DanaRHistoryActivity.kt b/dana/src/main/java/info/nightscout/androidaps/dana/activities/DanaHistoryActivity.kt
similarity index 91%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/activities/DanaRHistoryActivity.kt
rename to dana/src/main/java/info/nightscout/androidaps/dana/activities/DanaHistoryActivity.kt
index 0daed24ddb..78c2655dec 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/activities/DanaRHistoryActivity.kt
+++ b/dana/src/main/java/info/nightscout/androidaps/dana/activities/DanaHistoryActivity.kt
@@ -1,4 +1,4 @@
-package info.nightscout.androidaps.plugins.pump.danaR.activities
+package info.nightscout.androidaps.dana.activities
import android.os.Bundle
import android.view.LayoutInflater
@@ -10,22 +10,21 @@ import android.widget.TextView
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import info.nightscout.androidaps.Constants
-import info.nightscout.androidaps.MainApp
-import info.nightscout.androidaps.R
import info.nightscout.androidaps.activities.NoSplashAppCompatActivity
+import info.nightscout.androidaps.dana.R
+import info.nightscout.androidaps.dana.comm.RecordTypes
import info.nightscout.androidaps.data.Profile
import info.nightscout.androidaps.db.DanaRHistoryRecord
import info.nightscout.androidaps.events.EventPumpStatusChanged
+import info.nightscout.androidaps.interfaces.ActivePluginProvider
import info.nightscout.androidaps.interfaces.CommandQueueProvider
-import info.nightscout.androidaps.interfaces.PluginType
+import info.nightscout.androidaps.interfaces.DatabaseHelperInterface
+import info.nightscout.androidaps.interfaces.ProfileFunction
import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction
-import info.nightscout.androidaps.plugins.pump.danaR.comm.RecordTypes
-import info.nightscout.androidaps.plugins.pump.danaR.events.EventDanaRSyncStatus
-import info.nightscout.androidaps.plugins.pump.danaRKorean.DanaRKoreanPlugin
-import info.nightscout.androidaps.plugins.pump.danaRS.DanaRSPlugin
+import info.nightscout.androidaps.plugins.pump.common.defs.PumpType
+import info.nightscout.androidaps.events.EventDanaRSyncStatus
import info.nightscout.androidaps.queue.Callback
import info.nightscout.androidaps.utils.DateUtil
import info.nightscout.androidaps.utils.DecimalFormatter
@@ -38,15 +37,16 @@ import kotlinx.android.synthetic.main.danar_historyactivity.*
import java.util.*
import javax.inject.Inject
-class DanaRHistoryActivity : NoSplashAppCompatActivity() {
+class DanaHistoryActivity : NoSplashAppCompatActivity() {
@Inject lateinit var rxBus: RxBusWrapper
@Inject lateinit var aapsLogger: AAPSLogger
@Inject lateinit var resourceHelper: ResourceHelper
@Inject lateinit var profileFunction: ProfileFunction
@Inject lateinit var fabricPrivacy: FabricPrivacy
- @Inject lateinit var danaRKoreanPlugin: DanaRKoreanPlugin
- @Inject lateinit var danaRSPlugin: DanaRSPlugin
+ @Inject lateinit var activePlugin: ActivePluginProvider
@Inject lateinit var commandQueue: CommandQueueProvider
+ @Inject lateinit var databaseHelper: DatabaseHelperInterface
+ @Inject lateinit var dateUtil: DateUtil
private val disposable = CompositeDisposable()
@@ -86,8 +86,9 @@ class DanaRHistoryActivity : NoSplashAppCompatActivity() {
danar_history_recyclerview.adapter = RecyclerViewAdapter(historyList)
danar_history_status.visibility = View.GONE
- val isKorean = danaRKoreanPlugin.isEnabled(PluginType.PUMP)
- val isRS = danaRSPlugin.isEnabled(PluginType.PUMP)
+ val pump = activePlugin.activePump
+ val isKorean = pump.pumpDescription.pumpType == PumpType.DanaRKorean
+ val isRS = pump.pumpDescription.pumpType == PumpType.DanaRS
// Types
val typeList = ArrayList()
@@ -108,7 +109,7 @@ class DanaRHistoryActivity : NoSplashAppCompatActivity() {
danar_history_spinner.adapter = ArrayAdapter(this, R.layout.spinner_centered, typeList)
danar_history_reload.setOnClickListener {
- val selected = danar_history_spinner.selectedItem as TypeList
+ val selected = danar_history_spinner.selectedItem as TypeList? ?: return@setOnClickListener
runOnUiThread {
danar_history_reload?.visibility = View.GONE
danar_history_status?.visibility = View.VISIBLE
@@ -125,8 +126,8 @@ class DanaRHistoryActivity : NoSplashAppCompatActivity() {
})
}
danar_history_spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
- override fun onItemSelected(parent: AdapterView<*>?, view: View, position: Int, id: Long) {
- val selected = danar_history_spinner?.selectedItem as TypeList? ?: return
+ override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
+ val selected = typeList[position]
loadDataFromDB(selected.type)
showingType = selected.type
}
@@ -143,7 +144,7 @@ class DanaRHistoryActivity : NoSplashAppCompatActivity() {
override fun onBindViewHolder(holder: HistoryViewHolder, position: Int) {
val record = historyList[position]
- holder.time.text = DateUtil.dateAndTimeString(record.recordDate)
+ holder.time.text = dateUtil.dateAndTimeString(record.recordDate)
holder.value.text = DecimalFormatter.to2Decimal(record.recordValue)
holder.stringValue.text = record.stringRecordValue
holder.bolusType.text = record.bolusType
@@ -247,7 +248,7 @@ class DanaRHistoryActivity : NoSplashAppCompatActivity() {
}
private fun loadDataFromDB(type: Byte) {
- historyList = MainApp.getDbHelper().getDanaRHistoryRecordsByType(type)
+ historyList = databaseHelper.getDanaRHistoryRecordsByType(type)
runOnUiThread { danar_history_recyclerview?.swapAdapter(RecyclerViewAdapter(historyList), false) }
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/activities/DanaRUserOptionsActivity.kt b/dana/src/main/java/info/nightscout/androidaps/dana/activities/DanaUserOptionsActivity.kt
similarity index 52%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/activities/DanaRUserOptionsActivity.kt
rename to dana/src/main/java/info/nightscout/androidaps/dana/activities/DanaUserOptionsActivity.kt
index 624b681dc5..fafebe603d 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/activities/DanaRUserOptionsActivity.kt
+++ b/dana/src/main/java/info/nightscout/androidaps/dana/activities/DanaUserOptionsActivity.kt
@@ -1,22 +1,20 @@
-package info.nightscout.androidaps.plugins.pump.danaR.activities
+package info.nightscout.androidaps.dana.activities
+import android.content.Context
import android.content.Intent
import android.os.Bundle
import info.nightscout.androidaps.Constants
-import info.nightscout.androidaps.MainApp
-import info.nightscout.androidaps.R
import info.nightscout.androidaps.activities.ErrorHelperActivity
import info.nightscout.androidaps.activities.NoSplashAppCompatActivity
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.dana.R
import info.nightscout.androidaps.events.EventInitializationChanged
+import info.nightscout.androidaps.interfaces.ActivePluginProvider
import info.nightscout.androidaps.interfaces.CommandQueueProvider
-import info.nightscout.androidaps.interfaces.PluginType
import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPlugin
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
-import info.nightscout.androidaps.plugins.pump.danaRS.DanaRSPlugin
-import info.nightscout.androidaps.plugins.pump.danaRv2.DanaRv2Plugin
+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.extensions.plusAssign
@@ -29,25 +27,24 @@ import javax.inject.Inject
import kotlin.math.max
import kotlin.math.min
-class DanaRUserOptionsActivity : NoSplashAppCompatActivity() {
+class DanaUserOptionsActivity : NoSplashAppCompatActivity() {
@Inject lateinit var aapsLogger: AAPSLogger
@Inject lateinit var rxBus: RxBusWrapper
@Inject lateinit var fabricPrivacy: FabricPrivacy
@Inject lateinit var resourceHelper: ResourceHelper
- @Inject lateinit var mainApp: MainApp
- @Inject lateinit var danaRSPlugin: DanaRSPlugin
- @Inject lateinit var danaRPlugin: DanaRPlugin
- @Inject lateinit var danaRv2Plugin: DanaRv2Plugin
- @Inject lateinit var danaRPump: DanaRPump
+ @Inject lateinit var context: Context
+ @Inject lateinit var danaPump: DanaPump
+ @Inject lateinit var activePlugin: ActivePluginProvider
@Inject lateinit var commandQueue: CommandQueueProvider
private val disposable = CompositeDisposable()
// This is for Dana pumps only
- private fun isRS() = danaRSPlugin.isEnabled(PluginType.PUMP)
+ private fun isRS() = activePlugin.activePump.pumpDescription.pumpType == PumpType.DanaRS
+ private fun isDanaR() = activePlugin.activePump.pumpDescription.pumpType == PumpType.DanaR
+ private fun isDanaRv2() = activePlugin.activePump.pumpDescription.pumpType == PumpType.DanaRv2
- private fun isDanaR() = danaRPlugin.isEnabled(PluginType.PUMP)
- private fun isDanaRv2() = danaRv2Plugin.isEnabled(PluginType.PUMP)
+ var minBacklight = 1
@Synchronized
override fun onResume() {
@@ -70,21 +67,23 @@ class DanaRUserOptionsActivity : NoSplashAppCompatActivity() {
save_user_options.setOnClickListener { onSaveClick() }
- aapsLogger.debug(LTag.PUMP,
- "UserOptionsLoaded:" + (System.currentTimeMillis() - danaRPump.lastConnection) / 1000 + " s ago"
- + "\ntimeDisplayType:" + danaRPump.timeDisplayType
- + "\nbuttonScroll:" + danaRPump.buttonScrollOnOff
- + "\ntimeDisplayType:" + danaRPump.timeDisplayType
- + "\nlcdOnTimeSec:" + danaRPump.lcdOnTimeSec
- + "\nbackLight:" + danaRPump.backlightOnTimeSec
- + "\npumpUnits:" + danaRPump.units
- + "\nlowReservoir:" + danaRPump.lowReservoirRate)
+ minBacklight = if (danaPump.hwModel < 7) 1 else 0 // Dana-i allows zero
- danar_screentimeout.setParams(danaRPump.lcdOnTimeSec.toDouble(), 5.0, 240.0, 5.0, DecimalFormat("1"), false, save_user_options)
- danar_backlight.setParams(danaRPump.backlightOnTimeSec.toDouble(), 1.0, 60.0, 1.0, DecimalFormat("1"), false, save_user_options)
- danar_shutdown.setParams(danaRPump.shutdownHour.toDouble(), 0.0, 24.0, 1.0, DecimalFormat("1"), true, save_user_options)
- danar_lowreservoir.setParams(danaRPump.lowReservoirRate.toDouble(), 10.0, 60.0, 10.0, DecimalFormat("10"), false, save_user_options)
- when (danaRPump.beepAndAlarm) {
+ aapsLogger.debug(LTag.PUMP,
+ "UserOptionsLoaded:" + (System.currentTimeMillis() - danaPump.lastConnection) / 1000 + " s ago"
+ + "\ntimeDisplayType:" + danaPump.timeDisplayType
+ + "\nbuttonScroll:" + danaPump.buttonScrollOnOff
+ + "\ntimeDisplayType:" + danaPump.timeDisplayType
+ + "\nlcdOnTimeSec:" + danaPump.lcdOnTimeSec
+ + "\nbackLight:" + danaPump.backlightOnTimeSec
+ + "\npumpUnits:" + danaPump.units
+ + "\nlowReservoir:" + danaPump.lowReservoirRate)
+
+ danar_screentimeout.setParams(danaPump.lcdOnTimeSec.toDouble(), 5.0, 240.0, 5.0, DecimalFormat("1"), false, save_user_options)
+ danar_backlight.setParams(danaPump.backlightOnTimeSec.toDouble(), minBacklight.toDouble(), 60.0, 1.0, DecimalFormat("1"), false, save_user_options)
+ danar_shutdown.setParams(danaPump.shutdownHour.toDouble(), 0.0, 24.0, 1.0, DecimalFormat("1"), true, save_user_options)
+ danar_lowreservoir.setParams(danaPump.lowReservoirRate.toDouble(), 10.0, 50.0, 10.0, DecimalFormat("10"), false, save_user_options)
+ when (danaPump.beepAndAlarm) {
0x01 -> danar_pumpalarm_sound.isChecked = true
0x02 -> danar_pumpalarm_vibrate.isChecked = true
0x11 -> danar_pumpalarm_both.isChecked = true
@@ -104,20 +103,20 @@ class DanaRUserOptionsActivity : NoSplashAppCompatActivity() {
danar_beep.isChecked = true
}
}
- if (danaRPump.lastSettingsRead == 0L)
+ if (danaPump.lastSettingsRead == 0L)
aapsLogger.error(LTag.PUMP, "No settings loaded from pump!") else setData()
}
fun setData() {
// in DanaRS timeDisplay values are reversed
- danar_timeformat.isChecked = !isRS() && danaRPump.timeDisplayType != 0 || isRS() && danaRPump.timeDisplayType == 0
- danar_buttonscroll.isChecked = danaRPump.buttonScrollOnOff != 0
- danar_beep.isChecked = danaRPump.beepAndAlarm > 4
- danar_screentimeout.value = danaRPump.lcdOnTimeSec.toDouble()
- danar_backlight.value = danaRPump.backlightOnTimeSec.toDouble()
- danar_units.isChecked = danaRPump.getUnits() == Constants.MMOL
- danar_shutdown.value = danaRPump.shutdownHour.toDouble()
- danar_lowreservoir.value = danaRPump.lowReservoirRate.toDouble()
+ danar_timeformat.isChecked = !isRS() && danaPump.timeDisplayType != 0 || isRS() && danaPump.timeDisplayType == 0
+ danar_buttonscroll.isChecked = danaPump.buttonScrollOnOff != 0
+ danar_beep.isChecked = danaPump.beepAndAlarm > 4
+ danar_screentimeout.value = danaPump.lcdOnTimeSec.toDouble()
+ danar_backlight.value = danaPump.backlightOnTimeSec.toDouble()
+ danar_units.isChecked = danaPump.getUnits() == Constants.MMOL
+ danar_shutdown.value = danaPump.shutdownHour.toDouble()
+ danar_lowreservoir.value = danaPump.lowReservoirRate.toDouble()
}
private fun onSaveClick() {
@@ -125,40 +124,40 @@ class DanaRUserOptionsActivity : NoSplashAppCompatActivity() {
if (!isRS() && !isDanaR() && !isDanaRv2()) return
if (isRS()) // displayTime on RS is reversed
- danaRPump.timeDisplayType = if (danar_timeformat.isChecked) 0 else 1
+ danaPump.timeDisplayType = if (danar_timeformat.isChecked) 0 else 1
else
- danaRPump.timeDisplayType = if (danar_timeformat.isChecked) 1 else 0
+ danaPump.timeDisplayType = if (danar_timeformat.isChecked) 1 else 0
- danaRPump.buttonScrollOnOff = if (danar_buttonscroll.isChecked) 1 else 0
- danaRPump.beepAndAlarm = when {
+ danaPump.buttonScrollOnOff = if (danar_buttonscroll.isChecked) 1 else 0
+ danaPump.beepAndAlarm = when {
danar_pumpalarm_sound.isChecked -> 1
danar_pumpalarm_vibrate.isChecked -> 2
danar_pumpalarm_both.isChecked -> 3
else -> 1
}
- if (danar_beep.isChecked) danaRPump.beepAndAlarm += 4
+ if (danar_beep.isChecked) danaPump.beepAndAlarm += 4
// step is 5 seconds, 5 to 240
- danaRPump.lcdOnTimeSec = min(max(danar_screentimeout.value.toInt() / 5 * 5, 5), 240)
+ danaPump.lcdOnTimeSec = min(max(danar_screentimeout.value.toInt() / 5 * 5, 5), 240)
// 1 to 60
- danaRPump.backlightOnTimeSec = min(max(danar_backlight.value.toInt(), 1), 60)
+ danaPump.backlightOnTimeSec = min(max(danar_backlight.value.toInt(), minBacklight), 60)
- danaRPump.units = if (danar_units.isChecked) 1 else 0
+ danaPump.units = if (danar_units.isChecked) 1 else 0
- danaRPump.shutdownHour = min(danar_shutdown.value.toInt(), 24)
+ danaPump.shutdownHour = min(danar_shutdown.value.toInt(), 24)
// 10 to 50
- danaRPump.lowReservoirRate = min(max(danar_lowreservoir.value.toInt() * 10 / 10, 10), 50)
+ danaPump.lowReservoirRate = min(max(danar_lowreservoir.value.toInt() * 10 / 10, 10), 50)
commandQueue.setUserOptions(object : Callback() {
override fun run() {
if (!result.success) {
- val i = Intent(mainApp, ErrorHelperActivity::class.java)
+ val i = Intent(context, ErrorHelperActivity::class.java)
i.putExtra("soundid", R.raw.boluserror)
i.putExtra("status", result.comment)
i.putExtra("title", resourceHelper.gs(R.string.pumperror))
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
- mainApp.startActivity(i)
+ context.startActivity(i)
}
}
})
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/RecordTypes.kt b/dana/src/main/java/info/nightscout/androidaps/dana/comm/RecordTypes.kt
similarity index 91%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/RecordTypes.kt
rename to dana/src/main/java/info/nightscout/androidaps/dana/comm/RecordTypes.kt
index 74d594dc71..30ba45483e 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/RecordTypes.kt
+++ b/dana/src/main/java/info/nightscout/androidaps/dana/comm/RecordTypes.kt
@@ -1,4 +1,4 @@
-package info.nightscout.androidaps.plugins.pump.danaR.comm
+package info.nightscout.androidaps.dana.comm
object RecordTypes {
const val RECORD_TYPE_BOLUS = 0x01.toByte()
diff --git a/dana/src/main/java/info/nightscout/androidaps/dana/di/DanaModule.kt b/dana/src/main/java/info/nightscout/androidaps/dana/di/DanaModule.kt
new file mode 100644
index 0000000000..224838979b
--- /dev/null
+++ b/dana/src/main/java/info/nightscout/androidaps/dana/di/DanaModule.kt
@@ -0,0 +1,17 @@
+package info.nightscout.androidaps.dana.di
+
+import dagger.Module
+import dagger.android.ContributesAndroidInjector
+import info.nightscout.androidaps.dana.DanaFragment
+import info.nightscout.androidaps.dana.activities.DanaHistoryActivity
+import info.nightscout.androidaps.dana.activities.DanaUserOptionsActivity
+
+@Module
+@Suppress("unused")
+abstract class DanaModule {
+
+ @ContributesAndroidInjector abstract fun contributesDanaRFragment(): DanaFragment
+ @ContributesAndroidInjector abstract fun contributeDanaRHistoryActivity(): DanaHistoryActivity
+ @ContributesAndroidInjector abstract fun contributeDanaRUserOptionsActivity(): DanaUserOptionsActivity
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/events/EventDanaRNewStatus.kt b/dana/src/main/java/info/nightscout/androidaps/dana/events/EventDanaRNewStatus.kt
similarity index 58%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/events/EventDanaRNewStatus.kt
rename to dana/src/main/java/info/nightscout/androidaps/dana/events/EventDanaRNewStatus.kt
index 67b12d954c..f022e5b128 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/events/EventDanaRNewStatus.kt
+++ b/dana/src/main/java/info/nightscout/androidaps/dana/events/EventDanaRNewStatus.kt
@@ -1,4 +1,4 @@
-package info.nightscout.androidaps.plugins.pump.danaR.events
+package info.nightscout.androidaps.dana.events
import info.nightscout.androidaps.events.Event
diff --git a/app/src/main/res/layout/danar_fragment.xml b/dana/src/main/res/layout/danar_fragment.xml
similarity index 96%
rename from app/src/main/res/layout/danar_fragment.xml
rename to dana/src/main/res/layout/danar_fragment.xml
index 0636472821..3eff537255 100644
--- a/app/src/main/res/layout/danar_fragment.xml
+++ b/dana/src/main/res/layout/danar_fragment.xml
@@ -3,7 +3,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="5dp"
- tools:context=".plugins.pump.danaR.DanaRFragment">
+ tools:context="info.nightscout.androidaps.dana.DanaFragment">
+ android:text="@string/viewprofile" />
+ android:text="@string/pumphistory" />
+ android:text="@string/stats" />
diff --git a/app/src/main/res/layout/danar_history_item.xml b/dana/src/main/res/layout/danar_history_item.xml
similarity index 100%
rename from app/src/main/res/layout/danar_history_item.xml
rename to dana/src/main/res/layout/danar_history_item.xml
diff --git a/app/src/main/res/layout/danar_historyactivity.xml b/dana/src/main/res/layout/danar_historyactivity.xml
similarity index 87%
rename from app/src/main/res/layout/danar_historyactivity.xml
rename to dana/src/main/res/layout/danar_historyactivity.xml
index ea371daedb..3d1771dde4 100644
--- a/app/src/main/res/layout/danar_historyactivity.xml
+++ b/dana/src/main/res/layout/danar_historyactivity.xml
@@ -3,7 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
- tools:context=".plugins.pump.danaR.activities.DanaRHistoryActivity">
+ tools:context="info.nightscout.androidaps.dana.activities.DanaHistoryActivity">
+ android:contentDescription="@string/pumphistory"
+ android:src="@drawable/ic_danarhistory" />
@@ -55,7 +55,7 @@
android:layout_height="wrap_content"
android:layout_marginStart="15dp"
android:layout_marginEnd="20dp"
- android:text="@string/careportal_newnstreatment_eventtype"
+ android:text="@string/eventtype"
android:textAppearance="?android:attr/textAppearanceSmall" />
+ android:drawableStart="@drawable/ic_actions_refill"
+ android:text="@string/reload" />
diff --git a/app/src/main/res/layout/danar_user_options_activity.xml b/dana/src/main/res/layout/danar_user_options_activity.xml
similarity index 96%
rename from app/src/main/res/layout/danar_user_options_activity.xml
rename to dana/src/main/res/layout/danar_user_options_activity.xml
index 489e174fe6..94f23c5f96 100644
--- a/app/src/main/res/layout/danar_user_options_activity.xml
+++ b/dana/src/main/res/layout/danar_user_options_activity.xml
@@ -5,7 +5,7 @@
android:fillViewport="true"
android:focusable="true"
android:focusableInTouchMode="true"
- tools:context=".plugins.pump.danaR.activities.DanaRUserOptionsActivity">
+ tools:context="info.nightscout.androidaps.dana.activities.DanaUserOptionsActivity">
+ android:src="@drawable/ic_danar_useropt" />
-
-
-
-
diff --git a/dana/src/main/res/values-af-rZA/strings.xml b/dana/src/main/res/values-af-rZA/strings.xml
new file mode 100644
index 0000000000..3ea04e700d
--- /dev/null
+++ b/dana/src/main/res/values-af-rZA/strings.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/dana/src/main/res/values-ar-rSA/strings.xml b/dana/src/main/res/values-ar-rSA/strings.xml
new file mode 100644
index 0000000000..3ea04e700d
--- /dev/null
+++ b/dana/src/main/res/values-ar-rSA/strings.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/dana/src/main/res/values-bg-rBG/strings.xml b/dana/src/main/res/values-bg-rBG/strings.xml
new file mode 100644
index 0000000000..72d2e51a94
--- /dev/null
+++ b/dana/src/main/res/values-bg-rBG/strings.xml
@@ -0,0 +1,122 @@
+
+
+ Сдвояване
+ Все още устройството не е намерено
+ Сдвояване - ОК
+ Времето за сдвояване изтече
+ Очаква сдвояване с помпа
+ DanaRS
+ Dana
+ Поддръжка за Dana Diabecare RS помпи
+ Превишавате макс болус
+ Грешка при команда
+ Скорост грешка
+ Нарушение на макс дневен инсулин
+ Стартирано: %1$.2fЕ Доставено: %2$.2fЕ Код на грешка: %3$s
+ Неправилна стойност
+ Задайте стъпка на базала 0.01 Е/ч
+ Нулиране на сдвояването?
+ %1$s\nМодел: %2$02X\nПротокол: %3$02X\nКод: %4$02X
+ Обработва се събитие
+ Разрешете удължените болуси в настройките на помпата
+ Доставен
+ Спрян
+ Неподдържан фърмуер на помпата
+ Грешка в промпата
+ Изтощена батерия
+ Доставяне на по-малко от предварително зададена базал
+ Помпата е изключена
+ Батерията на помпата е изтощена
+ Запушване
+ Празен резервоар
+ Проверете вал
+ Базал макс
+ Дневния максимум
+ Предупреждение за измерване на КЗ
+ Оставащ инсулин
+ Пропуснат болус
+ Невалидна информация при сдвояване. Нов опит
+ Получава статус на помпата
+ Получава статус на удължен болус
+ Получава болус статус
+ Получава статус на временен базал
+ Получава настройките на помпата
+ Получава времето на помпата
+ Голяма времева разлика
+ Голяма времева разлика: Помпата е изключена за повече от 1,5 часа. Моля, регулирайте ръчно времето на помпата и се уверете, че четенето на историята от помпата не води до неочаквано поведение. Ако е възможно, премахнете историята от помпата, преди да промените времето или да изключите затворения кръг за едно DIA след последното погрешно влизане в историята, но поне едно DIA отсега.
+ Моля първо свържете помпата с телефона от Bluetooth настройките
+ Близо до максмалния дневен инсулин
+ Стартира доставка на болус
+ Изчаква края на болуса. Остават %1$d сек.
+ Спира временен базал
+ Настойва удължен болус
+ Спира удължен болус
+ Обновява базални стойности
+ Настройва временен базал
+ Изчаква синхронизация на времето (%1$d сек)
+ Грешна парола
+ Грешна парола за помпата!
+ Аларми
+ Базален по часове
+ Болуси
+ Въглехидрати
+ Инсулин за деня
+ Грешки
+ КЗ
+ Презареждане
+ Спиране
+ Пълнене
+ Потребителски опции
+ Формат на времето
+ Превъртане при задъжане
+ Звуков сигнал при натискане на бутон
+ Тип аларма
+ Звукова
+ Вибрация
+ И двете
+ Включен екран за [seconds]
+ Подсветка [seconds]
+ Единици на КЗ
+ Изключване след [hours]
+ Минимален инсулин в резервоара [Units]
+ Запиши опциите в помпата
+ Поддръжка за Dana Diabecare R помпи
+ Поддръжка за корейски Dana Diabecare R помпи
+ Поддръжка за Dana Diabecare R помпи с обновен софтуер
+ DANA
+ Не е открит Bluetooth адаптер
+ Избраното устройство не е открито
+ Променете режима от U/d на U/h в помпата
+ DanaR Корейска
+ DanaR
+ Драйверът за помпата е коригиран
+ DanaRv2
+ Забрани EasyUI режим в помпата
+ Неуспешно задаване на базален профил
+ Bluetooh статус
+ IOB на помпата
+ Стъпка при базал
+ Стъпка при болус
+ Фърмуер
+ DanaR настройки
+ 12ч
+ 24ч
+ Вкл
+ Изкл
+ DanaR Bluetooth устройство
+ Парола на помпата (само v1)
+ Парола за помпата
+ Използвай удължени болуси при над >200%%
+ Показвай удължените болуси като %%
+ Скорост на болус
+ Избрана помпа
+ Записвай смените на резервоар
+ Добави \"Смяна на резервоар\" в НС, когато е открит в историята
+ Записвай смяна на канюла
+ Добави \"смяна на канюла\" в НС, когато е открит в историята
+ PIN1
+ PIN2
+ Натиснете OK на помпата\nи въведете двата номера\nДръжте дисплея на помпата включен чрез натискане минус бутон, докато завършите въвеждане на код.
+ 1: (12 цифри)
+ 2: (8 цифри)
+
diff --git a/dana/src/main/res/values-cs-rCZ/strings.xml b/dana/src/main/res/values-cs-rCZ/strings.xml
new file mode 100644
index 0000000000..695e20aefe
--- /dev/null
+++ b/dana/src/main/res/values-cs-rCZ/strings.xml
@@ -0,0 +1,122 @@
+
+
+ Párování
+ Prozatím žádné zařízení nenalezeno
+ Spárováno
+ Vypršel časový limit pro párování
+ Čekání na spárování na pumpě
+ DanaRS
+ Dana
+ Ovladač pumpy pro DanaRS
+ Překročen maximální bolus
+ Chyba příkazu
+ Chyba rychlosti
+ Překročen limit inzulínu
+ Požadováno: %1$.2fU Doručeno: %2$.2fU Chyba: %3$s
+ Hodnota nenastavena správně
+ Nastavte bazální krok 0.01U/h
+ Reset párování?
+ %1$s\nModel: %2$02X\nProtokol: %3$02X\nKód: %4$02X
+ Zpracovávám
+ Povolit kombinované bolusy v pumpě
+ Podáno
+ Zastaveno
+ Nepodporovaný firmware v pumpě
+ Chyba pumpy
+ Nízký stav baterie
+ Dodávám méně než přednastavený bazál
+ Pumpa vypnuta
+ Baterie v pumpě vybitá
+ Okluze
+ Prázdný zásobník
+ Zkontrolovat hřídel
+ Max. bazál
+ Max. denní
+ Výstraha měření glykémie
+ Zbývající inzulín
+ Chybějící bolus
+ Neplatné informace o párování. Požadavek na nové párování
+ Nahrávám stav pumpy
+ Nahrávám prodloužené bolusy
+ Nahrávám bolusy
+ Nahrávám dočasné bazály
+ Nahrávám nastavení pumpy
+ Nahrávám čas v pumpě
+ Velký rozdíl v času
+ Velký rozdíl v času:\nČas v pumpě se liší minimálně o 1,5 h.\nProsím upravte čas v pumpě ručně a vymažte historii pumpy.\nPokud je to třeba, pozastavte smyčku alespoň na \"DIA\" hodin.
+ Spárujte pumpu s telefonem!
+ Blíží se denní limit inzulínu
+ Spouštím bolus
+ Čekání na konec bolusu. Zbývá %1$d sek.
+ Zastavuji dočasný bazál
+ Nastavuji prodloužený bolus
+ Zastavuji prodloužený bolus
+ Aktualizuji bazály
+ Nastavuji dočasný bazál
+ Čekání na synchronizaci času (%1$d s)
+ Chybné heslo
+ Špatné heslo k pumpě!
+ Alarmy
+ Hodinové bazály
+ Bolusy
+ Sacharidy
+ Denní inzulín
+ Chyby
+ Glykémie
+ Plnění
+ Vypnutí
+ Doplňování
+ Uživatelská nastavení
+ Formát času
+ Posun při stisknutí tlačítka
+ Zvuk při stisknutí tlačítka
+ Alarm
+ Zvuk
+ Vibrace
+ Oboje
+ Čas před vypnutím displeje [sekundy]
+ Podsvícení [sekundy]
+ Jednotky
+ Vypnutí [hodiny]
+ Nízký stav zásobníku [Jednotky]
+ Uložit do pumpy
+ Ovladač pumpy pro DanaR
+ Ovladač pumpy pro korejskou verzi DanaR
+ Ovladač pumpy pro DanaR s upgradovaným firmwarem
+ DANA
+ Nenalezen Bluetooth adaptér
+ Vybrané zařízení nenalezeno
+ Změnit režim z U/d na U/h v pumpě
+ Korejská DanaR
+ DanaR
+ Ovladač pumpy opraven
+ DanaRv2
+ Zakázat EasyUI režim v pumpě
+ Nastavení bazálního profilu selhalo
+ Stav Bluetooth
+ IOB z pumpy
+ Krok bazálu
+ Krok bolusu
+ Firmware
+ Nastavení pumpy Dana
+ 12h
+ 24h
+ ZAP
+ VYP
+ DanaR Bluetooth zařízení
+ Heslo pumpy (pouze v1)
+ Heslo k pumpě
+ Použít prodloužené bolusy pro >200%%
+ Zobrazovat prodloužený bolus v %%
+ Rychlost bolusu
+ Vybraná pumpa
+ Zaznamenat výměnu zásobníku
+ Přidat událost \"Výměna inzulínu\" do portálu pěče, pokud je zjištěna v historii
+ Zaznamenat změnu kanyly
+ Přidat událost \"Výměna setu\" do portálu pěče, pokud je zjištěna v historii
+ PIN1
+ PIN2
+ Stiskněte OK na pumpě\na zadejte 2 zobrazená čísla\nUdržujte display na pumpě zapnutý stisknutím tlačítka minus dokud nedokončíte zadání kódu.
+ 1: (12 číslic)
+ 2: (8 číslic)
+
diff --git a/dana/src/main/res/values-cy-rGB/strings.xml b/dana/src/main/res/values-cy-rGB/strings.xml
new file mode 100644
index 0000000000..3ea04e700d
--- /dev/null
+++ b/dana/src/main/res/values-cy-rGB/strings.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/dana/src/main/res/values-de-rDE/strings.xml b/dana/src/main/res/values-de-rDE/strings.xml
new file mode 100644
index 0000000000..56f9391d6e
--- /dev/null
+++ b/dana/src/main/res/values-de-rDE/strings.xml
@@ -0,0 +1,122 @@
+
+
+ Koppeln
+ Pumpe noch nicht gefunden
+ Pairing OK
+ Zeitüberschreitung beim Pairing
+ Auf Verbindung warten
+ DanaRS
+ Dana
+ Pumpen-Integration für Dana Diabecare RS Pumpen
+ Max. Bolus überschritten
+ Fehler bei Befehl
+ Geschwindigkeits-Fehler
+ Insulin-Beschränkung verletzt
+ Angefragt: %1$.2f IE. Abgegeben: %2$.2f IE. Fehlercode: %3$s
+ Wert nicht korrekt gesetzt
+ Setze Basalschritt auf 0.01 IE/h
+ Pairing zurücksetzen?
+ %1$s\nModel: %2$02X\nProtokoll: %3$02X\nCode: %4$02X
+ Ereignis wird verarbeitet
+ Aktiviere verzögerten Bolus in der Pumpe.
+ Abgegeben
+ Gestoppt
+ Nicht unterstützte Pumpen-Firmware
+ Pumpenfehler
+ Niedriger Batteriestand
+ Weniger als voreingestellte Basalrate abgeben
+ Pumpe stoppen
+ Pumpenbatterie entladen
+ Verstopfung
+ Reservoir leer
+ Gewindestange prüfen
+ max. Basal
+ Tagesmaximum
+ Alarm BZ-Messung
+ Restinsulin
+ Versäumter Bolus
+ Ungültige Pairing-Info. Paire neu.
+ Pumpenstatus wird geladen
+ Status des verzögerten Bolus wird ermittelt
+ Status des Bolus wird ermittelt
+ Status der TBR wird ermittelt
+ Pumpen-Einstellungen werden ermittelt
+ Zeiteinstellung der Pumpe wird ermittelt
+ Große Zeitdifferenz
+ Großer Zeitunterschied:\nDie Zeit in der Pumpe weicht um mindestens 1,5 Stunden ab.\nPasse die Zeit auf der Pumpe manuell an und lösche zuvor - falls möglich - die Pumpenhistorie.\nAlternativ kannst Du den Loop für die Stunden der Insulinwirkzeit (DIA) deaktivieren.
+ Bitte kopple deine Pumpe mit deinem Telefon!
+ Tagesinsulin-Limit wird bald erreicht
+ Bolus-Abgabe gestartet
+ Warte auf Ende der Bolus-Abgabe. %1$d sec verbleiben.
+ TBR wird abgebrochen
+ Verzögerter Bolus wird gesetzt
+ Verzögerter Bolus wird abgebrochen
+ Basal-Profil wird aktualisiert
+ TBR wird gesetzt
+ Warte auf Zeitsynchronisierung (%1$d Sek.)
+ Falsches Passwort
+ Falsches Pumpen-Passwort!
+ Alarme
+ Basal-Stunden
+ Boli
+ Kohlenhydrate
+ Insulin-Tagesmengen
+ Fehler
+ Glukose
+ Füllmenge
+ Unterbrechungen
+ Füllen
+ Benutzerdefinierte Einstellungen
+ Zeitformat
+ Scrollfunktion
+ Piepen (Tastentöne)
+ Alarm
+ Töne
+ Vibration
+ Beides
+ LCD-Einschaltdauer [Sek.]
+ Einschaltdauer Hintergrundbeleuchtung [Sek.]
+ BZ-Einheit
+ Abschalten (Std.)
+ Reservoir fast leer (IE)
+ In Pumpe speichern
+ Pumpen-Integration für DANA Diabecare R Pumpen
+ Pumpen-Integration für koreanische DANA Diabecare R Pumpen
+ Pumpen-Integration für DANA Diabecare R Pumpen mit aktualisierter Firmware
+ DANA
+ Kein Bluetooth-Adapter gefunden
+ Ausgewähltes Gerät nicht gefunden
+ Wechsel den Modus von IE/d zu IE/h in der Pumpe
+ DanaR Korean
+ DanaR
+ Pumpen-Treiber korrigiert
+ DanaRv2
+ EasyUI-Modus in der Pumpe deaktivieren
+ Setzen des Basal-Profils fehlgeschlagen
+ Bluetooth-Status
+ Pumpen-IOB
+ Basal-Schritt
+ Bolus-Schritt
+ Firmware
+ Dana Pumpen-Einstellungen
+ 12h
+ 24h
+ Ein
+ Aus
+ DanaR Blueetooth--Gerät
+ Pumpen-Passwort (nur v1)
+ Pumpen-Passwort
+ Benutze verzögerten Bolus für hohe TBR >200%%
+ Zeige verzögerten Bolus als %% an.
+ Bolus-Geschwindigkeit
+ Ausgewählte Pumpe
+ Reservoirwechsel aufzeichnen
+ Reservoirwechsel im Careportal hinzufügen, falls dies in der Historie gefunden wird.
+ Kanülenwechsel dokumentieren
+ Kanülenwechsel im Careportal hinzufügen, falls dies in der Historie gefunden wird.
+ PIN1
+ PIN2
+ Drücke OK auf der Pumpe\nund gib die beiden angezeigten Ziffernfolgen ein.\nHalte das Pumpendisplay aktiv indem Du den Minus-Button gedrückt hälst, bis Du den Code eingegeben hast.
+ 1: (12 Zeichen)
+ 2: (8 Zeichen)
+
diff --git a/dana/src/main/res/values-el-rGR/strings.xml b/dana/src/main/res/values-el-rGR/strings.xml
new file mode 100644
index 0000000000..3ea04e700d
--- /dev/null
+++ b/dana/src/main/res/values-el-rGR/strings.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/dana/src/main/res/values-es-rES/strings.xml b/dana/src/main/res/values-es-rES/strings.xml
new file mode 100644
index 0000000000..f2c9d14b44
--- /dev/null
+++ b/dana/src/main/res/values-es-rES/strings.xml
@@ -0,0 +1,122 @@
+
+
+ Emparejando
+ Aparato no encontrado
+ Conexión OK
+ Tiempo de Vinculación agotado
+ Esperando para conectar con bomba
+ DanaRS
+ Dana
+ Integración de bombas de insulina de DANA Diabecare RS
+ Violación de bolo Max
+ Error de comando
+ Error de velocidad
+ Límite de insulina sobrepasado
+ Solicitado: %1$.2fU Entregado: %2$.2fU Código de error: %3$s
+ Valor no establecido correctamente
+ Ajustar paso basal a 0.01 U/h
+ ¿Restablecer información de emparejamiento?
+ %1$s\nModelo: %2$02X\nProtocol: %3$02X\nCódigo: %4$02X
+ Procesando evento
+ Habilitar bolos extendidos en bomba
+ Entregado
+ Detenido
+ Firmware de la bomba no soportado
+ Error de bomba
+ Batería Baja
+ Entregar menos de la tasa basal preestablecida
+ Bomba apagada
+ Batería de la bomba descargada
+ Oclusión
+ Reservorio vacío
+ Comprobar eje
+ Basal max
+ Máximo diario
+ Alerta de control de BG
+ Insulina restante en reservorio
+ Bolo perdido
+ Información de emparejamiento no válida. Solicitando un nuevo emparejamiento
+ Recibir estado de bomba
+ Recibiendo estado de bolo extendido
+ Recibiendo estado bolo
+ Recibiendo estado basal temporal
+ Recibiendo configuración de la bomba
+ Recibiendo hora bomba
+ Diferencia de tiempo grande
+ Gran diferencia de tiempo: \nLa bomba esta desincronizada más de 1,5 horas. \npor favor ajusta la hora manualmente en la bomba y asegúrate de que la lectura del histórico de la bomba no causa comportamiento inesperado. \nSi es posible, borra el historial de la bomba antes de cambiar la hora o desactiva el lazo cerrado durante el periodo DIA (duracion insulina activa) después del último registro erróneo pero mínimo durante el DIA a partir de ahora.
+ Por favor, empareje su bomba con su teléfono!
+ Alcanzando el limite de insulina diario
+ Iniciando bolo
+ Esperando finalización del bolo. Faltan %1$d seg.
+ Parando basal temporal
+ Iniciando bolo extendido
+ Parando bolo extendido
+ Actualizando dosis basales
+ Ajustando basal temporal
+ Esperando para sincronización (%1$d sec)
+ Contraseña incorrecta
+ ¡Contraseña de la bomba incorrecta!
+ Alarmas
+ Basal Horas
+ Bolos
+ Carbohidratos
+ Insulina Diaria
+ Errores
+ Glucosa
+ Llenar
+ Suspender
+ Cebado
+ Opciones de usuario
+ Mostrar formato de tiempo
+ Botones de desplazamiento
+ Señal sonora de pulsación
+ Alarma
+ Sonido
+ Vibrar
+ Ambos
+ Tiempo de encendido de LCD [seconds]
+ Tiempo de luz fondo encendida [seconds]
+ Unidades de glucosa
+ Apagar [hours]
+ Reservorio bajo [Units]
+ Guardar las opciones en la bomba
+ Integración de bombas de insulina de DANA Diabecare R
+ Integración de bombas de insulina DANA Diabecare R
+ Integración para bombas de insulina DANA Diabecare R con el firmware actualizado
+ DANA
+ No se encuentra adaptador Bluetooth
+ El dispositivo seleccionado no se encuentra
+ Cambio de modo de U/d a U/h en bomba
+ DanaR Korean
+ DanaR
+ Control de la bomba corregido
+ DanaRv2
+ Inhabilitar modo EasyUI en bomba
+ Error al activar perfil basal
+ Estado de bluetooth
+ Bomba IOB
+ Nivel base
+ Nivel bolo
+ Firmware
+ Ajustes de la bomba Dana
+ 12 h
+ 24 h
+ Activado
+ Desactivado
+ Dispositivo Bluetooth DanaR
+ Bomba de contraseña (v1 solamente)
+ Contraseña de la bomba
+ Usar bolos extendidos para >200%%
+ Visualizar bolo extendido como %%
+ Velocidad bolo
+ Bomba seleccionada
+ Registrar cambios de reservorio
+ Añadir evento \"Cambio de Insulina\" al portal de cuidados cuando se detecte en el historial
+ Registro de cambio de cánula
+ Añadir evento \"Cambio de Cánula\" al portal de cuidados cuando se detecte en el historial
+ PIN1
+ PIN2
+ Pulse Aceptar en la bomba\ny entre 2 números visualizados\nMantener la pantalla en la bomba ON pulsando el botón menos hasta que termine de introducir el código.
+ 1: (12 dígitos)
+ 2: (8 dígitos)
+
diff --git a/dana/src/main/res/values-fi-rFI/strings.xml b/dana/src/main/res/values-fi-rFI/strings.xml
new file mode 100644
index 0000000000..3ea04e700d
--- /dev/null
+++ b/dana/src/main/res/values-fi-rFI/strings.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/dana/src/main/res/values-fr-rFR/strings.xml b/dana/src/main/res/values-fr-rFR/strings.xml
new file mode 100644
index 0000000000..21eec0d92f
--- /dev/null
+++ b/dana/src/main/res/values-fr-rFR/strings.xml
@@ -0,0 +1,122 @@
+
+
+ Appairage
+ Aucun appareil trouvé pour l\'instant
+ Appairage OK
+ Délai d\'appairage expiré
+ Attente appairage pompe
+ DanaRS
+ Dana
+ Intégration des pompes Diabecare DANA RS
+ Violation bolus Max
+ Erreur de commande
+ Erreur de vitesse
+ Violation limite d\'insuline
+ Demandé : %1$.2fU Injecté : %2$.2fU code d’erreur : %3$s
+ Valeur incorrecte définie
+ Régler incrément basal à 0,01 U/h
+ Réinitialiser l\'appairage ?
+ %1$s\nModèle : %2$02X\nProtocole : %3$02X\nCode : %4$02X
+ Traitement d\'événement
+ Activer les bolus étendus dans la pompe
+ Injecté
+ Arrêté
+ Firmware pompe incompatible
+ Erreur Pompe
+ Piles Faibles
+ Injection inférieure au débit de basal
+ Arrêt de la Pompe
+ Batterie Pompe Déchargée
+ Occlusion
+ Réservoir vide
+ Vérifier l\'axe
+ Basal max
+ Quotidien max
+ Alerte de mesure de glycémie
+ Niveau d\'insuline restant
+ Bolus manqués
+ Appairage invalide. Demande de nouvel appairage
+ Obtenir l\'état de pompe
+ Obtenir l\'état du bolus étendu
+ Obtenir l\'état du bolus
+ Obtenir l\'état du basal temporaire
+ Obtenir les paramètres pompe
+ Obtenir l\'heure de la pompe
+ Différence horaire importante
+ Différence horaire importante:\nL\'heure de la pompe est en écart de plus d\'une heure et demi.\nMerci d\'ajuster manuellement l\'heure de la pompe et assurez-vous que la lecture de l\'historique de la pompe ne cause pas de dysfonctionnements.\nSi possible, effacez l\'historique de la pompe avant de modifier l\'heure ou désactivez la Boucle Fermée pour une DAI après la dernière entrée erronée de l\'historique et au minimum une DAI à partir de maintenant.
+ Veuillez appairer votre pompe avec votre téléphone !
+ Limite quotidienne d\'insuline proche
+ Injection du bolus démarrée
+ Bolus en cours. %1$d sec. restantes.
+ Arrêter basal temp
+ Définir bolus étendu
+ Arrêter bolus étendu
+ Mise à jour des débits basal
+ Définir basal temp
+ Attente de synchronisation de l\'heure (%1$d sec)
+ Mot de passe incorrect
+ Mot de passe pompe incorrect !
+ Alarmes
+ Heures Basal
+ Bolus
+ Glucides
+ Insuline quotidienne
+ Erreurs
+ Glycémie
+ Remplir
+ Arrêter
+ Amorcer
+ Options utilisateur
+ Format d\'affichage de l\'heure
+ Bouton défiler
+ Bip sur appui bouton
+ Alarme
+ Son
+ Vibration
+ Les deux
+ Durée affichage LCD [secondes]
+ Rétro-éclairage [secondes]
+ Unités glycémie
+ Éteindre [heures]
+ Réservoir faible [Unités]
+ Enregistrer les options sur la pompe
+ Intégration des pompes Diabecare DANA R
+ Intégration des pompes coréennes Diabecare DANA RS
+ Intégration des pompes DANA Diabecare R avec firmware mis à jour
+ DANA
+ Adaptateur bluetooth introuvable
+ Appareil sélectionné introuvable
+ Changer le mode de U/j vers U/h sur la pompe
+ DanaR Coréenne
+ DanaR
+ Pilote pompe corrigé
+ DanaRv2
+ Désactiver le mode FacileUI (EasyUI) de la pompe
+ Echec Paramétrage Profil Basal
+ État Bluetooth
+ IA pompe
+ Incrément Basal
+ Incrément Bolus
+ Firmware
+ Paramètres pompe Dana
+ 12h
+ 24h
+ Activé
+ Désactivé
+ Dispositif Bluetooth DanaR
+ Mot de passe pompe (v1 uniquement)
+ Mot de passe pompe
+ Utiliser les bolus étendus pour > 200%%
+ Afficher le bolus étendu en %%
+ Vitesse bolus
+ Pompe sélectionnée
+ Enreg. changement de réservoir
+ Ajouter un évènement \"Changement d\'Insuline\" dans careportal si détecté dans l\'historique
+ Enreg. changement de site
+ Ajouter l\'évènement \"Changement de Site\" dans careportal si détecté dans l\'historique
+ PIN1
+ PIN2
+ Appuyez sur OK sur la pompe\net entrez les 2 numéros affichés\nConserver l\'affichage ACTIF sur la pompe en appuyant sur le bouton <b>moins<b> jusqu\'à ce que le code soit entré.
+ 1: (12 chiffres)
+ 2: (8 chiffres)
+
diff --git a/dana/src/main/res/values-ga-rIE/strings.xml b/dana/src/main/res/values-ga-rIE/strings.xml
new file mode 100644
index 0000000000..3ea04e700d
--- /dev/null
+++ b/dana/src/main/res/values-ga-rIE/strings.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/dana/src/main/res/values-hr-rHR/strings.xml b/dana/src/main/res/values-hr-rHR/strings.xml
new file mode 100644
index 0000000000..3ea04e700d
--- /dev/null
+++ b/dana/src/main/res/values-hr-rHR/strings.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/dana/src/main/res/values-it-rIT/strings.xml b/dana/src/main/res/values-it-rIT/strings.xml
new file mode 100644
index 0000000000..11329423d5
--- /dev/null
+++ b/dana/src/main/res/values-it-rIT/strings.xml
@@ -0,0 +1,122 @@
+
+
+ Associazione
+ Nessun dispositivo trovato finora
+ Associazione OK
+ Time out associazione
+ In attesa di associare il micro
+ DanaRS
+ Dana
+ Integrazione del microinfusore DANA Diabecare RS
+ Violazione bolo massimo
+ Errore comando
+ Errore velocità
+ Violazione limite insulina
+ Chiesto: %1$.2fU Erogato: %2$.2fU Codice errore: %3$s
+ Valore non impostato correttamente
+ Imposta incremento basale a 0.01 U/h
+ Resettare le informazioni di associazione?
+ %1$s\nModello: %2$02X\nProtocollo: %3$02X\nCodice: %4$02X
+ Elaborazione
+ Abilita bolo esteso sul micro
+ Erogato
+ Stoppato
+ Firmware del micro non supportato
+ Errore micro
+ Livello batteria basso
+ Erogazione di una velocità basale inferiore rispetto alla preimpostata
+ Arresto micro
+ Batteria del micro scarica
+ Occlusione
+ Serbatoio vuoto
+ Controlla asta meccanica (shaft)
+ Max basale
+ Max giornaliero
+ Avviso misurazione glicemia
+ Livello insulina rimanente
+ Bolo perso
+ Informazioni associazione non valide. Richiesta nuova associazione
+ Ricezione stato micro
+ Ricezione stato bolo esteso
+ Ricezione stato bolo
+ Ricezione stato basale temporanea
+ Ricezione impostazioni micro
+ Ricezione ora micro
+ Grande differenza oraria
+ Grande differenza oraria:\nL\'ora nel micro differisce per più di 1h e 30m. \nRegola l\'ora manualmente e assicurati che la lettura dello storico dal micro non causi comportamenti imprevisti.\nSe possibile, cancella lo storico del micro prima di cambiare l\'ora oppure disabilita il loop chiuso per un tempo corrispondente al tuo valore DIA.
+ Associa il micro con il tuo telefono!
+ Si avvicina il limite giornaliero di insulina
+ Avvio erogazione bolo
+ Attesa per la fine del bolo. Rimangono %1$d sec.
+ Stop basale temporanea
+ Impostazione bolo esteso
+ Stop bolo esteso
+ Aggiornamento velocità basali
+ Impostazione basale temporanea
+ In attesa della sincronizzazione dell\'ora (%1$d sec)
+ Password errata
+ Password micro errata!
+ Allarmi
+ Ore basali
+ Boli
+ Carboidrati
+ Insulina giornaliera
+ Errori
+ Glicemia
+ Riempimento
+ Sospensione
+ Caricamento
+ Opzioni utente
+ Formato dell\'ora
+ Scorrimento (tasto)
+ Suono alla pressione del tasto
+ Allarme
+ Suono
+ Vibrazione
+ Entrambi
+ LCD attivo [seconds]
+ Retroilluminazione attiva [seconds]
+ Unità glicemia
+ Arresto [hours]
+ Livello serbatoio basso [Units]
+ Salva opzioni nel micro
+ Integrazione del microinfusore DANA Diabecare R
+ Integrazione del microinfusore DANA Diabecare R Korean
+ Integrazione del microinfusore DANA Diabecare R con firmware aggiornato
+ DANA
+ Nessun adattatore bluetooth trovato
+ Dispositivo selezionato non trovato
+ Cambia modalità da U/d a U/h sul micro
+ DanaR Korean
+ DanaR
+ Driver del micro corretto
+ DanaRv2
+ Disabilita modalità EasyUI nel micro
+ Impostazione profilo basale fallita
+ Stato bluetooth
+ IOB micro
+ Incremento basale
+ Incremento bolo
+ Firmware
+ Impostazioni micro Dana
+ 12h
+ 24h
+ On
+ Off
+ Dispositivo Bluetooth DanaR
+ Password micro (solo v1)
+ Password micro
+ Usa boli estesi per >200%%
+ Visualizza bolo esteso come %%
+ Velocità bolo
+ Micro selezionato
+ Registra cambio serbatorio
+ Aggiungi evento \"cambio insulina\" al portale quando rilevato nello storico
+ Registra cambio cannula
+ Aggiungi evento \"cambio posizione\" al portale quando rilevato nello storico
+ PIN1
+ PIN2
+ Premi OK sul micro\ne inserisci i 2 numeri visualizzati\nMantieni acceso il display del micro premendo il tasto col simbolo del meno sino a che non hai finito di inserire il codice.
+ 1: (12 cifre)
+ 2: (8 cifre)
+
diff --git a/dana/src/main/res/values-iw-rIL/strings.xml b/dana/src/main/res/values-iw-rIL/strings.xml
new file mode 100644
index 0000000000..3ea04e700d
--- /dev/null
+++ b/dana/src/main/res/values-iw-rIL/strings.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/dana/src/main/res/values-ja-rJP/strings.xml b/dana/src/main/res/values-ja-rJP/strings.xml
new file mode 100644
index 0000000000..3ea04e700d
--- /dev/null
+++ b/dana/src/main/res/values-ja-rJP/strings.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/dana/src/main/res/values-ko-rKR/strings.xml b/dana/src/main/res/values-ko-rKR/strings.xml
new file mode 100644
index 0000000000..3ea04e700d
--- /dev/null
+++ b/dana/src/main/res/values-ko-rKR/strings.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/dana/src/main/res/values-lt-rLT/strings.xml b/dana/src/main/res/values-lt-rLT/strings.xml
new file mode 100644
index 0000000000..bca4fcbf52
--- /dev/null
+++ b/dana/src/main/res/values-lt-rLT/strings.xml
@@ -0,0 +1,122 @@
+
+
+ Sujungiama
+ Nerasta jokio prietaiso
+ Sujungta
+ Sujungimui skirtas laikas baigėsi
+ Laukiama ryšio su pompa
+ DanaRS
+ Dana
+ DANA Diabecare RS pompos integracija
+ Pažeistas maks boluso limitas
+ Komandos klaida
+ Greičio klaida
+ Pažeistas insulino dozės limitas
+ Įvesta: %1$.2fvv Suleista: %2$.2fvv Klaidos kodas: %3$s
+ Vertė nėra tinkamai nustatyta
+ Nustatyti bazės žingsnį 0.01 vv/val
+ Panaikinti sąsajos informaciją?
+ %1$s\nModelis: %2$02X\nProtokolas: %3$02X\nKodas: %4$02X
+ Apdorojama
+ Aktyvuoti ištęstinius bolusus pompoje
+ Suleista
+ Sustabdyta
+ Pompos programinės įrangos versija nepalaikoma
+ Pompos klaida
+ Senka baterija
+ Suleidžiama mažiau už nustatytą valandinę bazę
+ Pompa išsijungė
+ Pompos baterija išsikrovusi
+ Užsikimšimas
+ Rezervuaras tuščias
+ Patikrinti stūmoklį pompoje
+ Maks. valandinė bazė
+ Dienos maksimumas
+ Gliukozės kiekio kraujyje matavimo perspėjimas
+ Likusio insulino kiekis
+ Nesuleistas bolusas
+ Netinkama susiejimo informacija. Bandoma susieti iš naujo
+ Gaunamas pompos statusas
+ Gaunamas ištęstinio boluso statusas
+ Gaunamas boluso statusas
+ Gaunamas laikinos bazės statusas
+ Gaunami pompos nustatymai
+ Gaunamas pompos laikas
+ Didelis laiko neatitikimas
+ Didelis laiko skirtumas:\nLaikas pompoje skiriasi daugiau nei 1,5 val.\nNustatykite laiką pompoje rankiniu būdu ir įsitikinkite, kad įrašai iš pompos istorijos nesukelia netikėtų sistemos veiksmų.\nJei įmanoma, ištrinkite istoriją pompoje prieš keisdami laiką arba atjunkite uždarąjį ciklą vienai IVT po paskutinio neteisingo istorijos įrašo ar mažiausiai vienai IVT nuo dabar.
+ Atnaujinkite pompos ir telefono ryšį!
+ Artėja paros insulino limitas
+ Pradedamas bolusas
+ Laukiama boluso pabaigos. Liko %1$d s.
+ Laikinos bazės sustabdymas
+ Ištęsto boluso nustatymas
+ Ištęsto boluso sustabdymas
+ Bazė naujinama
+ Laikinos bazės nustatymas
+ Laukiama laiko sinchronizavimo (%1$d sek.)
+ Neteisingas slaptažodis
+ Neteisingas pompos slaptažodis!
+ Aliarmai
+ Valandinė bazė
+ Bolusai
+ AV
+ Paros insulinas
+ Klaidos
+ Gliukozė
+ Užpildymas
+ Sustabdyta
+ Užpildyti sistemą
+ Vartotojo parinktys
+ Rodyti laiko formatą
+ Mygtukų slinkties funkcija
+ Pypsėjimas spaudžiant mygtukus
+ Aliarmas
+ Garsas
+ Vibravimas
+ Abu
+ Ekrano aktyvumo laikas [seconds]
+ Ekrano apšvietimo laikas [seconds]
+ KG vienetai
+ Išjungimas [hours]
+ Žemas rezervuaro lygis [Units]
+ Išsaugoti nustatymus pompoje
+ DANA Diabecare R pompos integracija
+ DANA Diabecare R pompos, skirtos vietinei P. Korėjos rinkai, integracija
+ DANA Diabecare R pompos su atnaujinta programine-aparatine įranga integracija
+ DANA
+ Bluetooth adapteris nerastas
+ Pasirinktas įrenginys nerastas
+ Pakeisti pompoje vv/d režimą į vv/val
+ DanaR Korean
+ DanaR
+ Pompos valdiklis pakoreguotas
+ DanaRv2
+ Išjungti pompos EasyUI režimą
+ Nepavyko nustatyti bazės profilio
+ Bluetooth statusas
+ Pompos AIO
+ Bazės žingsnis
+ Boluso žingsnis
+ Programinė įranga
+ Dana pompos nustatymai
+ 12h
+ 24h
+ Įjungti
+ Išjungti
+ DanaR Bluetooth įrenginys
+ Pompos slaptažodis (tik v1)
+ Pompos slaptažodis
+ Naudoti ištęstinį bolusą >200%%
+ Rodyti ištęstinį boliusą kaip %%
+ Boluso greitis
+ Pasirinkta pompa
+ Įrašyti rezervuaro keitimą
+ Įtraukti į terapijos skiltį įvykį „Insulino pakeitimas“, jei jis aptinkamas istorijoje
+ Įrašyti kaniulės pakeitimą
+ Įtraukti į terapijos skiltį įvykį „Kaniulės pakeitimas“, jei jis aptinkamas istorijoje
+ PIN1
+ PIN2
+ Paspauskite pompos mygtuką OK\n ir įveskite 2 rodomus skaičius\nĮjunkite pompos ekraną spausdami minuso mygtuką, kol baigsite įvesti kodą.
+ 1: (12 skaitmenų)
+ 2: (8 skaitmenys)
+
diff --git a/dana/src/main/res/values-nl-rNL/strings.xml b/dana/src/main/res/values-nl-rNL/strings.xml
new file mode 100644
index 0000000000..ac4438bf96
--- /dev/null
+++ b/dana/src/main/res/values-nl-rNL/strings.xml
@@ -0,0 +1,122 @@
+
+
+ Aan het koppelen
+ Nog geen apparaat gevonden
+ Koppeling geslaagd
+ Koppeling verlopen
+ Wachten op koppelen van de pomp
+ DanaRS
+ Dana
+ Pomp integratie voor DANA Diabecare RS pompen
+ Max bolus overschrijding
+ Opdracht fout
+ Snelheid fout
+ Insuline limiet overschrijding
+ Gevraagd: %1$.2fE Toegediend: %2$.2fE Error code: %3$s
+ Waarde niet correct ingesteld
+ Zet de basale stapgrootte op 0,01 E/uur
+ Reset pomp koppeling?
+ %1$s\nModel: %2$02X\nProtocol: %3$02X\nCode: %4$02X
+ Gebeurtenis wordt uitgevoerd
+ Activeer vertraagde bolussen op de pomp
+ Toegediend
+ Gestopt
+ Niet ondersteunde pomp firmware
+ Pomp storing
+ Batterij bijna leeg
+ Toedienen van minder dan vooringestelde basaal
+ Pomp uitschakelen
+ Pomp Batterij Leeg
+ Afsluiting
+ Reservoir leeg
+ Controleer aandrijfstang
+ Max basaal
+ Max per dag
+ Bloed glucose meting alarm
+ Resterende insuline hoeveelheid
+ Gemiste bolus
+ Ongeldige koppelingsinformatie. Nieuwe koppelingspoging wordt uitgevoerd
+ Opvragen pomp status
+ Vertraagde bolus status ophalen
+ Bolus status ophalen
+ Ophalen van tijdelijke basaal status
+ Pomp instellingen ophalen
+ Pomp tijd ophalen
+ Groot tijdsverschil
+ Groot tijdsverschil:\nDe tijd in de pomp wijkt meer dan 1,5 uur af.\nStel de tijd handmatig in op de pomp en zorg ervoor dat het uitlezen van de geschiedenis van de pomp geen onverwacht gedrag veroorzaakt.\nIndien mogelijk verwijder de geschiedenis uit de pomp pomp voor het wijzigen van de tijd of schakel de Closed Loop uit voor één DIA na de laatste verkeerde invoer van de geschiedenis, maar vanaf nu minstens één DIA.
+ Aub de pomp koppelen met je telefoon!
+ Insuline daglimiet bereikt
+ Bolus toediening gestart
+ Wachten op complete bolus toediening. Resterend %1$d sec.
+ Stoppen van tijdelijk basaal
+ Instellen van vertraagde bolus
+ Stoppen van vertraagde bolus
+ Bijwerken basaal profiel
+ Instellen tijdelijk basaal
+ Wachten op tijdsynchronisatie (%1$d sec)
+ Verkeerd wachtwoord
+ Verkeerd pomp wachtwoord!
+ Alarmen
+ Basale uren
+ Bolussen
+ Koolhydraten
+ Dagtotaal insuline
+ Storing
+ Glucose
+ Reservoir vullen
+ Onderbreken
+ Vullen
+ Gebruikersopties
+ Tijdnotatie
+ Scroll-functie
+ Geef een \'piep\' als op een knop gedrukt wordt
+ Alarm
+ Geluid
+ Trillen
+ Beide
+ LCD-aan tijd [sec.]
+ Achtergrondverlichting-aan tijd [sec.]
+ Glucose eenheden
+ Afsluiten [uren]
+ Laag reservoir (Eenheden)
+ Opties op de pomp opslaan
+ Pomp integratie voor DANA Diabecare R pompen
+ Pomp integratie voor Koreaanse DANA Diabecare R pompen
+ Pomp integratie voor DANA Diabecare R pompen met geupgrade firmware
+ DANA
+ Geen bluetooth adapter gevonden
+ Geselecteerd toestel niet gevonden
+ Wijzig de modus E/dag naar E/uur op de pomp
+ DanaR Koreaans
+ DanaR
+ Pomp driver gecorrigeerd
+ DanaRv2
+ EasyUI modus in pomp deactiveren
+ Instellen van basaal profiel mislukt
+ Bluetooh status
+ Pomp IOB
+ Basaal Stap
+ Bolus Stap
+ Firmware
+ Dana pomp instellingen
+ 12u
+ 24u
+ Aan
+ Uit
+ DanaR Bluetooth apparaat
+ Pomp wachtwoord (alleen v1)
+ Pomp wachtwoord
+ Gebruik vertraagde bolussen voor >200%%
+ Geef vertraagde bolus weer in %%
+ Bolus snelheid
+ Geselecteerde pomp
+ Reservoir wissel noteren
+ Voeg \"Reservoir wissel\" gebeurtenis toe aan de careportal als deze in pompgeschiedenis wordt uitgelezen
+ Infuus wissel noteren
+ Voeg \"Infuuswissel\" gebeurtenis toe aan de careportal als deze in pompgeschiedenis wordt uitgelezen
+ PIN1
+ PIN2
+ Druk op OK op de pomp\nen voer 2 weergegeven nummers in.\nHoud het scherm vd pomp actief door de min-knop op de pomp ingedrukt te houden totdat je klaar bent met het invoeren van de codes.
+ 1: (12 cijfers)
+ 2: (8 cijfers)
+
diff --git a/dana/src/main/res/values-pl-rPL/strings.xml b/dana/src/main/res/values-pl-rPL/strings.xml
new file mode 100644
index 0000000000..9f84c6cd35
--- /dev/null
+++ b/dana/src/main/res/values-pl-rPL/strings.xml
@@ -0,0 +1,122 @@
+
+
+ Parowanie
+ Urządzenie nie zostało znalezione do tej pory
+ Parowanie OK
+ Przekroczono limit czasu parowania
+ Oczekiwanie na pompę na sparowanie
+ DanaRS
+ Dana
+ Integracja z pompą DANA RS Diabecare
+ Przekroczenie ograniczenia maks. bolusa
+ Błąd polecenia
+ Błąd prędkości
+ Przekroczono limit insuliny
+ Zadano: %1$.2fU Dostarczono: %2$.2fU Kod błędu: %3$s
+ Wartość ustawiona nieprawidłowo
+ Ustaw krok bazy na 0.01 U/h
+ Zresetować sparowanie?
+ %1$s\nModel: %2$02X\nProtokół: %3$02X\nKod: %4$02X
+ Przetwarzanie zdarzenia
+ Uaktywnij bolusy przedłużone w pompie
+ Dostarczone
+ Zatrzymane
+ Nieobsługiwane oprogramowanie pompy
+ Błąd pompy
+ Niski stan baterii
+ Dostarczanie mniej niż wstępnie ustawiona baza
+ Wyłączenie pompy
+ Bateria pompy rozładowana
+ Zatkanie
+ Pusty zasobnik
+ Sprawdź śrubę tłoka
+ Max dawka bazowa
+ Limit dzienny
+ Alarm pomiaru poziomu cukru
+ Pozostała ilość insuliny
+ Pominięty bolus
+ Niepoprawne informacje o parowaniu. Żądanie nowego parowania
+ Uzyskiwanie statusu pompy
+ Status otrzymywania bolusa przedłużonego
+ Status otrzymywania bolusa
+ Status otrzymywania tymczasowej bazy
+ Otrzymywanie ustawień pompy
+ Otrzymywanie czasu pompy
+ Duża Różnica Czasu
+ Duża różnica czasu:\nCzas w pompie jest wyłączony przez więcej niż 1,5 godziny.\n. Ustaw czas ręcznie na pompie i upewnij się, że odczyt historii pompy nie powoduje błędu.\nJeśli to możliwe, usuń historię z pompy przed zmianą czasu lub wyłącz pętlę zamkniętą do jednego DIA po ostatnim nieprawidłowym wpisie dziennika, ale co najmniej jeden DIA od teraz.
+ Proszę sparować swoją pompę z telefonem!
+ Zbliżam się do dziennego limitu insuliny
+ Rozpoczynam podawanie bolusa
+ Oczekuję na zakończenie bolusa. Pozostało %1$d sec.
+ Zatrzymywanie bazy tymczasowej
+ Ustawianie bolusa przedłużonego
+ Zatrzymywanie bolusa przedłużonego
+ Uaktualnianie dawek bazowych
+ Ustawianie bazy tymczasowej
+ Oczekiwanie na synchronizację czasu (%1$d sec)
+ Złe hasło
+ Błędne hasło pompy!
+ Alarmy
+ Godziny Bazy
+ Bolusy
+ Węglowodany
+ Insulina dzienna
+ Błędy
+ Glukoza
+ Napełnij
+ Wstrzymaj
+ Wypełnianie
+ Ustawienia użytkownika
+ Format wyświetlanego czasu
+ Przycisk przewijania
+ Dźwięk po przyciśnięciu przycisku
+ Alarm
+ Dźwięk
+ Wibracja
+ Obie opcje
+ LCD na czas [sekund]
+ Podświetlenie na czas [sekund]
+ Jednostki glukozy
+ Wyłączenie [godzin]
+ Niska zawartość zbiornika [Jednostki]
+ Zapisz ustawienia w pompie
+ Integracja z pompą DANA R Diabecare
+ Integracja z pompą DANA R Diabetes, wersja koreańska
+ Integracja z pompą DANA R Diabecare z oprogramowaniem v2
+ DANA
+ Nie odnaleziono urządzenia bluetooth
+ Nie odnaleziono wybranego urządzenia
+ Zmień tryb z U/d na U/h w pompie
+ DanaR wersja Koreańska
+ DanaR
+ Poprawiono sterownik pompy
+ DanaRv2
+ Wyłącz tryb EasyUI w pompie
+ Ustawienie profilu bazy nie powiodło się
+ Status Bluetooth
+ IOB w pompie
+ Krok bazy
+ Krok bolusa
+ Firmware
+ Ustawienia pompy Dana
+ 12h
+ 24h
+ Włącz
+ Wyłącz
+ Urządzenie Bluetooth DanaR
+ Hasło pompy (tylko v1)
+ Hasło pompy
+ Używaj przedłużonych bolusów dla >200%%
+ Wizualizacja bolusa przedłużonego jako %%
+ Szybkość podawania bolusa
+ Wybrana pompa
+ Zapisz zmianę zbiorniczka
+ Dodaj zdarzenie \"Zmiana zasobnika insuliny\" do portalu opieki Nightscout, gdy wykryto je w historii pompy
+ Zapisz zmianę wkłucia
+ Dodaj zdarzenie \"Zmiana miejsca wkłucia\" do portalu opieki Nightscout, gdy wykryto je w historii pompy
+ PIN1
+ PIN2
+ Naciśnij OK na pompie\ni wpisz 2 wyświetlone numery\nUtrzymuj wyświetlacz pompy włączony poprzez naciskanie przycisku minus, aż do momentu zakończenia przepisywania kodu.
+ 1: (12 cyfr)
+ 2: (8 cyfr)
+
diff --git a/dana/src/main/res/values-pt-rBR/strings.xml b/dana/src/main/res/values-pt-rBR/strings.xml
new file mode 100644
index 0000000000..756ea27a45
--- /dev/null
+++ b/dana/src/main/res/values-pt-rBR/strings.xml
@@ -0,0 +1,102 @@
+
+
+ A emparelhar
+ Nenhum dispositivo encontrado até agora
+ Emparelhamento OK
+ Tempo emparelhamento excedido
+ Aguardando emparelhamento na bomba
+ DanaRS
+ Dana
+ Integração para bombas DANA Diabecare RS
+ Transgressão Bólus máx
+ Erro no comando
+ Erro velocidade
+ Transgressão limite insulina
+ Pedido: %1$.2fU Entregue: %2$.2fU Código Erro: %3$s
+ Valor não definido corretamente
+ Coloque o incremento da basal em 0.01 U/h
+ Processando ação
+ Habilitar bolus estendido na bomba
+ Entregue
+ Parado
+ Firmware bomba não suportado
+ Erro da Bomba
+ Bateria fraca
+ Bomba desligada
+ Bateria da Bomba Descarregada
+ Oclusão
+ Reservatório vazio
+ Alerta medição da glicemia
+ Nível de insulina restante
+ A obter estado bomba
+ Procurando o status do bolus estendido
+ A obter estado bólus
+ A obter o status da basal temporária
+ A obter as definições da bomba
+ A obter hora bomba
+ Grande diferença Horária
+ Grande diferença horária:\n A diferença de hora para a bomba é superior a 1.5h.\nPor favor ajuste manualmente a hora na bomba e certifique-se que a leitura do histórico da bomba não provoca problemas.\nSe possível apague o histórico da bomba antes de modificar a hora ou desabilite o loop durante toda a duração de ação da insulina DIA depois da ultima entrada no histórico da bomba ou mais um DIA desde o momento da correção, qual delas seja a que mantenha o loop aberto durante mais tempo.
+ Emparelhe a sua bomba com o seu telefone!
+ Aproximação do limite diario de insulina
+ A iniciar administração de bolus
+ A aguardar o final do bolus. Restam %1$d sec.
+ A parar basal temp
+ Configurando bolus prolongado
+ Parando bolus prolongado
+ Atualizar valores das basais
+ Definindo basal temp
+ À espera da sincronização da hora (%1$d sec)
+ Senha incorrecta
+ Senha da bomba incorrecta!
+ Alarmes
+ Horas de Basal
+ Bolus
+ Carboidratos
+ Insulina diária
+ Erros
+ Glicose
+ Reabastecimento
+ Suspender
+ Purge/Encha
+ Opções do utilizador
+ Formato hora
+ Botão rolamento
+ Sinal ao pressionar botão
+ Alarme
+ Som
+ Vibrar
+ Ambos
+ LCD na hora [segundos]
+ Luz de fundo na hora [segundos]
+ Unidades de Glucose
+ Desligar [horas]
+ Reservatório baixo [Unidades]
+ Gravar opções para a bomba
+ Integração para bombas DANA Diabecare R
+ Integração para bombas DANA Diabecare R Coreanas
+ Integração para as bombas DANA Diabecare R com firmware atualizado
+ DANA
+ Nenhum dispositivo bluetooth encontrado
+ Dispositivo selecionado não foi encontrado
+ Mudar de modo U/d para U/h na bomba
+ DanaR Coreana
+ DanaR
+ Controlador bomba corrigido
+ DanaRv2
+ Desativar modo EasyUI na bomba
+ Não foi possivel configurar o perfil de basal
+ Estado Bluetooth
+ IOB Bomba
+ Valor da Basal
+ Incremento de bolus
+ Firmware
+ Configurações da bomba Dana
+ Ligado
+ Desligado
+ Dispositivo Bluetooth DanaR
+ Senha da bomba
+ Usar bólus prolongado de >200%%
+ Visualizar bólus prolongado como %%
+ Velocidade Bólus
+ Bomba seleccionada
+
diff --git a/dana/src/main/res/values-pt-rPT/strings.xml b/dana/src/main/res/values-pt-rPT/strings.xml
new file mode 100644
index 0000000000..2a9b392910
--- /dev/null
+++ b/dana/src/main/res/values-pt-rPT/strings.xml
@@ -0,0 +1,122 @@
+
+
+ A Emparelhar
+ Nenhum dispositivo encontrado até agora
+ Emparelhamento OK
+ Tempo emparelhamento excedido
+ Aguardando emparelhamento na bomba
+ DanaRS
+ Dana
+ Integração para bombas DANA Diabecare RS
+ Transgressão Bólus máx
+ Erro no comando
+ Erro velocidade
+ Transgressão limite insulina
+ Pedido: %1$.2fU Administrado: %2$.2fU Código Erro: %3$s
+ Valor não definido corretamente
+ Coloque o incremento da basal em 0.01 U/h
+ Repor as informações de emparelhamento?
+ %1$s\nModelo: %2$02X\nProtocolo: %3$02X\nCódigo: %4$02X
+ A processar acção
+ Habilitar bólus prolongado na bomba
+ Administrado
+ Parado
+ Firmware bomba não suportado
+ Erro Bomba
+ Bateria fraca
+ A administrar menos que a taxa de base predefinida
+ Encerrar Bomba
+ Bateria da Bomba Descarregada
+ Oclusão
+ Reservatório vazio
+ Verificar Eixo
+ Máx Basal
+ Máx Diário
+ Alerta medição da glicemia
+ Nível de insulina restante
+ Bólus não administrado
+ Informações de emparelhamento inválidas. A solicitar novo emparelhamento
+ A obter estado bomba
+ A procurar o estado do bólus prolongado
+ A obter estado bólus
+ A obter o status da basal temporária
+ A obter as definições da bomba
+ A obter hora bomba
+ Grande diferença Horária
+ Grande diferença horária:\n A diferença de hora para a bomba é superior a 1.5h.\nPor favor ajuste manualmente a hora na bomba e certifique-se que a leitura do histórico da bomba não provoca problemas.\nSe possível apague o histórico da bomba antes de modificar a hora ou desabilite o loop durante toda a duração de acção da insulina (DIA) depois da ultima entrada no histórico da bomba ou mais um DIA desde o momento da correcção, qual delas seja a que mantenha o loop aberto durante mais tempo.
+ Emparelhe a sua bomba com o seu telefone!
+ Aproximação do limite diário de insulina
+ A iniciar administração de bólus
+ A aguardar o final do bolus. Restam %1$d seg.
+ A parar basal temp
+ A configurar bólus prolongado
+ A parar bólus prolongado
+ A actualizar taxas das basais
+ Definindo basal temp
+ À espera da sincronização da hora (%1$d sec)
+ Senha incorrecta
+ Senha da bomba incorrecta!
+ Alarmes
+ Horas de Basal
+ Bólus
+ Hidratos de Carbono
+ Insulina diária
+ Erros
+ Glicose
+ Encher
+ Suspender
+ Purgar
+ Opções do utilizador
+ Formato hora
+ Botão rolamento
+ Sinal ao pressionar botão
+ Alarme
+ Som
+ Vibrar
+ Ambos
+ LCD na hora [segundos]
+ Luz de fundo na hora [segundos]
+ Unidades de Glicose
+ Desligar [horas]
+ Reservatório baixo [Unidades]
+ Gravar opções para a bomba
+ Integração para bombas DANA Diabecare R
+ Integração para bombas DANA Diabecare R Coreanas
+ Integração para as bombas DANA Diabecare R com firmware actualizado
+ DANA
+ Nenhum dispositivo bluetooth encontrado
+ Dispositivo seleccionado não foi encontrado
+ Mudar de modo U/d para U/h na bomba
+ DanaR Coreana
+ DanaR
+ Controlador bomba corrigido
+ DanaRv2
+ Desactivar modo EasyUI na bomba
+ Não foi possível configurar o perfil de basal
+ Estado Bluetooth
+ IOB Bomba
+ Incremento Basal
+ Incremento Bólus
+ Firmware
+ Configurações da bomba Dana
+ 12h
+ 24h
+ Ligado
+ Desligado
+ Dispositivo Bluetooth DanaR
+ Senha da bomba (apenas v1)
+ Senha da bomba
+ Usar bólus prolongado por >200%%
+ Visualizar bólus prolongado como %%
+ Velocidade Bólus
+ Bomba seleccionada
+ Registar mudança de reservatório
+ Adicionar evento \"Mudança de Insulina\" ao careportal quando detectado no histórico
+ Registar mudança de canula
+ Adicionar evento \"Mudança Local Bomba\" ao careportal, quando detectado no histórico
+ PIN1
+ PIN2
+ Pressione OK na bomba\ne digite os 2 números mostrados\nManter o visor da bomba ligado, pressionando o botão menos até que você termine a digitação do código.
+ 1: (12 dígitos)
+ 2: (8 dígitos)
+
diff --git a/dana/src/main/res/values-ro-rRO/strings.xml b/dana/src/main/res/values-ro-rRO/strings.xml
new file mode 100644
index 0000000000..c75c37a78f
--- /dev/null
+++ b/dana/src/main/res/values-ro-rRO/strings.xml
@@ -0,0 +1,122 @@
+
+
+ Împerechere
+ Niciun dispozitiv găsit până acum
+ Conectare OK
+ Conectare nereușită
+ Se așteaptă conectarea la pompă
+ DanaRS
+ Dana
+ Integrare cu pompele DANA Diabcare RS
+ Încălcare a valorii maxime a bolusului
+ Eroare de comandă
+ Eroare de viteză
+ Încălcare a limitării cantităţii de insulină
+ Solicitat: %1$.2fU Livrat: %2$.2fU Cod eroare: %3$s
+ Valoare setată incorect
+ Setare pas bazală la 0.01 U/h
+ Resetați informațiile de împerechere?
+ %1$s\nModel: %2$02X\nProtocol: %3$02X\nCod: %4$02X
+ Se procesează activitatea
+ Activează bolusuri extinse în pompă
+ Livrat
+ Oprit
+ Soft pompă incompatibil
+ Eroare a pompei
+ Baterie aproape descărcată
+ Se livrează mai puțin decât rata bazală curentă
+ Oprire pompă
+ Bateria pompei este descărcată
+ Ocluzie
+ Rezervor gol
+ Verificați canula
+ Maxim bazală
+ Maximum zilnic
+ Alertă măsurare glicemie
+ Nivel insulină disponibilă
+ Bolus pierdut
+ Informații de împerechere invalide. Cerere de împerechere nouă
+ Se primește starea pompei
+ Se citește starea bolusului extins
+ Se citește starea bolusului
+ Se citește starea bazalei temporare
+ Se citesc setările pompei
+ Se citește ora pompei
+ Diferență majoră de timp
+ Diferență majoră de timp:\nOra din pompă este diferită cu mai multe de 1.5 ore.\nPotriviți manual ora din pompă și asigurați-vă că sincronizarea cu datele istorice din pompă nu va produce un comportament neașteptat.\nDacă este posibil, ștergeți istoricul pompei înaintea modificării orei și inactivați bucla închisă pentru un interval DIA după ultima intrare istorică cu timp greșit, dar minim o DIA de acum încolo.
+ Vă rog să împerecheați pompa cu telefonul!
+ Se apropie limita zilnică de insulină
+ Pornire livrare bolus
+ Se așteaptă terminarea bolusării. Mai sunt %1$d secunde.
+ Se oprește bazala temporară
+ Se pornește bolusul extins
+ Se oprește bolusul extins
+ Se actualizează ratele bazale
+ Se setează bazala temporară
+ Se așteaptă o sincronizare a timpului (%1$d s)
+ Parolă greșită
+ Parola pompei greșită!
+ Alarme
+ Ore bazale
+ Bolusuri
+ Carbohidrați
+ Insulină zilnică
+ Erori
+ Glicemie
+ Reumplere
+ Suspendare
+ Amorsare
+ Opțiunile utilizatorului
+ Formatul de afișare a timpului
+ Buton derulare
+ Sunet la apăsarea butonului
+ Alarmă
+ Sunet
+ Vibrație
+ Ambele
+ Timp stingere ecran [seconds]
+ Timp lumină de fundal [seconds]
+ Unități glicemie
+ Oprire [hours]
+ Rezervor aproape gol [Units]
+ Salvați opțiunile în pompă
+ Integrare cu pompele DANA Diabcare R
+ Integrare cu pompele DANA Diabcare R coreene
+ Integrare cu pompele DANA Diabcare R cu firmware upgradat
+ DANA
+ Nu s-a găsit niciun adaptor bluetooth
+ Dispozitivul selectat nu a fost găsit
+ Schimbă din modul U/z în U/h în pompă
+ DanaR din Coreea
+ DanaR
+ Driver pompă corectat
+ DanaRv2
+ Dezactivează modul EasyUI în pompă
+ Setarea profilului bazalei a eșuat
+ Status Bluetooth
+ IOB din pompă
+ Pas bazală
+ Pas bolus
+ Firmware
+ Setări pompă Dana
+ 12h
+ 24h
+ Pornit
+ Oprit
+ Dispozitive bluetooth DanaR
+ Parolă pompă (numai versiunea 1)
+ Parola pompei
+ Folosiți bolusuri extinse pentru >200%%
+ Afișati bolusul extins ca %%
+ Viteză bolusare
+ Pompa selectată
+ Înregistrează schimbarea rezervorului
+ Adăugare eveniment \"Schimbare insulină\" în NS/Careportal când este detectat în istoric
+ Înregistrează schimbarea canulei
+ Adăugare eveniment \"Schimbare set\" în portal de îngrijire când este detectat în istoric
+ PIN1
+ PIN2
+ Apăsaţi OK pe pompă\nşi introduceţi cele 2 numere afişate\nPăstraţi ecranul pompei ACTIV apăsând butonul minus până când terminați introducerea codului.
+ 1: (12 cifre)
+ 2: (8 cifre)
+
diff --git a/dana/src/main/res/values-ru-rRU/strings.xml b/dana/src/main/res/values-ru-rRU/strings.xml
new file mode 100644
index 0000000000..b62cc03edd
--- /dev/null
+++ b/dana/src/main/res/values-ru-rRU/strings.xml
@@ -0,0 +1,122 @@
+
+
+ Сопряжение
+ Устройства пока не найдены
+ Соединение OK
+ Истекло время ожидания соединения
+ Ожидание соединения на помпе
+ DanaRS
+ Dana
+ Интеграция с помпой DANA Diabetcare RS
+ Нарушение макс болюса
+ Ошибка в команде
+ Ошибка в скорости
+ Нарушение лимита инсулина
+ Запрошено: %1$.2f ед. Подано: %2$.2f ед. Код ошибки: %3$s
+ величина не задана должным образом
+ Установить шаг базала 0.01 ед/ч
+ Сбросить информацию о сопряжении?
+ %1$s\nМодель: %2$02X\nПротокол: %3$02X\nКод: %4$02X
+ Обработка события
+ Активировать пролонгированные болюсы на помпе
+ Болюс подан
+ остановлено
+ Неподдерживаемая версия прошивки помпы
+ ошибка помпы
+ низкий заряд батареи
+ Подается меньше предварительно установленной базальной скорости
+ Выключение помпы
+ батарея помпы разряжена
+ закупорка
+ Резервуар пуст
+ Проверьте шток помпы
+ Макс. шаг базала
+ Максимум в день
+ Предупреждение при измерении уровня СК
+ Уровень оставшегося инсулина
+ Недоставленный болюс
+ Неверная информация о соединении. Запрос нового сопряжения
+ получение статуса помпы
+ Получение статуса пролонгированного болюса
+ Получение статуса болюса
+ Получение статуса временного базала
+ Получение настроек помпы
+ Получение времени помпы
+ Большая разница во времени
+ Большая разница во времени: \n Время в помпе расходится более чем 1,5 ч. \n. Пожалуйста установите время на помпе вручную и убедитесь, что чтение истории помпы не вызывает неожиданное поведение.\n если возможно, удалите историю из помпы перед изменением времени или отключите замкнутый цикл на один DIA после последней неверной записи в журнале, как минимум на один DIA с настоящего момента.
+ Выполните сопряжение помпы с телефоном!
+ приближается суточный лимит инсулина
+ Начало подачи болюса
+ Ожидание окончания болюса. Оставшиеся %1$d сек.
+ остановка врем базала
+ Настройка пролонгированного болюса
+ Остановка пролонгированного болюса
+ обновление значений базала
+ установка врем базала
+ Ожидание синхронизации времени (%1$d сек)
+ неверный пароль
+ неверный пароль помпы
+ оповещения об опасности
+ почасовые базалы
+ болюсы
+ углеводы
+ суточный инсулин
+ ошибки
+ гликемия
+ Перезаправка
+ Останов
+ Заполнить перед работой
+ Параметры пользователя
+ Формат отображения времени
+ Кнопка прокрутки
+ Звуковой сигнал при нажатии кнопки
+ Оповещение об опасности
+ Звуковой сигнал
+ Вибросигнал
+ Оба
+ Время LCD экрана [seconds]
+ Время подсветки [seconds]
+ Единиц глюкозы
+ Выключение через [hours]
+ В резервуаре мало инсулина [Units]
+ Сохранить параметры в помпе
+ Интеграция с помпой DANA Diabetcare R
+ Интеграция с отечественной помпой DANA Diabetcare R
+ Интеграция с помпой Dana Diabetcare R с обновленной прошивкой
+ DANA
+ адаптер блутус не найден
+ выбранное устройство не найдено
+ замена режима с ед/дн на ед/ч на помпе
+ DanaR Корея
+ DanaR
+ Драйвер помпы откорректирован
+ DanaRv2
+ отключить режим упрощенного интерфейса EasyUI в помпе
+ настройка базального профиля не состоялась
+ статус блутус
+ активный инсулин на помпе
+ шаг базала
+ шаг болюса
+ прошивка
+ Настройки помпы Dana
+ 12 ч
+ 24 ч
+ Вкл.
+ Выкл.
+ устройство блутус danaR
+ Пароль для помпы (только v1)
+ пароль помпы
+ Для величин >200%% пользуйтесь пролонгированным болюсом
+ Показать пролонгированный болюс в %%
+ Скорость подачи болюса
+ Выбранная помпа
+ Отслеживать замену резервуара
+ Добавить событие \"Замена инсулина\" в портал терапииl при обнаружении в хронологии
+ Отслеживать замену катетера помпы в журнале
+ Добавить событие \"Замена инсулина\" в портал терапииl при обнаружении в хронологии
+ PIN1
+ PIN2
+ Нажмите OK на помпе\nи введите 2 отображаемых номера\nДержите экран помпы включенным нажимая кнопку минус, пока не закончите ввод кода.
+ 1: (12 цифр)
+ 2: (8 цифр)
+
diff --git a/dana/src/main/res/values-sk-rSK/strings.xml b/dana/src/main/res/values-sk-rSK/strings.xml
new file mode 100644
index 0000000000..9e6e2cfd8e
--- /dev/null
+++ b/dana/src/main/res/values-sk-rSK/strings.xml
@@ -0,0 +1,122 @@
+
+
+ Párovanie
+ Zatiaľ nenájdené žiadne zariadenie
+ Spárované
+ Vypršal časový limit pre párovanie
+ Čakanie na párovanie na pumpe
+ DanaRS
+ Dana
+ Ovládač pumpy pre Dana Diabecare RS
+ Prekročený maximálny bolus
+ Chyba príkazu
+ Chyba rýchlosti
+ Prekročený limit inzulínu
+ Požadované: %1$.2fJI Podané: %2$.2fJI Chyba: %3$s
+ Hodnota nenastavená správne
+ Nastavte bazálny krok 0.01JI/h
+ Reset informácií o párovaní?
+ %1$s\nModel: %2$02X\nProtokol: %3$02X\nKód: %4$02X
+ Spracúvam udalosť
+ Aktivovať v pumpe predĺžené bolusy
+ Podané
+ Zastavené
+ Nepodporovaný firmware v pumpe
+ Chyba pumpy
+ Nízky stav batérie
+ Dodávám menej, ako je prednastavený bazál
+ Vypnutie pumpy
+ Batéria v pumpe vybitá
+ Oklúzia
+ Prázdny zásobník
+ Skontrolovať hriadeľ
+ Max. bazál
+ Max. denný
+ Výstraha merania glykémie
+ Zostávajúci inzulín
+ Chýbajúci bolus
+ Neplatné informácie o párovaní. Požiadavka na nové párovanie
+ Načítavam stav pumpy
+ Získavam stav predĺžených bolusov
+ Získavam stav bolusov
+ Získavam stav dočasných bazálov
+ Získavam nastavenia pumpy
+ Získavam čas z pumpy
+ Veľký rozdiel v čase
+ Veľký rozdiel v čase:\nČas v pumpe sa líši minimálne o 1,5 h.\nProsím upravte čas v pumpe manuálne a vymažte históriu pumpy.\nPokiaľ je to potrebné, prípadne pozastavte uzavretý okruh aspoň na \"DIA\" hodín.
+ Prosím spárujte pumpu s telefónom!
+ Blíži sa denný limit inzulínu
+ Spúšťam podávanie bolusu
+ Čakanie na koniec bolusu. Zostáva %1$d sek.
+ Zastavujem dočasný bazál
+ Nastavujem predĺžený bolus
+ Zastavujem predĺžený bolus
+ Aktualizujem bazály
+ Nastavujem dočasný bazál
+ Čakanie na synchronizáciu času (%1$d s)
+ Nesprávne heslo
+ Nesprávne heslo do pumpy!
+ Alarmy
+ Hodinové bazály
+ Bolusy
+ Sacharidy
+ Denný inzulín
+ Chyby
+ Glykémia
+ Plnenie
+ Pozastavenia
+ Plnenie
+ Užívateľské nastavenia
+ Formát času
+ Posun pri stlačení tlačidla
+ Zvuk pri stlačení tlačidla
+ Alarm
+ Zvuk
+ Vibrácie
+ Oboje
+ Čas pred vypnutím displeja [sekundy]
+ Podsvietenie [sekundy]
+ Jednotky
+ Vypnutie [hodiny]
+ Nízky stav zásobníka [Jednotky]
+ Uložiť do pumpy
+ Ovládač pumpy pre Dana Diabecare R
+ Ovládač pumpy pre kórejskú verziu Dana Diabecare R
+ Ovládač pumpy pre Dana Diabecare R s aktualizovaným firmvérom
+ DANA
+ Bluetooth adaptér nenájdený
+ Vybrané zariadenie nenájdené
+ Zmeniť v pumpe režim z JI/d na JI/h
+ Kórejská DanaR
+ DanaR
+ Ovládač pumpy opravený
+ DanaRv2
+ Deaktivovať v pumpe režim EasyUI
+ Nastavenie bazálneho profilu zlyhalo
+ Stav Bluetooth
+ IOB z pumpy
+ Krok bazálu
+ Krok bolusu
+ Firmware
+ Nastavenie pumpy Dana
+ 12h
+ 24h
+ ZAP
+ VYP
+ DanaR Bluetooth zariadenie
+ Heslo pumpy (iba v1)
+ Heslo do pumpy
+ Použiť predĺžené bolusy pre >200%%
+ Zobrazovať predĺžený bolus v %%
+ Rýchlosť bolusu
+ Vybraná pumpa
+ Zaznamenať výmenu zásobníka
+ Pridať udalosť \"Výmena inzulínu\" do portálu starostlivosti, pokiaľ je zistená v histórii
+ Zaznamenať výmenu kanyly
+ Pridať udalosť \"Výmena setu\" do portálu starostlivosti, pokiaľ je zistená v histórii
+ PIN1
+ PIN2
+ Stlačte OK na pumpe\na zadajte 2 zobrazené čísla\nUdržujte display na pumpe zapnutý stlačením tlačítka mínus, kým nedokončíte zadanie kódu.
+ 1: (12 číslic)
+ 2: (8 číslic)
+
diff --git a/dana/src/main/res/values-sl-rSI/strings.xml b/dana/src/main/res/values-sl-rSI/strings.xml
new file mode 100644
index 0000000000..3ea04e700d
--- /dev/null
+++ b/dana/src/main/res/values-sl-rSI/strings.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/dana/src/main/res/values-sv-rSE/strings.xml b/dana/src/main/res/values-sv-rSE/strings.xml
new file mode 100644
index 0000000000..94bc25e158
--- /dev/null
+++ b/dana/src/main/res/values-sv-rSE/strings.xml
@@ -0,0 +1,123 @@
+
+
+ Parkoppling
+ Ingen enhet funnen ännu
+ Parkopplingen klar
+ Parkopplingen tog för lång tid
+ Väntar på parkoppling med pump
+ Dana RS
+ Dana
+ Pumpintegration för DANA Diabecare RS
+ Max bolus nådd
+ Kommandofel
+ Felaktig hastighet
+ Insulingräns nådd
+ Angivet: %1$.2f enheter. Levererat: %2$.2f enheter. Felkod: %3$s
+ Misslyckades med inställning
+ Sätt basalsteg till 0.01 enheter per timme
+ Återställ parkopplingen?
+ %1$s\nModell: %2$02X\nProtokoll: %3$02X\nKod: %4$02X
+ Behandlar
+ Aktivera förlängd bolus i pumpen
+ Levererad
+ Stoppad
+ Pumpens firmware stöds inte
+ Pumpfel
+ Låg batterinivå
+ Levererar mindre än inställd basaldos
+ Pump avstängd
+ Pumpbatteri urladdat
+ Ocklusion
+ Tom reservoar
+ Kontrollera axel
+ Max basal
+ Max daglig
+ Varning om blodsockermätning
+ Återstående mängd insulin
+ Missad bolus
+ Ogiltig parkopplingsinformation. Begär ny parkoppling
+ Hämtar pumpstatus
+ Hämtar status för förlängd bolus
+ Hämtar status för bolus
+ Hämtar status för temp basal
+ Hämtar pumpinställningar
+ Hämtar tid och datum i pumpen
+ Stor tidsskillnad
+ Stor tidsskillnad:\nTiden i pumpen skiljer mer än 1,5 timme.\nVänligen justera tiden manuellt på pumpen och se till att det går att läsa historiken från pumpen utan oväntat beteende.\nOm möjligt, töm historiken i pumpen innan tidsomställning alternativt stäng av loopen i minst DIA timmar efter den senaste felaktiga historikloggen, men minst DIA timmar från nu.
+ Vänligen parkoppla pumpen.
+ Maximal daglig dos snart nådd
+ Påbörjar bolus
+ Slutför bolus (%1$d sek)
+ Stoppar temp basal
+ Ställer in förlängd bolus
+ Stoppar förlängd bolus
+ Uppdaterar basaldoser
+ Ställer in temp basal
+ Väntar på tidssynkronisering (%1$d sek)
+ Fel lösenord
+ Fel lösenord för pump
+ Larm
+ Basaltimmar
+ Bolusar
+ Kolhydrater
+ Daglig insulinmängd
+ Fel
+ BG
+ Påfyllningar
+ Pauser
+ Förfyllningar
+ Användaralternativ
+ Format för tidsvisning
+ Knapprullning
+ Pip vid knapptryckning
+ Larm
+ Ljud
+ Vibration
+ Båda
+ LCD på, tid [sek]
+ Bakgrundsbelysning på, tid [sek]
+ Glukosenhet
+ Avstängning pump [tim]
+ Låg reservoar [Enheter]
+ Spara till pump
+ Pumpintegration för DANA Diabecare R
+ Pumpintegration för DANA Diabecare R, koreansk version
+ Pumpintegration för DANA Diabecare R med uppgraderad firmware
+ Dana
+ Ingen Bluetooth-adapter funnen
+ Vald enhet kan inte nås
+ Ändra inställningen från U/d till U/tim i pumpen
+ Dana R Korea
+ Dana R
+ Pumpdrivrutin justerad
+ Dana R v2
+ Inaktivera Easy UI-läget i pumpen
+ Lyckades inte sätta basalprofilen
+ Bluetoothstatus
+ Pumpens IOB
+ Basalsteg
+ Bolussteg
+ Firmwareversion
+ Dana R pumpinställningar
+ 12 tim
+ 24 tim
+ På
+ Av
+ Dana R Bluetooth Pump
+ Pumplösenord (endast v1)
+ Pumplösenord
+ Använd förlängd bolus för >200%% temp basal
+ Visa förlängd bolus som %%
+ Bolushastighet
+ Vald pump
+ Logga reservoarbyten
+ Logga reservoarbyte automatiskt när det upptäcks i historiken
+ Logga kanylbyten
+ Logga kanylbyte automatiskt när det upptäcks i historiken
+ PIN1
+ PIN2
+ Tryck på OK på pumpen och skriv in de två\nnycklarna som visas på pumpens skärm.\n
+\nFör att förhindra att skärmen släcks, tryck\npå minus (-) tills du skrivit in nycklarna.
+ 1: (12 tecken)
+ 2: (8 tecken)
+
diff --git a/dana/src/main/res/values-tr-rTR/strings.xml b/dana/src/main/res/values-tr-rTR/strings.xml
new file mode 100644
index 0000000000..3ea04e700d
--- /dev/null
+++ b/dana/src/main/res/values-tr-rTR/strings.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/dana/src/main/res/values-zh-rCN/strings.xml b/dana/src/main/res/values-zh-rCN/strings.xml
new file mode 100644
index 0000000000..3ea04e700d
--- /dev/null
+++ b/dana/src/main/res/values-zh-rCN/strings.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/dana/src/main/res/values/arrays.xml b/dana/src/main/res/values/arrays.xml
new file mode 100644
index 0000000000..dcff4dd285
--- /dev/null
+++ b/dana/src/main/res/values/arrays.xml
@@ -0,0 +1,15 @@
+
+
+
+
+ 12 s/U
+ 30 s/U
+ 60 s/U
+
+
+ 0
+ 1
+ 2
+
+
+
\ No newline at end of file
diff --git a/dana/src/main/res/values/strings.xml b/dana/src/main/res/values/strings.xml
new file mode 100644
index 0000000000..bf26707ffc
--- /dev/null
+++ b/dana/src/main/res/values/strings.xml
@@ -0,0 +1,136 @@
+
+
+ danars_address
+ danars_name
+ danar_password
+ danars_password
+ danars_bolusspeed
+ danars_pairing_key_
+ danars_v3_randompairing_key_
+ danars_v3_pairing_key_
+ danars_v3_randomsync_key_
+ rs_logcanulachange
+ rs_loginsulinchange
+ danar_bt_name
+
+ Pairing
+ No device found so far
+ Pairing OK
+ Pairing timed out
+ Waiting for pairing on pump
+ DanaRS
+ Dana
+ Pump integration for DANA Diabecare RS pumps
+ Max bolus violation
+ Command error
+ Speed error
+ Insulin limit violation
+ Asked: %1$.2fU Delivered: %2$.2fU Error code: %3$s
+ Value not set properly
+ Set basal step to 0.01 U/h
+ Reset pairing information?
+ %1$s\nModel: %2$02X\nProtocol: %3$02X\nCode: %4$02X
+ Processing event
+ Enable extended boluses on pump
+ Delivered
+ Stopped
+ Unsupported pump firmware
+ Pump Error
+ Low Battery
+ Delivering less than preset basal rate
+ Pump Shutdown
+ Pump Battery Discharged
+ Occlusion
+ Empty reservoir
+ Check shaft
+ Basal max
+ Daily max
+ Blood sugar measurement alert
+ Remaining insulin level
+ Missed bolus
+ Invalid pairing information. Requesting new pairing
+ Getting pump status
+ Getting extended bolus status
+ Getting bolus status
+ Getting temporary basal status
+ Getting pump settings
+ Getting pump time
+ Large Time Difference
+ Large time difference:\nTime in pump is off by more than 1.5 hours.\nPlease adjust the time manually on the pump and make sure that reading the history from the pump does not cause unexpected behaviour.\nIf possible, remove the history from the pump before changing the time or disable the closed loop for one DIA after the last wrong history entry but minimum one DIA from now.
+ Please pair your pump with your phone!
+ Approaching insulin daily limit
+ Starting bolus delivery
+ Waiting for bolus end. Remaining %1$d sec.
+ Stopping temp basal
+ Setting extended bolus
+ Stopping extended bolus
+ Updating basal rates
+ Setting temp basal
+ Waiting for time synchronization (%1$d sec)
+ Wrong password
+ Wrong pump password!
+ Alarms
+ Basal Hours
+ Boluses
+ Carbohydrates
+ Daily insulin
+ Errors
+ Glucose
+ Refill
+ Suspend
+ Prime
+ User options
+ Display time format
+ Button scroll
+ Beep on button press
+ Alarm
+ Sound
+ Vibrate
+ Both
+ LCD on time [seconds]
+ Backlight on time [seconds]
+ Glucose units
+ Shutdown [hours]
+ Low reservoir [Units]
+ Save options to pump
+ Pump integration for DANA Diabecare R pumps
+ Pump integration for domestic DANA Diabecare R pumps
+ Pump integration for DANA Diabecare R pumps with upgraded firmware
+ DANA
+ No bluetooth adapter found
+ Selected device not found
+ Change mode from U/d to U/h on pump
+ DanaR Korean
+ DanaR
+ Pump driver corrected
+ DanaRv2
+ Disable EasyUI mode in pump
+ Setting of basal profile failed
+ Bluetooth status
+ Pump IOB
+ Basal Step
+ Bolus Step
+ Firmware
+ Dana pump settings
+ 12h
+ 24h
+ On
+ Off
+ DanaR Bluetooth device
+ Pump password (v1 only)
+ Pump password
+ Use extended boluses for >200%%
+ Visualize extended bolus as %%
+ Bolus speed
+ Selected pump
+ Log reservoir change
+ Add \"Insulin Change\" event to careportal when detected in history
+ Log canula change
+ Add \"Site Change\" event to careportal when detected in history
+ PIN1
+ PIN2
+ Press OK on the pump\nand enter 2 displayed numbers\nKeep display on pump ON by pressing minus button until you finish entering code.
+ 1: (12 digits)
+ 2: (8 digits)
+
+
diff --git a/core/src/test/java/info/nightscout/androidaps/core/ExampleUnitTest.kt b/dana/src/test/java/info/nightscout/androidaps/dana/ExampleUnitTest.kt
similarity index 88%
rename from core/src/test/java/info/nightscout/androidaps/core/ExampleUnitTest.kt
rename to dana/src/test/java/info/nightscout/androidaps/dana/ExampleUnitTest.kt
index 35bc1a6629..a85dae0d49 100644
--- a/core/src/test/java/info/nightscout/androidaps/core/ExampleUnitTest.kt
+++ b/dana/src/test/java/info/nightscout/androidaps/dana/ExampleUnitTest.kt
@@ -1,4 +1,4 @@
-package info.nightscout.androidaps.core
+package info.nightscout.androidaps.dana
import org.junit.Test
diff --git a/danar/.gitignore b/danar/.gitignore
new file mode 100644
index 0000000000..796b96d1c4
--- /dev/null
+++ b/danar/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/danar/build.gradle b/danar/build.gradle
new file mode 100644
index 0000000000..349db5dbad
--- /dev/null
+++ b/danar/build.gradle
@@ -0,0 +1,76 @@
+apply plugin: 'com.android.library'
+apply plugin: 'kotlin-android'
+apply plugin: 'kotlin-android-extensions'
+apply plugin: 'kotlin-kapt'
+
+android {
+ compileSdkVersion 28
+
+ defaultConfig {
+ minSdkVersion 24
+ targetSdkVersion 28
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ 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
+ targetCompatibility = JavaVersion.VERSION_1_8
+ }
+
+}
+
+dependencies {
+ implementation project(':core')
+ implementation project(':dana')
+
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
+ implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
+ implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutinesVersion"
+ implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutinesVersion"
+
+ implementation 'androidx.appcompat:appcompat:1.1.0'
+ implementation "androidx.core:core-ktx:${coreVersion}"
+ implementation "androidx.preference:preference-ktx:1.1.1"
+ implementation "androidx.activity:activity-ktx:${activityVersion}"
+
+ // Graphview cannot be upgraded
+ implementation "com.jjoe64:graphview:4.0.1"
+
+ implementation 'net.danlew:android.joda:2.10.6'
+
+ implementation "com.google.dagger:dagger-android:$dagger_version"
+ implementation "com.google.dagger:dagger-android-support:$dagger_version"
+ 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"
+
+ //RxBus
+ implementation "io.reactivex.rxjava2:rxandroid:${rxandroid_version}"
+
+ testImplementation 'junit:junit:4.13'
+ androidTestImplementation 'androidx.test.ext:junit:1.1.1'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
+}
diff --git a/danar/consumer-rules.pro b/danar/consumer-rules.pro
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/danar/proguard-rules.pro b/danar/proguard-rules.pro
new file mode 100644
index 0000000000..f1b424510d
--- /dev/null
+++ b/danar/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
diff --git a/danar/src/main/AndroidManifest.xml b/danar/src/main/AndroidManifest.xml
new file mode 100644
index 0000000000..f32d848875
--- /dev/null
+++ b/danar/src/main/AndroidManifest.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/DanaRKoreanPlugin.java b/danar/src/main/java/info/nightscout/androidaps/danaRKorean/DanaRKoreanPlugin.java
similarity index 83%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/DanaRKoreanPlugin.java
rename to danar/src/main/java/info/nightscout/androidaps/danaRKorean/DanaRKoreanPlugin.java
index 809cf77e6f..acb5bf5783 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/DanaRKoreanPlugin.java
+++ b/danar/src/main/java/info/nightscout/androidaps/danaRKorean/DanaRKoreanPlugin.java
@@ -1,4 +1,4 @@
-package info.nightscout.androidaps.plugins.pump.danaRKorean;
+package info.nightscout.androidaps.danaRKorean;
import android.content.ComponentName;
import android.content.Context;
@@ -12,14 +12,19 @@ import javax.inject.Inject;
import javax.inject.Singleton;
import dagger.android.HasAndroidInjector;
-import info.nightscout.androidaps.R;
+import info.nightscout.androidaps.dana.DanaPump;
+import info.nightscout.androidaps.danaRKorean.services.DanaRKoreanExecutionService;
+import info.nightscout.androidaps.danar.AbstractDanaRPlugin;
+import info.nightscout.androidaps.danar.R;
import info.nightscout.androidaps.data.DetailedBolusInfo;
import info.nightscout.androidaps.data.Profile;
import info.nightscout.androidaps.data.PumpEnactResult;
import info.nightscout.androidaps.db.ExtendedBolus;
import info.nightscout.androidaps.db.TemporaryBasal;
+import info.nightscout.androidaps.db.Treatment;
import info.nightscout.androidaps.events.EventAppExit;
import info.nightscout.androidaps.events.EventPreferenceChange;
+import info.nightscout.androidaps.interfaces.ActivePluginProvider;
import info.nightscout.androidaps.interfaces.CommandQueueProvider;
import info.nightscout.androidaps.interfaces.Constraint;
import info.nightscout.androidaps.interfaces.PluginType;
@@ -28,11 +33,7 @@ import info.nightscout.androidaps.logging.LTag;
import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker;
import info.nightscout.androidaps.plugins.pump.common.defs.PumpType;
-import info.nightscout.androidaps.plugins.pump.danaR.AbstractDanaRPlugin;
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump;
-import info.nightscout.androidaps.plugins.pump.danaRKorean.services.DanaRKoreanExecutionService;
-import info.nightscout.androidaps.plugins.treatments.Treatment;
-import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin;
+import info.nightscout.androidaps.utils.DateUtil;
import info.nightscout.androidaps.utils.FabricPrivacy;
import info.nightscout.androidaps.utils.Round;
import info.nightscout.androidaps.utils.resources.ResourceHelper;
@@ -48,26 +49,29 @@ public class DanaRKoreanPlugin extends AbstractDanaRPlugin {
private final Context context;
private final ResourceHelper resourceHelper;
private final ConstraintChecker constraintChecker;
+ private final FabricPrivacy fabricPrivacy;
@Inject
public DanaRKoreanPlugin(
HasAndroidInjector injector,
AAPSLogger aapsLogger,
RxBusWrapper rxBus,
- DanaRPump danaRPump,
+ DanaPump danaPump,
Context context,
ResourceHelper resourceHelper,
ConstraintChecker constraintChecker,
- TreatmentsPlugin treatmentsPlugin,
+ ActivePluginProvider activePlugin,
SP sp,
- CommandQueueProvider commandQueue
-
+ CommandQueueProvider commandQueue,
+ DateUtil dateUtil,
+ FabricPrivacy fabricPrivacy
) {
- super(injector, danaRPump, resourceHelper, constraintChecker, aapsLogger, commandQueue, rxBus, treatmentsPlugin, sp);
+ super(injector, danaPump, resourceHelper, constraintChecker, aapsLogger, commandQueue, rxBus, activePlugin, sp, dateUtil);
this.aapsLogger = aapsLogger;
this.context = context;
this.resourceHelper = resourceHelper;
this.constraintChecker = constraintChecker;
+ this.fabricPrivacy = fabricPrivacy;
getPluginDescription().description(R.string.description_pump_dana_r_korean);
useExtendedBoluses = sp.getBoolean(R.string.key_danar_useextended, false);
@@ -86,16 +90,16 @@ public class DanaRKoreanPlugin extends AbstractDanaRPlugin {
boolean previousValue = useExtendedBoluses;
useExtendedBoluses = sp.getBoolean(R.string.key_danar_useextended, false);
- if (useExtendedBoluses != previousValue && treatmentsPlugin.isInHistoryExtendedBoluslInProgress()) {
+ if (useExtendedBoluses != previousValue && activePlugin.getActiveTreatments().isInHistoryExtendedBoluslInProgress()) {
sExecutionService.extendedBolusStop();
}
}
- }, exception -> FabricPrivacy.getInstance().logException(exception))
+ }, fabricPrivacy::logException)
);
disposable.add(rxBus
.toObservable(EventAppExit.class)
.observeOn(Schedulers.io())
- .subscribe(event -> context.unbindService(mConnection), exception -> FabricPrivacy.getInstance().logException(exception))
+ .subscribe(event -> context.unbindService(mConnection), fabricPrivacy::logException)
);
super.onStart();
}
@@ -141,7 +145,7 @@ public class DanaRKoreanPlugin extends AbstractDanaRPlugin {
@Override
public boolean isInitialized() {
- return danaRPump.getLastConnection() > 0 && danaRPump.getMaxBasal() > 0 && !danaRPump.isConfigUD() && !danaRPump.isEasyModeEnabled() && danaRPump.isExtendedBolusEnabled() && danaRPump.isPasswordOK();
+ return danaPump.getLastConnection() > 0 && danaPump.getMaxBasal() > 0 && !danaPump.isConfigUD() && !danaPump.isEasyModeEnabled() && danaPump.isExtendedBolusEnabled() && danaPump.isPasswordOK();
}
@Override
@@ -168,20 +172,20 @@ public class DanaRKoreanPlugin extends AbstractDanaRPlugin {
result.bolusDelivered = t.insulin;
result.carbsDelivered = detailedBolusInfo.carbs;
if (!result.success)
- result.comment = resourceHelper.gs(R.string.boluserrorcode, detailedBolusInfo.insulin, t.insulin, danaRPump.getMessageStartErrorCode());
+ result.comment = resourceHelper.gs(R.string.boluserrorcode, detailedBolusInfo.insulin, t.insulin, danaPump.getBolusStartErrorCode());
else
- result.comment = resourceHelper.gs(R.string.virtualpump_resultok);
+ result.comment = resourceHelper.gs(R.string.ok);
aapsLogger.debug(LTag.PUMP, "deliverTreatment: OK. Asked: " + detailedBolusInfo.insulin + " Delivered: " + result.bolusDelivered);
detailedBolusInfo.insulin = t.insulin;
detailedBolusInfo.date = System.currentTimeMillis();
- treatmentsPlugin.addToHistoryTreatment(detailedBolusInfo, false);
+ activePlugin.getActiveTreatments().addToHistoryTreatment(detailedBolusInfo, false);
return result;
} else {
PumpEnactResult result = new PumpEnactResult(getInjector());
result.success = false;
result.bolusDelivered = 0d;
result.carbsDelivered = 0d;
- result.comment = resourceHelper.gs(R.string.danar_invalidinput);
+ result.comment = resourceHelper.gs(R.string.invalidinput);
aapsLogger.error("deliverTreatment: Invalid input");
return result;
}
@@ -199,14 +203,14 @@ public class DanaRKoreanPlugin extends AbstractDanaRPlugin {
absoluteRate = constraintChecker.applyBasalConstraints(new Constraint<>(absoluteRate), profile).value();
- final boolean doTempOff = getBaseBasalRate() - absoluteRate == 0d;
- final boolean doLowTemp = absoluteRate < getBaseBasalRate();
+ final boolean doTempOff = getBaseBasalRate() - absoluteRate == 0d && absoluteRate >= 0.10d;
+ final boolean doLowTemp = absoluteRate < getBaseBasalRate() || absoluteRate < 0.10d;
final boolean doHighTemp = absoluteRate > getBaseBasalRate() && !useExtendedBoluses;
final boolean doExtendedTemp = absoluteRate > getBaseBasalRate() && useExtendedBoluses;
long now = System.currentTimeMillis();
- TemporaryBasal activeTemp = treatmentsPlugin.getRealTempBasalFromHistory(now);
- ExtendedBolus activeExtended = treatmentsPlugin.getExtendedBolusFromHistory(now);
+ TemporaryBasal activeTemp = activePlugin.getActiveTreatments().getRealTempBasalFromHistory(now);
+ ExtendedBolus activeExtended = activePlugin.getActiveTreatments().getExtendedBolusFromHistory(now);
if (doTempOff) {
// If extended in progress
@@ -230,6 +234,8 @@ public class DanaRKoreanPlugin extends AbstractDanaRPlugin {
if (doLowTemp || doHighTemp) {
Integer percentRate = Double.valueOf(absoluteRate / getBaseBasalRate() * 100).intValue();
+ // Any basal less than 0.10u/h will be dumped once per hour, not every 4 mins. So if it's less than .10u/h, set a zero temp.
+ if (absoluteRate < 0.10d) percentRate = 0;
if (percentRate < 100) percentRate = Round.ceilTo((double) percentRate, 10d).intValue();
else percentRate = Round.floorTo((double) percentRate, 10d).intValue();
if (percentRate > getPumpDescription().maxTempPercent) {
@@ -290,16 +296,16 @@ public class DanaRKoreanPlugin extends AbstractDanaRPlugin {
extendedRateToSet = Round.roundTo(extendedRateToSet, pumpDescription.extendedBolusStep * 2); // *2 because of halfhours
// What is current rate of extended bolusing in u/h?
- aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Extended bolus in progress: " + (activeExtended != null) + " rate: " + danaRPump.getExtendedBolusAbsoluteRate() + "U/h duration remaining: " + danaRPump.getExtendedBolusRemainingMinutes() + "min");
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Extended bolus in progress: " + (activeExtended != null) + " rate: " + danaPump.getExtendedBolusAbsoluteRate() + "U/h duration remaining: " + danaPump.getExtendedBolusRemainingMinutes() + "min");
aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Rate to set: " + extendedRateToSet + "U/h");
// Compare with extended rate in progress
- if (activeExtended != null && Math.abs(danaRPump.getExtendedBolusAbsoluteRate() - extendedRateToSet) < getPumpDescription().extendedBolusStep) {
+ if (activeExtended != null && Math.abs(danaPump.getExtendedBolusAbsoluteRate() - extendedRateToSet) < getPumpDescription().extendedBolusStep) {
// correct extended already set
result.success = true;
- result.absolute = danaRPump.getExtendedBolusAbsoluteRate();
+ result.absolute = danaPump.getExtendedBolusAbsoluteRate();
result.enacted = false;
- result.duration = danaRPump.getExtendedBolusRemainingMinutes();
+ result.duration = danaPump.getExtendedBolusRemainingMinutes();
result.isPercent = false;
result.isTempCancel = false;
aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Correct extended already set");
@@ -327,15 +333,15 @@ public class DanaRKoreanPlugin extends AbstractDanaRPlugin {
@NonNull @Override
public PumpEnactResult cancelTempBasal(boolean force) {
- if (treatmentsPlugin.isInHistoryRealTempBasalInProgress())
+ if (activePlugin.getActiveTreatments().isInHistoryRealTempBasalInProgress())
return cancelRealTempBasal();
- if (treatmentsPlugin.isInHistoryExtendedBoluslInProgress() && useExtendedBoluses) {
+ if (activePlugin.getActiveTreatments().isInHistoryExtendedBoluslInProgress() && useExtendedBoluses) {
return cancelExtendedBolus();
}
PumpEnactResult result = new PumpEnactResult(getInjector());
result.success = true;
result.enacted = false;
- result.comment = resourceHelper.gs(R.string.virtualpump_resultok);
+ result.comment = resourceHelper.gs(R.string.ok);
result.isTempCancel = true;
return result;
}
@@ -347,16 +353,16 @@ public class DanaRKoreanPlugin extends AbstractDanaRPlugin {
private PumpEnactResult cancelRealTempBasal() {
PumpEnactResult result = new PumpEnactResult(getInjector());
- TemporaryBasal runningTB = treatmentsPlugin.getTempBasalFromHistory(System.currentTimeMillis());
+ TemporaryBasal runningTB = activePlugin.getActiveTreatments().getTempBasalFromHistory(System.currentTimeMillis());
if (runningTB != null) {
sExecutionService.tempBasalStop();
result.enacted = true;
result.isTempCancel = true;
}
- if (!danaRPump.isTempBasalInProgress()) {
+ if (!danaPump.isTempBasalInProgress()) {
result.success = true;
result.isTempCancel = true;
- result.comment = resourceHelper.gs(R.string.virtualpump_resultok);
+ result.comment = resourceHelper.gs(R.string.ok);
aapsLogger.debug(LTag.PUMP, "cancelRealTempBasal: OK");
return result;
} else {
diff --git a/danar/src/main/java/info/nightscout/androidaps/danaRKorean/comm/MessageHashTableRKorean.kt b/danar/src/main/java/info/nightscout/androidaps/danaRKorean/comm/MessageHashTableRKorean.kt
new file mode 100644
index 0000000000..eced4a9afa
--- /dev/null
+++ b/danar/src/main/java/info/nightscout/androidaps/danaRKorean/comm/MessageHashTableRKorean.kt
@@ -0,0 +1,63 @@
+package info.nightscout.androidaps.danaRKorean.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.danar.comm.*
+import java.util.*
+import javax.inject.Inject
+import javax.inject.Singleton
+
+@Singleton
+class MessageHashTableRKorean @Inject constructor(
+ private val injector: HasAndroidInjector
+) : MessageHashTableBase {
+
+ private var messages: HashMap = HashMap()
+
+ init {
+ put(MsgBolusStop(injector)) // 0x0101 CMD_MEALINS_STOP
+ put(MsgBolusStart(injector, 0.0)) // 0x0102 CMD_MEALINS_START_DATA
+ put(MsgBolusProgress(injector)) // 0x0202 CMD_PUMP_THIS_REMAINDER_MEAL_INS
+ put(MsgStatusProfile(injector)) // 0x0204 CMD_PUMP_CALCULATION_SETTING
+ put(MsgStatusTempBasal(injector)) // 0x0205 CMD_PUMP_EXERCISE_MODE
+ put(MsgStatusBolusExtended(injector)) // 0x0207 CMD_PUMP_EXPANS_INS_I
+ put(MsgStatusBasic_k(injector)) // 0x020A CMD_PUMP_INITVIEW_I
+ put(MsgStatus_k(injector)) // 0x020B CMD_PUMP_STATUS
+ put(MsgInitConnStatusTime_k(injector)) // 0x0301 CMD_PUMPINIT_TIME_INFO
+ put(MsgInitConnStatusBolus_k(injector)) // 0x0302 CMD_PUMPINIT_BOLUS_INFO
+ put(MsgInitConnStatusBasic_k(injector)) // 0x0303 CMD_PUMPINIT_INIT_INFO
+ put(MsgSetTempBasalStart(injector, 0, 0)) // 0x0401 CMD_PUMPSET_EXERCISE_S
+ put(MsgSetCarbsEntry(injector, 0, 0)) // 0x0402 CMD_PUMPSET_HIS_S
+ put(MsgSetTempBasalStop(injector)) // 0x0403 CMD_PUMPSET_EXERCISE_STOP
+ put(MsgSetExtendedBolusStop(injector)) // 0x0406 CMD_PUMPSET_EXPANS_INS_STOP
+ put(MsgSetExtendedBolusStart(injector, 0.0, 0)) // 0x0407 CMD_PUMPSET_EXPANS_INS_S
+ put(MsgError(injector)) // 0x0601 CMD_PUMPOWAY_SYSTEM_STATUS
+ put(MsgPCCommStart(injector)) // 0x3001 CMD_CONNECT
+ put(MsgPCCommStop(injector)) // 0x3002 CMD_DISCONNECT
+ put(MsgHistoryBolus(injector)) // 0x3101 CMD_HISTORY_MEAL_INS
+ put(MsgHistoryDailyInsulin(injector)) // 0x3102 CMD_HISTORY_DAY_INS
+ put(MsgHistoryGlucose(injector)) // 0x3104 CMD_HISTORY_GLUCOSE
+ put(MsgHistoryAlarm(injector)) // 0x3105 CMD_HISTORY_ALARM
+ put(MsgHistoryCarbo(injector)) // 0x3107 CMD_HISTORY_CARBOHY
+ put(MsgSettingBasal_k(injector)) // 0x3202 CMD_SETTING_V_BASAL_INS_I
+ put(MsgSettingMeal(injector)) // 0x3203 CMD_SETTING_V_MEAL_SETTING_I
+ put(MsgSettingProfileRatios(injector)) // 0x3204 CMD_SETTING_V_CCC_I
+ put(MsgSettingMaxValues(injector)) // 0x3205 CMD_SETTING_V_MAX_VALUE_I
+ put(MsgSettingBasalProfileAll_k(injector)) // 0x3206 CMD_SETTING_V_BASAL_PROFILE_ALL
+ put(MsgSettingShippingInfo(injector)) // 0x3207 CMD_SETTING_V_SHIPPING_I
+ put(MsgSettingGlucose(injector)) // 0x3209 CMD_SETTING_V_GLUCOSEandEASY
+ put(MsgSettingPumpTime(injector)) // 0x320A CMD_SETTING_V_TIME_I
+ put(MsgSetSingleBasalProfile(injector, Array(24) { 0.0 })) // 0x3302 CMD_SETTING_BASAL_INS_S
+ put(MsgHistoryAll(injector)) // 0x41F2 CMD_HISTORY_ALL
+ put(MsgHistoryNewDone(injector)) // 0x42F1 CMD_HISTORY_NEW_DONE
+ put(MsgHistoryNew(injector)) // 0x42F2 CMD_HISTORY_NEW
+ put(MsgCheckValue_k(injector)) // 0xF0F1 CMD_PUMP_CHECK_VALUE
+ }
+
+ override fun put(message: MessageBase) {
+ messages[message.command] = message
+ }
+
+ override fun findMessage(command: Int): MessageBase {
+ return messages[command] ?: MessageBase(injector)
+ }
+}
diff --git a/danar/src/main/java/info/nightscout/androidaps/danaRKorean/comm/MsgCheckValue_k.kt b/danar/src/main/java/info/nightscout/androidaps/danaRKorean/comm/MsgCheckValue_k.kt
new file mode 100644
index 0000000000..362240338c
--- /dev/null
+++ b/danar/src/main/java/info/nightscout/androidaps/danaRKorean/comm/MsgCheckValue_k.kt
@@ -0,0 +1,30 @@
+package info.nightscout.androidaps.danaRKorean.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.danar.comm.MessageBase
+import info.nightscout.androidaps.logging.LTag
+
+class MsgCheckValue_k(
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
+
+ init {
+ SetCommand(0xF0F1)
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun handleMessage(bytes: ByteArray) {
+ danaPump.isNewPump = true
+ aapsLogger.debug(LTag.PUMPCOMM, "New firmware confirmed")
+ danaPump.hwModel = intFromBuff(bytes, 0, 1)
+ danaPump.protocol = intFromBuff(bytes, 1, 1)
+ danaPump.productCode = intFromBuff(bytes, 2, 1)
+ if (danaPump.hwModel != info.nightscout.androidaps.dana.DanaPump.DOMESTIC_MODEL) {
+ danaRKoreanPlugin.disconnect("Wrong Model")
+ aapsLogger.debug(LTag.PUMPCOMM, "Wrong model selected")
+ }
+ aapsLogger.debug(LTag.PUMPCOMM, "Model: " + String.format("%02X ", danaPump.hwModel))
+ aapsLogger.debug(LTag.PUMPCOMM, "Protocol: " + String.format("%02X ", danaPump.protocol))
+ aapsLogger.debug(LTag.PUMPCOMM, "Product Code: " + String.format("%02X ", danaPump.productCode))
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/comm/MsgInitConnStatusBasic_k.kt b/danar/src/main/java/info/nightscout/androidaps/danaRKorean/comm/MsgInitConnStatusBasic_k.kt
similarity index 63%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/comm/MsgInitConnStatusBasic_k.kt
rename to danar/src/main/java/info/nightscout/androidaps/danaRKorean/comm/MsgInitConnStatusBasic_k.kt
index 89a083f34a..07999f5267 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/comm/MsgInitConnStatusBasic_k.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danaRKorean/comm/MsgInitConnStatusBasic_k.kt
@@ -1,22 +1,16 @@
-package info.nightscout.androidaps.plugins.pump.danaRKorean.comm
+package info.nightscout.androidaps.danaRKorean.comm
-import info.nightscout.androidaps.R
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.danar.R
+import info.nightscout.androidaps.danar.comm.MessageBase
import info.nightscout.androidaps.logging.LTag
-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
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MessageBase
-import info.nightscout.androidaps.utils.resources.ResourceHelper
class MsgInitConnStatusBasic_k(
- private val aapsLogger: AAPSLogger,
- private val rxBus: RxBusWrapper,
- private val resourceHelper: ResourceHelper,
- private val danaRPump: DanaRPump
-) : MessageBase() {
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
init {
SetCommand(0x0303)
@@ -27,23 +21,23 @@ class MsgInitConnStatusBasic_k(
if (bytes.size - 10 > 6) {
return
}
- danaRPump.pumpSuspended = intFromBuff(bytes, 0, 1) == 1
+ danaPump.pumpSuspended = intFromBuff(bytes, 0, 1) == 1
val isUtilityEnable = intFromBuff(bytes, 1, 1)
- danaRPump.isEasyModeEnabled = intFromBuff(bytes, 2, 1) == 1
+ danaPump.isEasyModeEnabled = intFromBuff(bytes, 2, 1) == 1
val easyUIMode = intFromBuff(bytes, 3, 1)
- danaRPump.password = intFromBuff(bytes, 4, 2) xor 0x3463
- aapsLogger.debug(LTag.PUMPCOMM, "isStatusSuspendOn: " + danaRPump.pumpSuspended)
+ danaPump.password = intFromBuff(bytes, 4, 2) xor 0x3463
+ aapsLogger.debug(LTag.PUMPCOMM, "isStatusSuspendOn: " + danaPump.pumpSuspended)
aapsLogger.debug(LTag.PUMPCOMM, "isUtilityEnable: $isUtilityEnable")
- aapsLogger.debug(LTag.PUMPCOMM, "Is EasyUI Enabled: " + danaRPump.isEasyModeEnabled)
+ aapsLogger.debug(LTag.PUMPCOMM, "Is EasyUI Enabled: " + danaPump.isEasyModeEnabled)
aapsLogger.debug(LTag.PUMPCOMM, "easyUIMode: $easyUIMode")
- aapsLogger.debug(LTag.PUMPCOMM, "Pump password: " + danaRPump.password)
- if (danaRPump.isEasyModeEnabled) {
+ aapsLogger.debug(LTag.PUMPCOMM, "Pump password: " + danaPump.password)
+ if (danaPump.isEasyModeEnabled) {
val notification = Notification(Notification.EASYMODE_ENABLED, resourceHelper.gs(R.string.danar_disableeasymode), Notification.URGENT)
rxBus.send(EventNewNotification(notification))
} else {
rxBus.send(EventDismissNotification(Notification.EASYMODE_ENABLED))
}
- if (!danaRPump.isPasswordOK) {
+ if (!danaPump.isPasswordOK) {
val notification = Notification(Notification.WRONG_PUMP_PASSWORD, resourceHelper.gs(R.string.wrongpumppassword), Notification.URGENT)
rxBus.send(EventNewNotification(notification))
} else {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/comm/MsgInitConnStatusBolus_k.kt b/danar/src/main/java/info/nightscout/androidaps/danaRKorean/comm/MsgInitConnStatusBolus_k.kt
similarity index 55%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/comm/MsgInitConnStatusBolus_k.kt
rename to danar/src/main/java/info/nightscout/androidaps/danaRKorean/comm/MsgInitConnStatusBolus_k.kt
index f59778fa8f..290121b7ac 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/comm/MsgInitConnStatusBolus_k.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danaRKorean/comm/MsgInitConnStatusBolus_k.kt
@@ -1,24 +1,16 @@
-package info.nightscout.androidaps.plugins.pump.danaRKorean.comm
+package info.nightscout.androidaps.danaRKorean.comm
-import info.nightscout.androidaps.R
-import info.nightscout.androidaps.interfaces.ActivePluginProvider
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.danar.R
+import info.nightscout.androidaps.danar.comm.MessageBase
import info.nightscout.androidaps.logging.LTag
-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
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MessageBase
-import info.nightscout.androidaps.utils.resources.ResourceHelper
class MsgInitConnStatusBolus_k(
- private val aapsLogger: AAPSLogger,
- private val rxBus: RxBusWrapper,
- private val resourceHelper: ResourceHelper,
- private val danaRPump: DanaRPump,
- private val activePlugin: ActivePluginProvider
-) : MessageBase() {
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
init {
SetCommand(0x0302)
@@ -30,16 +22,16 @@ class MsgInitConnStatusBolus_k(
return
}
val bolusConfig = intFromBuff(bytes, 0, 1)
- danaRPump.isExtendedBolusEnabled = bolusConfig and 0x01 != 0
- danaRPump.bolusStep = intFromBuff(bytes, 1, 1) / 100.0
- danaRPump.maxBolus = intFromBuff(bytes, 2, 2) / 100.0
+ danaPump.isExtendedBolusEnabled = bolusConfig and 0x01 != 0
+ danaPump.bolusStep = intFromBuff(bytes, 1, 1) / 100.0
+ danaPump.maxBolus = intFromBuff(bytes, 2, 2) / 100.0
//int bolusRate = intFromBuff(bytes, 4, 8);
val deliveryStatus = intFromBuff(bytes, 12, 1)
- aapsLogger.debug(LTag.PUMPCOMM, "Is Extended bolus enabled: " + danaRPump.isExtendedBolusEnabled)
- aapsLogger.debug(LTag.PUMPCOMM, "Bolus increment: " + danaRPump.bolusStep)
- aapsLogger.debug(LTag.PUMPCOMM, "Bolus max: " + danaRPump.maxBolus)
+ aapsLogger.debug(LTag.PUMPCOMM, "Is Extended bolus enabled: " + danaPump.isExtendedBolusEnabled)
+ aapsLogger.debug(LTag.PUMPCOMM, "Bolus increment: " + danaPump.bolusStep)
+ aapsLogger.debug(LTag.PUMPCOMM, "Bolus max: " + danaPump.maxBolus)
aapsLogger.debug(LTag.PUMPCOMM, "Delivery status: $deliveryStatus")
- if (!danaRPump.isExtendedBolusEnabled) {
+ if (!danaPump.isExtendedBolusEnabled) {
val notification = Notification(Notification.EXTENDED_BOLUS_DISABLED, resourceHelper.gs(R.string.danar_enableextendedbolus), Notification.URGENT)
rxBus.send(EventNewNotification(notification))
} else {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/comm/MsgInitConnStatusTime_k.kt b/danar/src/main/java/info/nightscout/androidaps/danaRKorean/comm/MsgInitConnStatusTime_k.kt
similarity index 59%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/comm/MsgInitConnStatusTime_k.kt
rename to danar/src/main/java/info/nightscout/androidaps/danaRKorean/comm/MsgInitConnStatusTime_k.kt
index 77402e0389..c884364b03 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/comm/MsgInitConnStatusTime_k.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danaRKorean/comm/MsgInitConnStatusTime_k.kt
@@ -1,32 +1,17 @@
-package info.nightscout.androidaps.plugins.pump.danaRKorean.comm
+package info.nightscout.androidaps.danaRKorean.comm
-import info.nightscout.androidaps.R
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.danar.R
+import info.nightscout.androidaps.danar.comm.MessageBase
import info.nightscout.androidaps.events.EventRebuildTabs
-import info.nightscout.androidaps.interfaces.CommandQueueProvider
import info.nightscout.androidaps.interfaces.PluginType
-import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag
-import info.nightscout.androidaps.plugins.bus.RxBusWrapper
-import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPlugin
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MessageBase
-import info.nightscout.androidaps.plugins.pump.danaRKorean.DanaRKoreanPlugin
-import info.nightscout.androidaps.utils.DateUtil
-import info.nightscout.androidaps.utils.resources.ResourceHelper
class MsgInitConnStatusTime_k(
- private val aapsLogger: AAPSLogger,
- private val rxBus: RxBusWrapper,
- private val resourceHelper: ResourceHelper,
- private val danaRPump: DanaRPump,
- private val danaRPlugin: DanaRPlugin,
- private val danaRKoreanPlugin: DanaRKoreanPlugin,
- private val configBuilderPlugin: ConfigBuilderPlugin,
- private val commandQueue: CommandQueueProvider
-) : MessageBase() {
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
init {
SetCommand(0x0301)
@@ -43,9 +28,9 @@ class MsgInitConnStatusTime_k(
danaRKoreanPlugin.setFragmentVisible(PluginType.PUMP, false)
danaRPlugin.setPluginEnabled(PluginType.PUMP, true)
danaRPlugin.setFragmentVisible(PluginType.PUMP, true)
- danaRPump.reset() // mark not initialized
+ danaPump.reset() // mark not initialized
//If profile coming from pump, switch it as well
- configBuilderPlugin.storeSettings("ChangingKoreanDanaDriver")
+ configBuilder.storeSettings("ChangingKoreanDanaDriver")
rxBus.send(EventRebuildTabs())
commandQueue.readStatus("PumpDriverChange", null) // force new connection
return
@@ -55,7 +40,7 @@ class MsgInitConnStatusTime_k(
val versionCode2 = intFromBuff(bytes, 7, 1)
val versionCode3 = intFromBuff(bytes, 8, 1)
val versionCode4 = intFromBuff(bytes, 9, 1)
- aapsLogger.debug(LTag.PUMPCOMM, "Pump time: " + DateUtil.dateAndTimeString(time))
+ aapsLogger.debug(LTag.PUMPCOMM, "Pump time: " + dateUtil.dateAndTimeString(time))
aapsLogger.debug(LTag.PUMPCOMM, "Version code1: $versionCode1")
aapsLogger.debug(LTag.PUMPCOMM, "Version code2: $versionCode2")
aapsLogger.debug(LTag.PUMPCOMM, "Version code3: $versionCode3")
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/comm/MsgSettingBasalProfileAll_k.kt b/danar/src/main/java/info/nightscout/androidaps/danaRKorean/comm/MsgSettingBasalProfileAll_k.kt
similarity index 68%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/comm/MsgSettingBasalProfileAll_k.kt
rename to danar/src/main/java/info/nightscout/androidaps/danaRKorean/comm/MsgSettingBasalProfileAll_k.kt
index 9f33c81dbe..3b286a3de1 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/comm/MsgSettingBasalProfileAll_k.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danaRKorean/comm/MsgSettingBasalProfileAll_k.kt
@@ -1,9 +1,8 @@
-package info.nightscout.androidaps.plugins.pump.danaRKorean.comm
+package info.nightscout.androidaps.danaRKorean.comm
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.danar.comm.MessageBase
import info.nightscout.androidaps.logging.LTag
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MessageBase
import java.util.*
/**
@@ -15,9 +14,8 @@ import java.util.*
* THIS IS BROKEN IN PUMP... SENDING ONLY 1 PROFILE
*/
class MsgSettingBasalProfileAll_k(
- private val aapsLogger: AAPSLogger,
- private val danaRPump: DanaRPump
-) : MessageBase() {
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
init {
SetCommand(0x3206)
@@ -25,14 +23,14 @@ class MsgSettingBasalProfileAll_k(
}
override fun handleMessage(bytes: ByteArray) {
- danaRPump.pumpProfiles = Array(4) { Array(48) { 0.0 } }
- if (danaRPump.basal48Enable) {
+ danaPump.pumpProfiles = Array(4) { Array(48) { 0.0 } }
+ if (danaPump.basal48Enable) {
for (profile in 0..3) {
val position = intFromBuff(bytes, 107 * profile, 1)
for (index in 0..47) {
var basal = intFromBuff(bytes, 107 * profile + 2 * index + 1, 2)
if (basal < 10) basal = 0
- danaRPump.pumpProfiles!![position][index] = basal / 100 / 24.0 // in units/day
+ danaPump.pumpProfiles!![position][index] = basal / 100 / 24.0 // in units/day
}
}
} else {
@@ -43,14 +41,14 @@ class MsgSettingBasalProfileAll_k(
var basal = intFromBuff(bytes, 59 * profile + 2 * index + 1, 2)
if (basal < 10) basal = 0
aapsLogger.debug(LTag.PUMPCOMM, "position $position index $index")
- danaRPump.pumpProfiles!![position][index] = basal / 100 / 24.0 // in units/day
+ danaPump.pumpProfiles!![position][index] = basal / 100 / 24.0 // in units/day
}
}
}
- if (danaRPump.basal48Enable) {
+ if (danaPump.basal48Enable) {
for (profile in 0..3) {
for (index in 0..23) {
- aapsLogger.debug(LTag.PUMPCOMM, "Basal profile " + profile + ": " + String.format(Locale.ENGLISH, "%02d", index) + "h: " + danaRPump.pumpProfiles!![profile][index])
+ aapsLogger.debug(LTag.PUMPCOMM, "Basal profile " + profile + ": " + String.format(Locale.ENGLISH, "%02d", index) + "h: " + danaPump.pumpProfiles!![profile][index])
}
}
} else {
@@ -58,7 +56,7 @@ class MsgSettingBasalProfileAll_k(
for (index in 0..47) {
aapsLogger.debug(LTag.PUMPCOMM, "Basal profile " + profile + ": " + String.format(Locale.ENGLISH, "%02d", index / 2) +
":" + String.format(Locale.ENGLISH, "%02d", index % 2 * 30) + " : " +
- danaRPump.pumpProfiles!![profile][index])
+ danaPump.pumpProfiles!![profile][index])
}
}
}
diff --git a/danar/src/main/java/info/nightscout/androidaps/danaRKorean/comm/MsgSettingBasal_k.kt b/danar/src/main/java/info/nightscout/androidaps/danaRKorean/comm/MsgSettingBasal_k.kt
new file mode 100644
index 0000000000..4e3bfb11ec
--- /dev/null
+++ b/danar/src/main/java/info/nightscout/androidaps/danaRKorean/comm/MsgSettingBasal_k.kt
@@ -0,0 +1,27 @@
+package info.nightscout.androidaps.danaRKorean.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.danar.comm.MessageBase
+import info.nightscout.androidaps.logging.LTag
+import java.util.*
+
+class MsgSettingBasal_k(
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
+
+ init {
+ SetCommand(0x3202)
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun handleMessage(bytes: ByteArray) {
+ danaPump.pumpProfiles = Array(4) { Array(48) { 0.0 } }
+ for (index in 0..23) {
+ var basal = intFromBuff(bytes, 2 * index, 2)
+ if (basal < danaRKoreanPlugin.pumpDescription.basalMinimumRate) basal = 0
+ danaPump.pumpProfiles!![danaPump.activeProfile][index] = basal / 100.0
+ }
+ for (index in 0..23)
+ aapsLogger.debug(LTag.PUMPCOMM, "Basal " + String.format(Locale.ENGLISH, "%02d", index) + "h: " + danaPump.pumpProfiles!![danaPump.activeProfile][index])
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/comm/MsgStatusBasic_k.kt b/danar/src/main/java/info/nightscout/androidaps/danaRKorean/comm/MsgStatusBasic_k.kt
similarity index 58%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/comm/MsgStatusBasic_k.kt
rename to danar/src/main/java/info/nightscout/androidaps/danaRKorean/comm/MsgStatusBasic_k.kt
index 8f08587c5c..559dde782d 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/comm/MsgStatusBasic_k.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danaRKorean/comm/MsgStatusBasic_k.kt
@@ -1,14 +1,12 @@
-package info.nightscout.androidaps.plugins.pump.danaRKorean.comm
+package info.nightscout.androidaps.danaRKorean.comm
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.danar.comm.MessageBase
import info.nightscout.androidaps.logging.LTag
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MessageBase
class MsgStatusBasic_k(
- private val aapsLogger: AAPSLogger,
- private val danaRPump: DanaRPump
-) : MessageBase() {
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
init {
SetCommand(0x020A)
@@ -21,11 +19,11 @@ class MsgStatusBasic_k(
val reservoirRemainingUnits = intFromBuff(bytes, 3, 3) / 750.0
val dailyTotalUnits = intFromBuff(bytes, 6, 3) / 750.0
val maxDailyTotalUnits = intFromBuff(bytes, 9, 2) / 100
- danaRPump.dailyTotalUnits = dailyTotalUnits
- danaRPump.maxDailyTotalUnits = maxDailyTotalUnits
- danaRPump.reservoirRemainingUnits = reservoirRemainingUnits
- danaRPump.currentBasal = currentBasal
- danaRPump.batteryRemaining = batteryRemaining
+ danaPump.dailyTotalUnits = dailyTotalUnits
+ danaPump.maxDailyTotalUnits = maxDailyTotalUnits
+ danaPump.reservoirRemainingUnits = reservoirRemainingUnits
+ danaPump.currentBasal = currentBasal
+ danaPump.batteryRemaining = batteryRemaining
aapsLogger.debug(LTag.PUMPCOMM, "Daily total units: $dailyTotalUnits")
aapsLogger.debug(LTag.PUMPCOMM, "Max daily total units: $maxDailyTotalUnits")
aapsLogger.debug(LTag.PUMPCOMM, "Reservoir remaining units: $reservoirRemainingUnits")
diff --git a/danar/src/main/java/info/nightscout/androidaps/danaRKorean/comm/MsgStatus_k.kt b/danar/src/main/java/info/nightscout/androidaps/danaRKorean/comm/MsgStatus_k.kt
new file mode 100644
index 0000000000..0f0815bd93
--- /dev/null
+++ b/danar/src/main/java/info/nightscout/androidaps/danaRKorean/comm/MsgStatus_k.kt
@@ -0,0 +1,35 @@
+package info.nightscout.androidaps.danaRKorean.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.danar.comm.MessageBase
+import info.nightscout.androidaps.logging.LTag
+
+class MsgStatus_k(
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
+
+ init {
+ SetCommand(0x020B)
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun handleMessage(bytes: ByteArray) {
+ danaPump.dailyTotalUnits = intFromBuff(bytes, 0, 3) / 750.0
+ danaPump.isExtendedInProgress = intFromBuff(bytes, 3, 1) == 1
+ danaPump.extendedBolusMinutes = intFromBuff(bytes, 4, 2)
+ danaPump.extendedBolusAmount = intFromBuff(bytes, 6, 2) / 100.0
+ //val lastBolusAmount = intFromBuff(bytes, 13, 2) / 100.0
+ //if (lastBolusAmount != 0d) {
+ // pump.lastBolusTime = dateTimeFromBuff(bytes, 8);
+ // pump.lastBolusAmount = lastBolusAmount;
+ //}
+ danaPump.iob = intFromBuff(bytes, 15, 2) / 100.0
+ aapsLogger.debug(LTag.PUMPCOMM, "Daily total: " + danaPump.dailyTotalUnits)
+ aapsLogger.debug(LTag.PUMPCOMM, "Is extended bolus running: " + danaPump.isExtendedInProgress)
+ aapsLogger.debug(LTag.PUMPCOMM, "Extended bolus min: " + danaPump.extendedBolusMinutes)
+ aapsLogger.debug(LTag.PUMPCOMM, "Extended bolus amount: " + danaPump.extendedBolusAmount)
+ //aapsLogger.debug(LTag.PUMPCOMM, "Last bolus time: " + pump.lastBolusTime);
+ //aapsLogger.debug(LTag.PUMPCOMM, "Last bolus amount: " + pump.lastBolusAmount);
+ aapsLogger.debug(LTag.PUMPCOMM, "IOB: " + danaPump.iob)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/services/DanaRKoreanExecutionService.java b/danar/src/main/java/info/nightscout/androidaps/danaRKorean/services/DanaRKoreanExecutionService.java
similarity index 61%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/services/DanaRKoreanExecutionService.java
rename to danar/src/main/java/info/nightscout/androidaps/danaRKorean/services/DanaRKoreanExecutionService.java
index 0d18b1ecef..e9963d8ba3 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRKorean/services/DanaRKoreanExecutionService.java
+++ b/danar/src/main/java/info/nightscout/androidaps/danaRKorean/services/DanaRKoreanExecutionService.java
@@ -1,87 +1,77 @@
-package info.nightscout.androidaps.plugins.pump.danaRKorean.services;
+package info.nightscout.androidaps.danaRKorean.services;
-import android.bluetooth.BluetoothDevice;
-import android.content.Context;
-import android.content.IntentFilter;
import android.os.Binder;
import android.os.SystemClock;
import java.io.IOException;
-import java.util.Date;
import javax.inject.Inject;
import info.nightscout.androidaps.Constants;
-import info.nightscout.androidaps.R;
+import info.nightscout.androidaps.dana.DanaPump;
+import info.nightscout.androidaps.dana.events.EventDanaRNewStatus;
+import info.nightscout.androidaps.danaRKorean.DanaRKoreanPlugin;
+import info.nightscout.androidaps.danaRKorean.comm.MessageHashTableRKorean;
+import info.nightscout.androidaps.danaRKorean.comm.MsgCheckValue_k;
+import info.nightscout.androidaps.danaRKorean.comm.MsgSettingBasal_k;
+import info.nightscout.androidaps.danaRKorean.comm.MsgStatusBasic_k;
+import info.nightscout.androidaps.danar.DanaRPlugin;
+import info.nightscout.androidaps.danar.R;
+import info.nightscout.androidaps.danar.SerialIOThread;
+import info.nightscout.androidaps.danar.comm.MsgBolusStart;
+import info.nightscout.androidaps.danar.comm.MsgSetCarbsEntry;
+import info.nightscout.androidaps.danar.comm.MsgSetExtendedBolusStart;
+import info.nightscout.androidaps.danar.comm.MsgSetExtendedBolusStop;
+import info.nightscout.androidaps.danar.comm.MsgSetSingleBasalProfile;
+import info.nightscout.androidaps.danar.comm.MsgSetTempBasalStart;
+import info.nightscout.androidaps.danar.comm.MsgSetTempBasalStop;
+import info.nightscout.androidaps.danar.comm.MsgSetTime;
+import info.nightscout.androidaps.danar.comm.MsgSettingBasal;
+import info.nightscout.androidaps.danar.comm.MsgSettingGlucose;
+import info.nightscout.androidaps.danar.comm.MsgSettingMaxValues;
+import info.nightscout.androidaps.danar.comm.MsgSettingMeal;
+import info.nightscout.androidaps.danar.comm.MsgSettingProfileRatios;
+import info.nightscout.androidaps.danar.comm.MsgSettingPumpTime;
+import info.nightscout.androidaps.danar.comm.MsgSettingShippingInfo;
+import info.nightscout.androidaps.danar.comm.MsgStatusBolusExtended;
+import info.nightscout.androidaps.danar.comm.MsgStatusTempBasal;
+import info.nightscout.androidaps.danar.services.AbstractDanaRExecutionService;
import info.nightscout.androidaps.data.Profile;
import info.nightscout.androidaps.data.PumpEnactResult;
+import info.nightscout.androidaps.db.Treatment;
import info.nightscout.androidaps.dialogs.BolusProgressDialog;
-import info.nightscout.androidaps.events.EventAppExit;
import info.nightscout.androidaps.events.EventInitializationChanged;
-import info.nightscout.androidaps.events.EventPreferenceChange;
import info.nightscout.androidaps.events.EventProfileNeedsUpdate;
import info.nightscout.androidaps.events.EventPumpStatusChanged;
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.LTag;
import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
-import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin;
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker;
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction;
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.Notification;
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPlugin;
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump;
-import info.nightscout.androidaps.plugins.pump.danaR.SerialIOThread;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgBolusStart;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSetCarbsEntry;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSetExtendedBolusStart;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSetExtendedBolusStop;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSetSingleBasalProfile;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSetTempBasalStart;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSetTempBasalStop;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSetTime;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSettingBasal;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSettingGlucose;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSettingMaxValues;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSettingMeal;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSettingProfileRatios;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSettingPumpTime;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSettingShippingInfo;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgStatusBolusExtended;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgStatusTempBasal;
-import info.nightscout.androidaps.plugins.pump.danaR.events.EventDanaRNewStatus;
-import info.nightscout.androidaps.plugins.pump.danaR.services.AbstractDanaRExecutionService;
-import info.nightscout.androidaps.plugins.pump.danaRKorean.DanaRKoreanPlugin;
-import info.nightscout.androidaps.plugins.pump.danaRKorean.comm.MessageHashTableRKorean;
-import info.nightscout.androidaps.plugins.pump.danaRKorean.comm.MsgCheckValue_k;
-import info.nightscout.androidaps.plugins.pump.danaRKorean.comm.MsgSettingBasal_k;
-import info.nightscout.androidaps.plugins.pump.danaRKorean.comm.MsgStatusBasic_k;
-import info.nightscout.androidaps.plugins.treatments.Treatment;
import info.nightscout.androidaps.queue.commands.Command;
import info.nightscout.androidaps.utils.DateUtil;
-import info.nightscout.androidaps.utils.FabricPrivacy;
import info.nightscout.androidaps.utils.T;
import info.nightscout.androidaps.utils.resources.ResourceHelper;
-import io.reactivex.disposables.CompositeDisposable;
-import io.reactivex.schedulers.Schedulers;
public class DanaRKoreanExecutionService extends AbstractDanaRExecutionService {
@Inject AAPSLogger aapsLogger;
@Inject RxBusWrapper rxBus;
@Inject ResourceHelper resourceHelper;
@Inject ConstraintChecker constraintChecker;
- @Inject DanaRPump danaRPump;
+ @Inject DanaPump danaPump;
@Inject DanaRPlugin danaRPlugin;
@Inject DanaRKoreanPlugin danaRKoreanPlugin;
- @Inject ConfigBuilderPlugin configBuilderPlugin;
@Inject CommandQueueProvider commandQueue;
- @Inject Context context;
@Inject MessageHashTableRKorean messageHashTableRKorean;
@Inject ActivePluginProvider activePlugin;
@Inject ProfileFunction profileFunction;
+ @Inject NSUpload nsUpload;
+ @Inject DateUtil dateUtil;
public DanaRKoreanExecutionService() {
}
@@ -124,7 +114,7 @@ public class DanaRKoreanExecutionService extends AbstractDanaRExecutionService {
if (mSerialIOThread != null) {
mSerialIOThread.disconnect("Recreate SerialIOThread");
}
- mSerialIOThread = new SerialIOThread(mRfcommSocket, messageHashTableRKorean, danaRPump);
+ mSerialIOThread = new SerialIOThread(aapsLogger, mRfcommSocket, messageHashTableRKorean, danaPump);
mHandshakeInProgress = true;
rxBus.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.HANDSHAKING, 0));
}
@@ -137,12 +127,12 @@ public class DanaRKoreanExecutionService extends AbstractDanaRExecutionService {
try {
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.gettingpumpstatus)));
//MsgStatus_k statusMsg = new MsgStatus_k();
- MsgStatusBasic_k statusBasicMsg = new MsgStatusBasic_k(aapsLogger, danaRPump);
- MsgStatusTempBasal tempStatusMsg = new MsgStatusTempBasal(aapsLogger, danaRPump, activePlugin, injector);
- MsgStatusBolusExtended exStatusMsg = new MsgStatusBolusExtended(injector, aapsLogger, danaRPump, activePlugin);
- MsgCheckValue_k checkValue = new MsgCheckValue_k(aapsLogger, danaRPump, danaRKoreanPlugin);
+ MsgStatusBasic_k statusBasicMsg = new MsgStatusBasic_k(injector);
+ MsgStatusTempBasal tempStatusMsg = new MsgStatusTempBasal(injector);
+ MsgStatusBolusExtended exStatusMsg = new MsgStatusBolusExtended(injector);
+ MsgCheckValue_k checkValue = new MsgCheckValue_k(injector);
- if (danaRPump.isNewPump()) {
+ if (danaPump.isNewPump()) {
mSerialIOThread.sendMessage(checkValue);
if (!checkValue.received) {
return;
@@ -158,59 +148,58 @@ public class DanaRKoreanExecutionService extends AbstractDanaRExecutionService {
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.gettingbolusstatus)));
long now = System.currentTimeMillis();
- danaRPump.setLastConnection(now);
+ danaPump.setLastConnection(now);
Profile profile = profileFunction.getProfile();
- if (profile != null && Math.abs(danaRPump.getCurrentBasal() - profile.getBasal()) >= danaRKoreanPlugin.getPumpDescription().basalStep) {
+ if (profile != null && Math.abs(danaPump.getCurrentBasal() - profile.getBasal()) >= danaRKoreanPlugin.getPumpDescription().basalStep) {
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.gettingpumpsettings)));
- mSerialIOThread.sendMessage(new MsgSettingBasal(aapsLogger, danaRPump, danaRPlugin));
+ mSerialIOThread.sendMessage(new MsgSettingBasal(injector));
if (!danaRKoreanPlugin.isThisProfileSet(profile) && !commandQueue.isRunning(Command.CommandType.BASAL_PROFILE)) {
rxBus.send(new EventProfileNeedsUpdate());
}
}
- if (danaRPump.getLastSettingsRead() + 60 * 60 * 1000L < now || !danaRKoreanPlugin.isInitialized()) {
+ if (danaPump.getLastSettingsRead() + 60 * 60 * 1000L < now || !danaRKoreanPlugin.isInitialized()) {
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.gettingpumpsettings)));
- mSerialIOThread.sendMessage(new MsgSettingShippingInfo(aapsLogger, danaRPump));
- mSerialIOThread.sendMessage(new MsgSettingMeal(aapsLogger, rxBus, resourceHelper, danaRPump, danaRKoreanPlugin));
- mSerialIOThread.sendMessage(new MsgSettingBasal_k(aapsLogger, danaRPump, danaRKoreanPlugin));
+ mSerialIOThread.sendMessage(new MsgSettingShippingInfo(injector));
+ mSerialIOThread.sendMessage(new MsgSettingMeal(injector));
+ mSerialIOThread.sendMessage(new MsgSettingBasal_k(injector));
//0x3201
- mSerialIOThread.sendMessage(new MsgSettingMaxValues(aapsLogger, danaRPump));
- mSerialIOThread.sendMessage(new MsgSettingGlucose(aapsLogger, danaRPump));
- mSerialIOThread.sendMessage(new MsgSettingProfileRatios(aapsLogger, danaRPump));
+ mSerialIOThread.sendMessage(new MsgSettingMaxValues(injector));
+ mSerialIOThread.sendMessage(new MsgSettingGlucose(injector));
+ mSerialIOThread.sendMessage(new MsgSettingProfileRatios(injector));
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.gettingpumptime)));
- mSerialIOThread.sendMessage(new MsgSettingPumpTime(aapsLogger, danaRPump));
- if (danaRPump.getPumpTime() == 0) {
+ mSerialIOThread.sendMessage(new MsgSettingPumpTime(injector));
+ if (danaPump.getPumpTime() == 0) {
// initial handshake was not successfull
// deinitialize pump
- danaRPump.setLastConnection(0);
- danaRPump.setLastSettingsRead(0);
+ danaPump.reset();
rxBus.send(new EventDanaRNewStatus());
rxBus.send(new EventInitializationChanged());
return;
}
- long timeDiff = (danaRPump.getPumpTime() - System.currentTimeMillis()) / 1000L;
+ long timeDiff = (danaPump.getPumpTime() - System.currentTimeMillis()) / 1000L;
aapsLogger.debug(LTag.PUMP, "Pump time difference: " + timeDiff + " seconds");
if (Math.abs(timeDiff) > 10) {
waitForWholeMinute(); // Dana can set only whole minute
// add 10sec to be sure we are over minute (will be cutted off anyway)
- mSerialIOThread.sendMessage(new MsgSetTime(aapsLogger, new Date(DateUtil.now() + T.secs(10).msecs())));
- mSerialIOThread.sendMessage(new MsgSettingPumpTime(aapsLogger, danaRPump));
- timeDiff = (danaRPump.getPumpTime() - System.currentTimeMillis()) / 1000L;
+ mSerialIOThread.sendMessage(new MsgSetTime(injector, DateUtil.now() + T.secs(10).msecs()));
+ mSerialIOThread.sendMessage(new MsgSettingPumpTime(injector));
+ timeDiff = (danaPump.getPumpTime() - System.currentTimeMillis()) / 1000L;
aapsLogger.debug(LTag.PUMP, "Pump time difference: " + timeDiff + " seconds");
}
- danaRPump.setLastSettingsRead(now);
+ danaPump.setLastSettingsRead(now);
}
rxBus.send(new EventDanaRNewStatus());
rxBus.send(new EventInitializationChanged());
//NSUpload.uploadDeviceStatus();
- if (danaRPump.getDailyTotalUnits() > danaRPump.getMaxDailyTotalUnits() * Constants.dailyLimitWarning) {
- aapsLogger.debug(LTag.PUMP, "Approaching daily limit: " + danaRPump.getDailyTotalUnits() + "/" + danaRPump.getMaxDailyTotalUnits());
+ if (danaPump.getDailyTotalUnits() > danaPump.getMaxDailyTotalUnits() * Constants.dailyLimitWarning) {
+ aapsLogger.debug(LTag.PUMP, "Approaching daily limit: " + danaPump.getDailyTotalUnits() + "/" + danaPump.getMaxDailyTotalUnits());
if (System.currentTimeMillis() > lastApproachingDailyLimit + 30 * 60 * 1000) {
Notification reportFail = new Notification(Notification.APPROACHING_DAILY_LIMIT, resourceHelper.gs(R.string.approachingdailylimit), Notification.URGENT);
rxBus.send(new EventNewNotification(reportFail));
- NSUpload.uploadError(resourceHelper.gs(R.string.approachingdailylimit) + ": " + danaRPump.getDailyTotalUnits() + "/" + danaRPump.getMaxDailyTotalUnits() + "U");
+ nsUpload.uploadError(resourceHelper.gs(R.string.approachingdailylimit) + ": " + danaPump.getDailyTotalUnits() + "/" + danaPump.getMaxDailyTotalUnits() + "U");
lastApproachingDailyLimit = System.currentTimeMillis();
}
}
@@ -221,14 +210,14 @@ public class DanaRKoreanExecutionService extends AbstractDanaRExecutionService {
public boolean tempBasal(int percent, int durationInHours) {
if (!isConnected()) return false;
- if (danaRPump.isTempBasalInProgress()) {
+ if (danaPump.isTempBasalInProgress()) {
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.stoppingtempbasal)));
- mSerialIOThread.sendMessage(new MsgSetTempBasalStop(aapsLogger));
+ mSerialIOThread.sendMessage(new MsgSetTempBasalStop(injector));
SystemClock.sleep(500);
}
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.settingtempbasal)));
- mSerialIOThread.sendMessage(new MsgSetTempBasalStart(aapsLogger, percent, durationInHours));
- mSerialIOThread.sendMessage(new MsgStatusTempBasal(aapsLogger, danaRPump, activePlugin, injector));
+ mSerialIOThread.sendMessage(new MsgSetTempBasalStart(injector, percent, durationInHours));
+ mSerialIOThread.sendMessage(new MsgStatusTempBasal(injector));
rxBus.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
}
@@ -236,8 +225,8 @@ public class DanaRKoreanExecutionService extends AbstractDanaRExecutionService {
public boolean tempBasalStop() {
if (!isConnected()) return false;
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.stoppingtempbasal)));
- mSerialIOThread.sendMessage(new MsgSetTempBasalStop(aapsLogger));
- mSerialIOThread.sendMessage(new MsgStatusTempBasal(aapsLogger, danaRPump, activePlugin, injector));
+ mSerialIOThread.sendMessage(new MsgSetTempBasalStop(injector));
+ mSerialIOThread.sendMessage(new MsgStatusTempBasal(injector));
rxBus.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
}
@@ -245,8 +234,8 @@ public class DanaRKoreanExecutionService extends AbstractDanaRExecutionService {
public boolean extendedBolus(double insulin, int durationInHalfHours) {
if (!isConnected()) return false;
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.settingextendedbolus)));
- mSerialIOThread.sendMessage(new MsgSetExtendedBolusStart(aapsLogger, constraintChecker, insulin, (byte) (durationInHalfHours & 0xFF)));
- mSerialIOThread.sendMessage(new MsgStatusBolusExtended(injector, aapsLogger, danaRPump, activePlugin));
+ mSerialIOThread.sendMessage(new MsgSetExtendedBolusStart(injector, insulin, (byte) (durationInHalfHours & 0xFF)));
+ mSerialIOThread.sendMessage(new MsgStatusBolusExtended(injector));
rxBus.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
}
@@ -254,8 +243,8 @@ public class DanaRKoreanExecutionService extends AbstractDanaRExecutionService {
public boolean extendedBolusStop() {
if (!isConnected()) return false;
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.stoppingextendedbolus)));
- mSerialIOThread.sendMessage(new MsgSetExtendedBolusStop(aapsLogger));
- mSerialIOThread.sendMessage(new MsgStatusBolusExtended(injector, aapsLogger, danaRPump, activePlugin));
+ mSerialIOThread.sendMessage(new MsgSetExtendedBolusStop(injector));
+ mSerialIOThread.sendMessage(new MsgStatusBolusExtended(injector));
rxBus.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
}
@@ -269,36 +258,37 @@ public class DanaRKoreanExecutionService extends AbstractDanaRExecutionService {
if (!isConnected()) return false;
if (BolusProgressDialog.stopPressed) return false;
- mBolusingTreatment = t;
- MsgBolusStart start = new MsgBolusStart(aapsLogger, constraintChecker, danaRPump, amount);
- danaRPump.setBolusStopped(false);
- danaRPump.setBolusStopForced(false);
+ danaPump.setBolusingTreatment(t);
+ danaPump.setBolusDone(false);
+ MsgBolusStart start = new MsgBolusStart(injector, amount);
+ danaPump.setBolusStopped(false);
+ danaPump.setBolusStopForced(false);
if (carbs > 0) {
- mSerialIOThread.sendMessage(new MsgSetCarbsEntry(aapsLogger, carbtime, carbs));
+ mSerialIOThread.sendMessage(new MsgSetCarbsEntry(injector, carbtime, carbs));
}
if (amount > 0) {
- danaRPump.setBolusingTreatment(t);
- danaRPump.setBolusAmountToBeDelivered(amount);
+ danaPump.setBolusingTreatment(t);
+ danaPump.setBolusAmountToBeDelivered(amount);
- if (!danaRPump.getBolusStopped()) {
+ if (!danaPump.getBolusStopped()) {
mSerialIOThread.sendMessage(start);
} else {
t.insulin = 0d;
return false;
}
- while (!danaRPump.getBolusStopped() && !start.failed) {
+ while (!danaPump.getBolusStopped() && !start.failed) {
SystemClock.sleep(100);
- if ((System.currentTimeMillis() - danaRPump.getBolusProgressLastTimeStamp()) > 15 * 1000L) { // if i didn't receive status for more than 15 sec expecting broken comm
- danaRPump.setBolusStopped(true);
- danaRPump.setBolusStopForced(true);
+ if ((System.currentTimeMillis() - danaPump.getBolusProgressLastTimeStamp()) > 15 * 1000L) { // if i didn't receive status for more than 15 sec expecting broken comm
+ danaPump.setBolusStopped(true);
+ danaPump.setBolusStopForced(true);
aapsLogger.debug(LTag.PUMP, "Communication stopped");
}
}
SystemClock.sleep(300);
- mBolusingTreatment = null;
+ danaPump.setBolusingTreatment(null);
commandQueue.readStatus("bolusOK", null);
}
@@ -307,7 +297,7 @@ public class DanaRKoreanExecutionService extends AbstractDanaRExecutionService {
public boolean carbsEntry(int amount) {
if (!isConnected()) return false;
- MsgSetCarbsEntry msg = new MsgSetCarbsEntry(aapsLogger, System.currentTimeMillis(), amount);
+ MsgSetCarbsEntry msg = new MsgSetCarbsEntry(injector, System.currentTimeMillis(), amount);
mSerialIOThread.sendMessage(msg);
return true;
}
@@ -325,10 +315,10 @@ public class DanaRKoreanExecutionService extends AbstractDanaRExecutionService {
public boolean updateBasalsInPump(final Profile profile) {
if (!isConnected()) return false;
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.updatingbasalrates)));
- Double[] basal = danaRPump.buildDanaRProfileRecord(profile);
- MsgSetSingleBasalProfile msgSet = new MsgSetSingleBasalProfile(aapsLogger, rxBus, resourceHelper, basal);
+ Double[] basal = danaPump.buildDanaRProfileRecord(profile);
+ MsgSetSingleBasalProfile msgSet = new MsgSetSingleBasalProfile(injector, basal);
mSerialIOThread.sendMessage(msgSet);
- danaRPump.setLastSettingsRead(0); // force read full settings
+ danaPump.setLastSettingsRead(0); // force read full settings
getPumpStatus();
rxBus.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/DanaRv2Plugin.java b/danar/src/main/java/info/nightscout/androidaps/danaRv2/DanaRv2Plugin.java
similarity index 87%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/DanaRv2Plugin.java
rename to danar/src/main/java/info/nightscout/androidaps/danaRv2/DanaRv2Plugin.java
index e783d13d78..3dc9473a18 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/DanaRv2Plugin.java
+++ b/danar/src/main/java/info/nightscout/androidaps/danaRv2/DanaRv2Plugin.java
@@ -1,4 +1,4 @@
-package info.nightscout.androidaps.plugins.pump.danaRv2;
+package info.nightscout.androidaps.danaRv2;
import android.content.ComponentName;
import android.content.Context;
@@ -12,12 +12,17 @@ import javax.inject.Inject;
import javax.inject.Singleton;
import dagger.android.HasAndroidInjector;
-import info.nightscout.androidaps.R;
+import info.nightscout.androidaps.dana.DanaPump;
+import info.nightscout.androidaps.danaRv2.services.DanaRv2ExecutionService;
+import info.nightscout.androidaps.danar.AbstractDanaRPlugin;
+import info.nightscout.androidaps.danar.R;
import info.nightscout.androidaps.data.DetailedBolusInfo;
import info.nightscout.androidaps.data.Profile;
import info.nightscout.androidaps.data.PumpEnactResult;
import info.nightscout.androidaps.db.TemporaryBasal;
+import info.nightscout.androidaps.db.Treatment;
import info.nightscout.androidaps.events.EventAppExit;
+import info.nightscout.androidaps.interfaces.ActivePluginProvider;
import info.nightscout.androidaps.interfaces.CommandQueueProvider;
import info.nightscout.androidaps.interfaces.Constraint;
import info.nightscout.androidaps.logging.AAPSLogger;
@@ -26,11 +31,6 @@ import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker;
import info.nightscout.androidaps.plugins.pump.common.bolusInfo.DetailedBolusInfoStorage;
import info.nightscout.androidaps.plugins.pump.common.defs.PumpType;
-import info.nightscout.androidaps.plugins.pump.danaR.AbstractDanaRPlugin;
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump;
-import info.nightscout.androidaps.plugins.pump.danaRv2.services.DanaRv2ExecutionService;
-import info.nightscout.androidaps.plugins.treatments.Treatment;
-import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin;
import info.nightscout.androidaps.utils.DateUtil;
import info.nightscout.androidaps.utils.FabricPrivacy;
import info.nightscout.androidaps.utils.Round;
@@ -49,7 +49,7 @@ public class DanaRv2Plugin extends AbstractDanaRPlugin {
private final ResourceHelper resourceHelper;
private final ConstraintChecker constraintChecker;
private final DetailedBolusInfoStorage detailedBolusInfoStorage;
-
+ private final FabricPrivacy fabricPrivacy;
public long lastEventTimeLoaded = 0;
public boolean eventsLoadingDone = false;
@@ -60,20 +60,23 @@ public class DanaRv2Plugin extends AbstractDanaRPlugin {
AAPSLogger aapsLogger,
RxBusWrapper rxBus,
Context context,
- DanaRPump danaRPump,
+ DanaPump danaPump,
ResourceHelper resourceHelper,
ConstraintChecker constraintChecker,
- TreatmentsPlugin treatmentsPlugin,
+ ActivePluginProvider activePlugin,
SP sp,
CommandQueueProvider commandQueue,
- DetailedBolusInfoStorage detailedBolusInfoStorage
+ DetailedBolusInfoStorage detailedBolusInfoStorage,
+ DateUtil dateUtil,
+ FabricPrivacy fabricPrivacy
) {
- super(injector, danaRPump, resourceHelper, constraintChecker, aapsLogger, commandQueue, rxBus, treatmentsPlugin, sp);
+ super(injector, danaPump, resourceHelper, constraintChecker, aapsLogger, commandQueue, rxBus, activePlugin, sp, dateUtil);
this.aapsLogger = aapsLogger;
this.context = context;
this.resourceHelper = resourceHelper;
this.constraintChecker = constraintChecker;
this.detailedBolusInfoStorage = detailedBolusInfoStorage;
+ this.fabricPrivacy = fabricPrivacy;
getPluginDescription().description(R.string.description_pump_dana_r_v2);
useExtendedBoluses = false;
@@ -88,7 +91,7 @@ public class DanaRv2Plugin extends AbstractDanaRPlugin {
disposable.add(rxBus
.toObservable(EventAppExit.class)
.observeOn(Schedulers.io())
- .subscribe(event -> context.unbindService(mConnection), exception -> FabricPrivacy.getInstance().logException(exception))
+ .subscribe(event -> context.unbindService(mConnection), fabricPrivacy::logException)
);
super.onStart();
}
@@ -134,7 +137,7 @@ public class DanaRv2Plugin extends AbstractDanaRPlugin {
@Override
public boolean isInitialized() {
- return danaRPump.getLastConnection() > 0 && danaRPump.getMaxBasal() > 0 && danaRPump.isPasswordOK();
+ return danaPump.getLastConnection() > 0 && danaPump.getMaxBasal() > 0 && danaPump.isPasswordOK();
}
@Override
@@ -188,9 +191,9 @@ public class DanaRv2Plugin extends AbstractDanaRPlugin {
result.bolusDelivered = t.insulin;
result.carbsDelivered = detailedBolusInfo.carbs;
if (!result.success)
- result.comment = String.format(resourceHelper.gs(R.string.boluserrorcode), detailedBolusInfo.insulin, t.insulin, danaRPump.getMessageStartErrorCode());
+ result.comment = String.format(resourceHelper.gs(R.string.boluserrorcode), detailedBolusInfo.insulin, t.insulin, danaPump.getBolusStartErrorCode());
else
- result.comment = resourceHelper.gs(R.string.virtualpump_resultok);
+ result.comment = resourceHelper.gs(R.string.ok);
aapsLogger.debug(LTag.PUMP, "deliverTreatment: OK. Asked: " + detailedBolusInfo.insulin + " Delivered: " + result.bolusDelivered);
// remove carbs because it's get from history separately
return result;
@@ -199,7 +202,7 @@ public class DanaRv2Plugin extends AbstractDanaRPlugin {
result.success = false;
result.bolusDelivered = 0d;
result.carbsDelivered = 0d;
- result.comment = resourceHelper.gs(R.string.danar_invalidinput);
+ result.comment = resourceHelper.gs(R.string.invalidinput);
aapsLogger.error("deliverTreatment: Invalid input");
return result;
}
@@ -227,13 +230,13 @@ public class DanaRv2Plugin extends AbstractDanaRPlugin {
absoluteRate = constraintChecker.applyBasalConstraints(new Constraint<>(absoluteRate), profile).value();
- final boolean doTempOff = getBaseBasalRate() - absoluteRate == 0d;
- final boolean doLowTemp = absoluteRate < getBaseBasalRate();
+ final boolean doTempOff = getBaseBasalRate() - absoluteRate == 0d && absoluteRate >= 0.10d;
+ final boolean doLowTemp = absoluteRate < getBaseBasalRate() || absoluteRate < 0.10d;
final boolean doHighTemp = absoluteRate > getBaseBasalRate();
if (doTempOff) {
// If temp in progress
- if (treatmentsPlugin.isTempBasalInProgress()) {
+ if (activePlugin.getActiveTreatments().isTempBasalInProgress()) {
aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Stopping temp basal (doTempOff)");
return cancelTempBasal(false);
}
@@ -248,12 +251,14 @@ public class DanaRv2Plugin extends AbstractDanaRPlugin {
if (doLowTemp || doHighTemp) {
Integer percentRate = Double.valueOf(absoluteRate / getBaseBasalRate() * 100).intValue();
+ // Any basal less than 0.10u/h will be dumped once per hour, not every 4 mins. So if it's less than .10u/h, set a zero temp.
+ if (absoluteRate < 0.10d) percentRate = 0;
if (percentRate < 100) percentRate = Round.ceilTo((double) percentRate, 10d).intValue();
else percentRate = Round.floorTo((double) percentRate, 10d).intValue();
if (percentRate > 500) // Special high temp 500/15min
percentRate = 500;
// Check if some temp is already in progress
- TemporaryBasal activeTemp = treatmentsPlugin.getTempBasalFromHistory(System.currentTimeMillis());
+ TemporaryBasal activeTemp = activePlugin.getActiveTreatments().getTempBasalFromHistory(System.currentTimeMillis());
if (activeTemp != null) {
// Correct basal already set ?
if (activeTemp.percentRate == percentRate && activeTemp.getPlannedRemainingMinutes() > 4) {
@@ -293,26 +298,26 @@ public class DanaRv2Plugin extends AbstractDanaRPlugin {
@NonNull @Override
public PumpEnactResult setTempBasalPercent(Integer percent, Integer durationInMinutes, Profile profile, boolean enforceNew) {
- DanaRPump pump = danaRPump;
+ DanaPump pump = danaPump;
PumpEnactResult result = new PumpEnactResult(getInjector());
percent = constraintChecker.applyBasalPercentConstraints(new Constraint<>(percent), profile).value();
if (percent < 0) {
result.isTempCancel = false;
result.enacted = false;
result.success = false;
- result.comment = resourceHelper.gs(R.string.danar_invalidinput);
+ result.comment = resourceHelper.gs(R.string.invalidinput);
aapsLogger.error("setTempBasalPercent: Invalid input");
return result;
}
if (percent > getPumpDescription().maxTempPercent)
percent = getPumpDescription().maxTempPercent;
long now = System.currentTimeMillis();
- TemporaryBasal activeTemp = treatmentsPlugin.getRealTempBasalFromHistory(now);
+ TemporaryBasal activeTemp = activePlugin.getActiveTreatments().getRealTempBasalFromHistory(now);
if (activeTemp != null && activeTemp.percentRate == percent && activeTemp.getPlannedRemainingMinutes() > 4 && !enforceNew) {
result.enacted = false;
result.success = true;
result.isTempCancel = false;
- result.comment = resourceHelper.gs(R.string.virtualpump_resultok);
+ result.comment = resourceHelper.gs(R.string.ok);
result.duration = pump.getTempBasalRemainingMin();
result.percent = pump.getTempBasalPercent();
result.isPercent = true;
@@ -329,7 +334,7 @@ public class DanaRv2Plugin extends AbstractDanaRPlugin {
if (connectionOK && pump.isTempBasalInProgress() && pump.getTempBasalPercent() == percent) {
result.enacted = true;
result.success = true;
- result.comment = resourceHelper.gs(R.string.virtualpump_resultok);
+ result.comment = resourceHelper.gs(R.string.ok);
result.isTempCancel = false;
result.duration = pump.getTempBasalRemainingMin();
result.percent = pump.getTempBasalPercent();
@@ -345,13 +350,13 @@ public class DanaRv2Plugin extends AbstractDanaRPlugin {
}
private PumpEnactResult setHighTempBasalPercent(Integer percent, int durationInMinutes) {
- DanaRPump pump = danaRPump;
+ DanaPump pump = danaPump;
PumpEnactResult result = new PumpEnactResult(getInjector());
boolean connectionOK = sExecutionService.highTempBasal(percent, durationInMinutes);
if (connectionOK && pump.isTempBasalInProgress() && pump.getTempBasalPercent() == percent) {
result.enacted = true;
result.success = true;
- result.comment = resourceHelper.gs(R.string.virtualpump_resultok);
+ result.comment = resourceHelper.gs(R.string.ok);
result.isTempCancel = false;
result.duration = pump.getTempBasalRemainingMin();
result.percent = pump.getTempBasalPercent();
@@ -369,16 +374,16 @@ public class DanaRv2Plugin extends AbstractDanaRPlugin {
@NonNull @Override
public PumpEnactResult cancelTempBasal(boolean force) {
PumpEnactResult result = new PumpEnactResult(getInjector());
- TemporaryBasal runningTB = treatmentsPlugin.getTempBasalFromHistory(System.currentTimeMillis());
+ TemporaryBasal runningTB = activePlugin.getActiveTreatments().getTempBasalFromHistory(System.currentTimeMillis());
if (runningTB != null) {
sExecutionService.tempBasalStop();
result.enacted = true;
result.isTempCancel = true;
}
- if (!danaRPump.isTempBasalInProgress()) {
+ if (!danaPump.isTempBasalInProgress()) {
result.success = true;
result.isTempCancel = true;
- result.comment = resourceHelper.gs(R.string.virtualpump_resultok);
+ result.comment = resourceHelper.gs(R.string.ok);
aapsLogger.debug(LTag.PUMP, "cancelRealTempBasal: OK");
return result;
} else {
diff --git a/danar/src/main/java/info/nightscout/androidaps/danaRv2/comm/MessageHashTableRv2.kt b/danar/src/main/java/info/nightscout/androidaps/danaRv2/comm/MessageHashTableRv2.kt
new file mode 100644
index 0000000000..89764534d6
--- /dev/null
+++ b/danar/src/main/java/info/nightscout/androidaps/danaRv2/comm/MessageHashTableRv2.kt
@@ -0,0 +1,81 @@
+package info.nightscout.androidaps.danaRv2.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.danar.comm.*
+import java.util.*
+import javax.inject.Inject
+import javax.inject.Singleton
+
+@Singleton
+class MessageHashTableRv2 @Inject constructor(
+ private val injector: HasAndroidInjector
+) : MessageHashTableBase {
+
+ private var messages: HashMap = HashMap()
+
+ init {
+ put(MsgBolusStop(injector)) // 0x0101 CMD_MEALINS_STOP
+ put(MsgBolusStart(injector, 0.0)) // 0x0102 CMD_MEALINS_START_DATA
+ put(MsgBolusStartWithSpeed(injector, 0.0, 0)) // 0x0104 CMD_MEALINS_START_DATA_SPEED
+ put(MsgBolusProgress(injector)) // 0x0202 CMD_PUMP_THIS_REMAINDER_MEAL_INS
+ put(MsgStatusProfile(injector)) // 0x0204 CMD_PUMP_CALCULATION_SETTING
+ put(MsgStatusTempBasal_v2(injector)) // 0x0205 CMD_PUMP_EXERCISE_MODE
+ put(MsgStatusBolusExtended_v2(injector)) // 0x0207 CMD_PUMP_EXPANS_INS_I
+ put(MsgStatusBasic(injector)) // 0x020A CMD_PUMP_INITVIEW_I
+ put(MsgStatus(injector)) // 0x020B CMD_PUMP_STATUS
+ put(MsgInitConnStatusTime(injector)) // 0x0301 CMD_PUMPINIT_TIME_INFO
+ put(MsgInitConnStatusBolus(injector)) // 0x0302 CMD_PUMPINIT_BOLUS_INFO
+ put(MsgInitConnStatusBasic(injector)) // 0x0303 CMD_PUMPINIT_INIT_INFO
+ put(MsgInitConnStatusOption(injector)) // 0x0304 CMD_PUMPINIT_OPTION
+ put(MsgSetTempBasalStart(injector, 0, 0)) // 0x0401 CMD_PUMPSET_EXERCISE_S
+ put(MsgSetCarbsEntry(injector, 0, 0)) // 0x0402 CMD_PUMPSET_HIS_S
+ put(MsgSetTempBasalStop(injector)) // 0x0403 CMD_PUMPSET_EXERCISE_STOP
+ put(MsgSetExtendedBolusStop(injector)) // 0x0406 CMD_PUMPSET_EXPANS_INS_STOP
+ put(MsgSetExtendedBolusStart(injector, 0.0, 0)) // 0x0407 CMD_PUMPSET_EXPANS_INS_S
+ put(MsgError(injector)) // 0x0601 CMD_PUMPOWAY_SYSTEM_STATUS
+ put(MsgPCCommStart(injector)) // 0x3001 CMD_CONNECT
+ put(MsgPCCommStop(injector)) // 0x3002 CMD_DISCONNECT
+ put(MsgHistoryBolus(injector)) // 0x3101 CMD_HISTORY_MEAL_INS
+ put(MsgHistoryDailyInsulin(injector)) // 0x3102 CMD_HISTORY_DAY_INS
+ put(MsgHistoryGlucose(injector)) // 0x3104 CMD_HISTORY_GLUCOSE
+ put(MsgHistoryAlarm(injector)) // 0x3105 CMD_HISTORY_ALARM
+ put(MsgHistoryError(injector)) // 0x3106 CMD_HISTORY_ERROR
+ put(MsgHistoryCarbo(injector)) // 0x3107 CMD_HISTORY_CARBOHY
+ put(MsgHistoryRefill(injector)) // 0x3108 CMD_HISTORY_REFILL
+ put(MsgHistorySuspend(injector)) // 0x3109 CMD_HISTORY_SUSPEND
+ put(MsgHistoryBasalHour(injector)) // 0x310A CMD_HISTORY_BASAL_HOUR
+ put(MsgHistoryDone(injector)) // 0x31F1 CMD_HISTORY_DONT_USED
+ put(MsgSettingBasal(injector)) // 0x3202 CMD_SETTING_V_BASAL_INS_I
+ put(MsgSettingMeal(injector)) // 0x3203 CMD_SETTING_V_MEAL_SETTING_I
+ put(MsgSettingProfileRatios(injector)) // 0x3204 CMD_SETTING_V_CCC_I
+ put(MsgSettingMaxValues(injector)) // 0x3205 CMD_SETTING_V_MAX_VALUE_I
+ put(MsgSettingBasalProfileAll(injector)) // 0x3206 CMD_SETTING_V_BASAL_PROFILE_ALL
+ put(MsgSettingShippingInfo(injector)) // 0x3207 CMD_SETTING_V_SHIPPING_I
+ put(MsgSettingGlucose(injector)) // 0x3209 CMD_SETTING_V_GLUCOSEandEASY
+ put(MsgSettingPumpTime(injector)) // 0x320A CMD_SETTING_V_TIME_I
+ put(MsgSettingUserOptions(injector)) // 0x320B CMD_SETTING_V_USER_OPTIONS
+ put(MsgSettingActiveProfile(injector)) // 0x320C CMD_SETTING_V_PROFILE_NUMBER
+ put(MsgSettingProfileRatiosAll(injector)) // 0x320D CMD_SETTING_V_CIR_CF_VALUE
+ put(MsgSetSingleBasalProfile(injector, Array(24) { 0.0 })) // 0x3302 CMD_SETTING_BASAL_INS_S
+ put(MsgSetBasalProfile(injector, 0.toByte(), Array(24) { 0.0 })) // 0x3306 CMD_SETTING_BASAL_PROFILE_S
+ put(MsgSetUserOptions(injector)) // 0x330B CMD_SETTING_USER_OPTIONS_S
+ put(MsgSetActivateBasalProfile(injector, 0.toByte())) // 0x330C CMD_SETTING_PROFILE_NUMBER_S
+ put(MsgHistoryAllDone(injector)) // 0x41F1 CMD_HISTORY_ALL_DONE
+ put(MsgHistoryAll(injector)) // 0x41F2 CMD_HISTORY_ALL
+ put(MsgHistoryNewDone(injector)) // 0x42F1 CMD_HISTORY_NEW_DONE
+ put(MsgHistoryNew(injector)) // 0x42F2 CMD_HISTORY_NEW
+ put(MsgCheckValue_v2(injector)) // 0xF0F1 CMD_PUMP_CHECK_VALUE
+ put(MsgStatusAPS_v2(injector)) // 0xE001 CMD_PUMPSTATUS_APS
+ put(MsgSetAPSTempBasalStart_v2(injector, 0, false, false)) // 0xE002 CMD_PUMPSET_APSTEMP
+ put(MsgHistoryEvents_v2(injector)) // 0xE003 CMD_GET_HISTORY
+ put(MsgSetHistoryEntry_v2(injector, 0, 0, 0, 0)) // 0xE004 CMD_SET_HISTORY_ENTRY
+ }
+
+ override fun put(message: MessageBase) {
+ messages[message.command] = message
+ }
+
+ override fun findMessage(command: Int): MessageBase {
+ return messages[command] ?: MessageBase(injector)
+ }
+}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgCheckValue_v2.kt b/danar/src/main/java/info/nightscout/androidaps/danaRv2/comm/MsgCheckValue_v2.kt
similarity index 56%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgCheckValue_v2.kt
rename to danar/src/main/java/info/nightscout/androidaps/danaRv2/comm/MsgCheckValue_v2.kt
index d680490a15..184acdec55 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgCheckValue_v2.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danaRv2/comm/MsgCheckValue_v2.kt
@@ -1,33 +1,18 @@
-package info.nightscout.androidaps.plugins.pump.danaRv2.comm
+package info.nightscout.androidaps.danaRv2.comm
-import info.nightscout.androidaps.R
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danar.R
+import info.nightscout.androidaps.danar.comm.MessageBase
import info.nightscout.androidaps.events.EventRebuildTabs
-import info.nightscout.androidaps.interfaces.CommandQueueProvider
import info.nightscout.androidaps.interfaces.PluginType
-import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag
-import info.nightscout.androidaps.plugins.bus.RxBusWrapper
-import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPlugin
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MessageBase
-import info.nightscout.androidaps.plugins.pump.danaRKorean.DanaRKoreanPlugin
-import info.nightscout.androidaps.plugins.pump.danaRv2.DanaRv2Plugin
-import info.nightscout.androidaps.utils.resources.ResourceHelper
class MsgCheckValue_v2(
- private val aapsLogger: AAPSLogger,
- private val rxBus: RxBusWrapper,
- private val resourceHelper: ResourceHelper,
- private val danaRPump: DanaRPump,
- private val danaRPlugin: DanaRPlugin,
- private val danaRKoreanPlugin: DanaRKoreanPlugin,
- private val danaRv2Plugin: DanaRv2Plugin,
- private val configBuilderPlugin: ConfigBuilderPlugin,
- private val commandQueue: CommandQueueProvider
-) : MessageBase() {
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
init {
@@ -36,13 +21,13 @@ class MsgCheckValue_v2(
}
override fun handleMessage(bytes: ByteArray) {
- danaRPump.isNewPump = true
+ danaPump.isNewPump = true
aapsLogger.debug(LTag.PUMPCOMM, "New firmware confirmed")
- danaRPump.model = intFromBuff(bytes, 0, 1)
- danaRPump.protocol = intFromBuff(bytes, 1, 1)
- danaRPump.productCode = intFromBuff(bytes, 2, 1)
- if (danaRPump.model != DanaRPump.EXPORT_MODEL) {
- danaRPump.lastConnection = 0
+ danaPump.hwModel = intFromBuff(bytes, 0, 1)
+ danaPump.protocol = intFromBuff(bytes, 1, 1)
+ danaPump.productCode = intFromBuff(bytes, 2, 1)
+ if (danaPump.hwModel != DanaPump.EXPORT_MODEL) {
+ danaPump.reset()
val notification = Notification(Notification.WRONG_DRIVER, resourceHelper.gs(R.string.pumpdrivercorrected), Notification.NORMAL)
rxBus.send(EventNewNotification(notification))
danaRPlugin.disconnect("Wrong Model")
@@ -51,15 +36,15 @@ class MsgCheckValue_v2(
danaRKoreanPlugin.setFragmentVisible(PluginType.PUMP, true)
danaRPlugin.setPluginEnabled(PluginType.PUMP, false)
danaRPlugin.setFragmentVisible(PluginType.PUMP, false)
- danaRPump.reset() // mark not initialized
+ danaPump.reset() // mark not initialized
//If profile coming from pump, switch it as well
- configBuilderPlugin.storeSettings("ChangingDanaRv2Driver")
+ configBuilder.storeSettings("ChangingDanaRv2Driver")
rxBus.send(EventRebuildTabs())
commandQueue.readStatus("PumpDriverChange", null) // force new connection
return
}
- if (danaRPump.protocol != 2) {
- danaRPump.lastConnection = 0
+ if (danaPump.protocol != 2) {
+ danaPump.reset()
val notification = Notification(Notification.WRONG_DRIVER, resourceHelper.gs(R.string.pumpdrivercorrected), Notification.NORMAL)
rxBus.send(EventNewNotification(notification))
danaRKoreanPlugin.disconnect("Wrong Model")
@@ -69,13 +54,13 @@ class MsgCheckValue_v2(
danaRPlugin.setPluginEnabled(PluginType.PUMP, true)
danaRPlugin.setFragmentVisible(PluginType.PUMP, true)
//If profile coming from pump, switch it as well
- configBuilderPlugin.storeSettings("ChangingDanaRv2Driver")
+ configBuilder.storeSettings("ChangingDanaRv2Driver")
rxBus.send(EventRebuildTabs())
commandQueue.readStatus("PumpDriverChange", null) // force new connection
return
}
- aapsLogger.debug(LTag.PUMPCOMM, "Model: " + String.format("%02X ", danaRPump.model))
- aapsLogger.debug(LTag.PUMPCOMM, "Protocol: " + String.format("%02X ", danaRPump.protocol))
- aapsLogger.debug(LTag.PUMPCOMM, "Product Code: " + String.format("%02X ", danaRPump.productCode))
+ aapsLogger.debug(LTag.PUMPCOMM, "Model: " + String.format("%02X ", danaPump.hwModel))
+ aapsLogger.debug(LTag.PUMPCOMM, "Protocol: " + String.format("%02X ", danaPump.protocol))
+ aapsLogger.debug(LTag.PUMPCOMM, "Product Code: " + String.format("%02X ", danaPump.productCode))
}
}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgHistoryEvents_v2.kt b/danar/src/main/java/info/nightscout/androidaps/danaRv2/comm/MsgHistoryEvents_v2.kt
similarity index 58%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgHistoryEvents_v2.kt
rename to danar/src/main/java/info/nightscout/androidaps/danaRv2/comm/MsgHistoryEvents_v2.kt
index 0280b0a3e6..ae2c29e8be 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgHistoryEvents_v2.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danaRv2/comm/MsgHistoryEvents_v2.kt
@@ -1,34 +1,21 @@
-package info.nightscout.androidaps.plugins.pump.danaRv2.comm
+package info.nightscout.androidaps.danaRv2.comm
import dagger.android.HasAndroidInjector
-import info.nightscout.androidaps.R
+import info.nightscout.androidaps.danar.R
+import info.nightscout.androidaps.danar.comm.MessageBase
import info.nightscout.androidaps.data.DetailedBolusInfo
import info.nightscout.androidaps.db.ExtendedBolus
import info.nightscout.androidaps.db.Source
import info.nightscout.androidaps.db.TemporaryBasal
import info.nightscout.androidaps.events.EventPumpStatusChanged
-import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag
-import info.nightscout.androidaps.plugins.bus.RxBusWrapper
-import info.nightscout.androidaps.plugins.pump.common.bolusInfo.DetailedBolusInfoStorage
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MessageBase
-import info.nightscout.androidaps.plugins.pump.danaRv2.DanaRv2Plugin
-import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin
import info.nightscout.androidaps.utils.DateUtil
-import info.nightscout.androidaps.utils.resources.ResourceHelper
import java.util.*
class MsgHistoryEvents_v2 constructor(
- val aapsLogger: AAPSLogger,
- val resourceHelper: ResourceHelper,
- private val detailedBolusInfoStorage: DetailedBolusInfoStorage,
- val danaRv2Plugin: DanaRv2Plugin,
- val rxBus: RxBusWrapper,
- val treatmentsPlugin: TreatmentsPlugin,
private val injector: HasAndroidInjector,
var from: Long = 0
-) : MessageBase() {
+) : MessageBase(injector) {
init {
SetCommand(0xE003)
@@ -73,111 +60,111 @@ class MsgHistoryEvents_v2 constructor(
.pumpId(datetime)
val status: String
when (recordCode.toInt()) {
- DanaRPump.TEMPSTART -> {
- aapsLogger.debug(LTag.PUMPBTCOMM, "EVENT TEMPSTART (" + recordCode + ") " + DateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Ratio: " + param1 + "% Duration: " + param2 + "min")
+ info.nightscout.androidaps.dana.DanaPump.TEMPSTART -> {
+ aapsLogger.debug(LTag.PUMPBTCOMM, "EVENT TEMPSTART (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Ratio: " + param1 + "% Duration: " + param2 + "min")
temporaryBasal.percentRate = param1
temporaryBasal.durationInMinutes = param2
- treatmentsPlugin.addToHistoryTempBasal(temporaryBasal)
- status = "TEMPSTART " + DateUtil.timeString(datetime)
+ activePlugin.activeTreatments.addToHistoryTempBasal(temporaryBasal)
+ status = "TEMPSTART " + dateUtil.timeString(datetime)
}
- DanaRPump.TEMPSTOP -> {
- aapsLogger.debug(LTag.PUMPBTCOMM, "EVENT TEMPSTOP (" + recordCode + ") " + DateUtil.dateAndTimeString(datetime))
- treatmentsPlugin.addToHistoryTempBasal(temporaryBasal)
- status = "TEMPSTOP " + DateUtil.timeString(datetime)
+ info.nightscout.androidaps.dana.DanaPump.TEMPSTOP -> {
+ aapsLogger.debug(LTag.PUMPBTCOMM, "EVENT TEMPSTOP (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime))
+ activePlugin.activeTreatments.addToHistoryTempBasal(temporaryBasal)
+ status = "TEMPSTOP " + dateUtil.timeString(datetime)
}
- DanaRPump.EXTENDEDSTART -> {
- aapsLogger.debug(LTag.PUMPBTCOMM, "EVENT EXTENDEDSTART (" + recordCode + ") " + DateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Amount: " + param1 / 100.0 + "U Duration: " + param2 + "min")
+ info.nightscout.androidaps.dana.DanaPump.EXTENDEDSTART -> {
+ aapsLogger.debug(LTag.PUMPBTCOMM, "EVENT EXTENDEDSTART (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Amount: " + param1 / 100.0 + "U Duration: " + param2 + "min")
extendedBolus.insulin = param1 / 100.0
extendedBolus.durationInMinutes = param2
- treatmentsPlugin.addToHistoryExtendedBolus(extendedBolus)
- status = "EXTENDEDSTART " + DateUtil.timeString(datetime)
+ activePlugin.activeTreatments.addToHistoryExtendedBolus(extendedBolus)
+ status = "EXTENDEDSTART " + dateUtil.timeString(datetime)
}
- DanaRPump.EXTENDEDSTOP -> {
- aapsLogger.debug(LTag.PUMPBTCOMM, "EVENT EXTENDEDSTOP (" + recordCode + ") " + DateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Delivered: " + param1 / 100.0 + "U RealDuration: " + param2 + "min")
- treatmentsPlugin.addToHistoryExtendedBolus(extendedBolus)
- status = "EXTENDEDSTOP " + DateUtil.timeString(datetime)
+ info.nightscout.androidaps.dana.DanaPump.EXTENDEDSTOP -> {
+ aapsLogger.debug(LTag.PUMPBTCOMM, "EVENT EXTENDEDSTOP (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Delivered: " + param1 / 100.0 + "U RealDuration: " + param2 + "min")
+ activePlugin.activeTreatments.addToHistoryExtendedBolus(extendedBolus)
+ status = "EXTENDEDSTOP " + dateUtil.timeString(datetime)
}
- DanaRPump.BOLUS -> {
+ info.nightscout.androidaps.dana.DanaPump.BOLUS -> {
val detailedBolusInfo = detailedBolusInfoStorage.findDetailedBolusInfo(datetime, param1 / 100.0)
?: DetailedBolusInfo()
detailedBolusInfo.date = datetime
detailedBolusInfo.source = Source.PUMP
detailedBolusInfo.pumpId = datetime
detailedBolusInfo.insulin = param1 / 100.0
- val newRecord = treatmentsPlugin.addToHistoryTreatment(detailedBolusInfo, false)
- aapsLogger.debug(LTag.PUMPBTCOMM, (if (newRecord) "**NEW** " else "") + "EVENT BOLUS (" + recordCode + ") " + DateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Bolus: " + param1 / 100.0 + "U Duration: " + param2 + "min")
- status = "BOLUS " + DateUtil.timeString(datetime)
+ val newRecord = activePlugin.activeTreatments.addToHistoryTreatment(detailedBolusInfo, false)
+ aapsLogger.debug(LTag.PUMPBTCOMM, (if (newRecord) "**NEW** " else "") + "EVENT BOLUS (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Bolus: " + param1 / 100.0 + "U Duration: " + param2 + "min")
+ status = "BOLUS " + dateUtil.timeString(datetime)
}
- DanaRPump.DUALBOLUS -> {
+ info.nightscout.androidaps.dana.DanaPump.DUALBOLUS -> {
val detailedBolusInfo = detailedBolusInfoStorage.findDetailedBolusInfo(datetime, param1 / 100.0)
?: DetailedBolusInfo()
detailedBolusInfo.date = datetime
detailedBolusInfo.source = Source.PUMP
detailedBolusInfo.pumpId = datetime
detailedBolusInfo.insulin = param1 / 100.0
- val newRecord = treatmentsPlugin.addToHistoryTreatment(detailedBolusInfo, false)
- aapsLogger.debug(LTag.PUMPBTCOMM, (if (newRecord) "**NEW** " else "") + "EVENT DUALBOLUS (" + recordCode + ") " + DateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Bolus: " + param1 / 100.0 + "U Duration: " + param2 + "min")
- status = "DUALBOLUS " + DateUtil.timeString(datetime)
+ val newRecord = activePlugin.activeTreatments.addToHistoryTreatment(detailedBolusInfo, false)
+ aapsLogger.debug(LTag.PUMPBTCOMM, (if (newRecord) "**NEW** " else "") + "EVENT DUALBOLUS (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Bolus: " + param1 / 100.0 + "U Duration: " + param2 + "min")
+ status = "DUALBOLUS " + dateUtil.timeString(datetime)
}
- DanaRPump.DUALEXTENDEDSTART -> {
- aapsLogger.debug(LTag.PUMPBTCOMM, "EVENT DUALEXTENDEDSTART (" + recordCode + ") " + DateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Amount: " + param1 / 100.0 + "U Duration: " + param2 + "min")
+ info.nightscout.androidaps.dana.DanaPump.DUALEXTENDEDSTART -> {
+ aapsLogger.debug(LTag.PUMPBTCOMM, "EVENT DUALEXTENDEDSTART (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Amount: " + param1 / 100.0 + "U Duration: " + param2 + "min")
extendedBolus.insulin = param1 / 100.0
extendedBolus.durationInMinutes = param2
- treatmentsPlugin.addToHistoryExtendedBolus(extendedBolus)
- status = "DUALEXTENDEDSTART " + DateUtil.timeString(datetime)
+ activePlugin.activeTreatments.addToHistoryExtendedBolus(extendedBolus)
+ status = "DUALEXTENDEDSTART " + dateUtil.timeString(datetime)
}
- DanaRPump.DUALEXTENDEDSTOP -> {
- aapsLogger.debug(LTag.PUMPBTCOMM, "EVENT DUALEXTENDEDSTOP (" + recordCode + ") " + DateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Delivered: " + param1 / 100.0 + "U RealDuration: " + param2 + "min")
- treatmentsPlugin.addToHistoryExtendedBolus(extendedBolus)
- status = "DUALEXTENDEDSTOP " + DateUtil.timeString(datetime)
+ info.nightscout.androidaps.dana.DanaPump.DUALEXTENDEDSTOP -> {
+ aapsLogger.debug(LTag.PUMPBTCOMM, "EVENT DUALEXTENDEDSTOP (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Delivered: " + param1 / 100.0 + "U RealDuration: " + param2 + "min")
+ activePlugin.activeTreatments.addToHistoryExtendedBolus(extendedBolus)
+ status = "DUALEXTENDEDSTOP " + dateUtil.timeString(datetime)
}
- DanaRPump.SUSPENDON -> {
- aapsLogger.debug(LTag.PUMPBTCOMM, "EVENT SUSPENDON (" + recordCode + ") " + DateUtil.dateAndTimeString(datetime) + " (" + datetime + ")")
- status = "SUSPENDON " + DateUtil.timeString(datetime)
+ info.nightscout.androidaps.dana.DanaPump.SUSPENDON -> {
+ aapsLogger.debug(LTag.PUMPBTCOMM, "EVENT SUSPENDON (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")")
+ status = "SUSPENDON " + dateUtil.timeString(datetime)
}
- DanaRPump.SUSPENDOFF -> {
- aapsLogger.debug(LTag.PUMPBTCOMM, "EVENT SUSPENDOFF (" + recordCode + ") " + DateUtil.dateAndTimeString(datetime) + " (" + datetime + ")")
- status = "SUSPENDOFF " + DateUtil.timeString(datetime)
+ info.nightscout.androidaps.dana.DanaPump.SUSPENDOFF -> {
+ aapsLogger.debug(LTag.PUMPBTCOMM, "EVENT SUSPENDOFF (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")")
+ status = "SUSPENDOFF " + dateUtil.timeString(datetime)
}
- DanaRPump.REFILL -> {
- aapsLogger.debug(LTag.PUMPBTCOMM, "EVENT REFILL (" + recordCode + ") " + DateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Amount: " + param1 / 100.0 + "U")
- status = "REFILL " + DateUtil.timeString(datetime)
+ info.nightscout.androidaps.dana.DanaPump.REFILL -> {
+ aapsLogger.debug(LTag.PUMPBTCOMM, "EVENT REFILL (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Amount: " + param1 / 100.0 + "U")
+ status = "REFILL " + dateUtil.timeString(datetime)
}
- DanaRPump.PRIME -> {
- aapsLogger.debug(LTag.PUMPBTCOMM, "EVENT PRIME (" + recordCode + ") " + DateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Amount: " + param1 / 100.0 + "U")
- status = "PRIME " + DateUtil.timeString(datetime)
+ info.nightscout.androidaps.dana.DanaPump.PRIME -> {
+ aapsLogger.debug(LTag.PUMPBTCOMM, "EVENT PRIME (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Amount: " + param1 / 100.0 + "U")
+ status = "PRIME " + dateUtil.timeString(datetime)
}
- DanaRPump.PROFILECHANGE -> {
- aapsLogger.debug(LTag.PUMPBTCOMM, "EVENT PROFILECHANGE (" + recordCode + ") " + DateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " No: " + param1 + " CurrentRate: " + param2 / 100.0 + "U/h")
- status = "PROFILECHANGE " + DateUtil.timeString(datetime)
+ info.nightscout.androidaps.dana.DanaPump.PROFILECHANGE -> {
+ aapsLogger.debug(LTag.PUMPBTCOMM, "EVENT PROFILECHANGE (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " No: " + param1 + " CurrentRate: " + param2 / 100.0 + "U/h")
+ status = "PROFILECHANGE " + dateUtil.timeString(datetime)
}
- DanaRPump.CARBS -> {
+ info.nightscout.androidaps.dana.DanaPump.CARBS -> {
val emptyCarbsInfo = DetailedBolusInfo()
emptyCarbsInfo.carbs = param1.toDouble()
emptyCarbsInfo.date = datetime
emptyCarbsInfo.source = Source.PUMP
emptyCarbsInfo.pumpId = datetime
- val newRecord = treatmentsPlugin.addToHistoryTreatment(emptyCarbsInfo, false)
- aapsLogger.debug(LTag.PUMPBTCOMM, (if (newRecord) "**NEW** " else "") + "EVENT CARBS (" + recordCode + ") " + DateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Carbs: " + param1 + "g")
- status = "CARBS " + DateUtil.timeString(datetime)
+ val newRecord = activePlugin.activeTreatments.addToHistoryTreatment(emptyCarbsInfo, false)
+ aapsLogger.debug(LTag.PUMPBTCOMM, (if (newRecord) "**NEW** " else "") + "EVENT CARBS (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Carbs: " + param1 + "g")
+ status = "CARBS " + dateUtil.timeString(datetime)
}
- else -> {
- aapsLogger.debug(LTag.PUMPBTCOMM, "Event: " + recordCode + " " + DateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Param1: " + param1 + " Param2: " + param2)
- status = "UNKNOWN " + DateUtil.timeString(datetime)
+ else -> {
+ aapsLogger.debug(LTag.PUMPBTCOMM, "Event: " + recordCode + " " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Param1: " + param1 + " Param2: " + param2)
+ status = "UNKNOWN " + dateUtil.timeString(datetime)
}
}
if (datetime > danaRv2Plugin.lastEventTimeLoaded) danaRv2Plugin.lastEventTimeLoaded = datetime
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgSetAPSTempBasalStart_v2.kt b/danar/src/main/java/info/nightscout/androidaps/danaRv2/comm/MsgSetAPSTempBasalStart_v2.kt
similarity index 83%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgSetAPSTempBasalStart_v2.kt
rename to danar/src/main/java/info/nightscout/androidaps/danaRv2/comm/MsgSetAPSTempBasalStart_v2.kt
index 95d2b56b77..cd1d36e29c 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgSetAPSTempBasalStart_v2.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danaRv2/comm/MsgSetAPSTempBasalStart_v2.kt
@@ -1,15 +1,16 @@
-package info.nightscout.androidaps.plugins.pump.danaRv2.comm
+package info.nightscout.androidaps.danaRv2.comm
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.danar.comm.MessageBase
import info.nightscout.androidaps.logging.LTag
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MessageBase
+@Suppress("UNUSED_PARAMETER")
class MsgSetAPSTempBasalStart_v2(
- private val aapsLogger: AAPSLogger,
+ injector: HasAndroidInjector,
private var percent: Int,
fifteenMinutes: Boolean,
thirtyMinutes: Boolean
-) : MessageBase() {
+) : MessageBase(injector) {
val PARAM30MIN = 160
val PARAM15MIN = 150
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgSetHistoryEntry_v2.kt b/danar/src/main/java/info/nightscout/androidaps/danaRv2/comm/MsgSetHistoryEntry_v2.kt
similarity index 79%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgSetHistoryEntry_v2.kt
rename to danar/src/main/java/info/nightscout/androidaps/danaRv2/comm/MsgSetHistoryEntry_v2.kt
index b0d8777efa..c19a3912a7 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgSetHistoryEntry_v2.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danaRv2/comm/MsgSetHistoryEntry_v2.kt
@@ -1,14 +1,14 @@
-package info.nightscout.androidaps.plugins.pump.danaRv2.comm
+package info.nightscout.androidaps.danaRv2.comm
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.danar.comm.MessageBase
import info.nightscout.androidaps.logging.LTag
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MessageBase
import java.util.*
class MsgSetHistoryEntry_v2(
- private val aapsLogger: AAPSLogger,
+ injector: HasAndroidInjector,
type: Int, time: Long, param1: Int, param2: Int
-) : MessageBase() {
+) : MessageBase(injector) {
init {
SetCommand(0xE004)
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgStatusAPS_v2.kt b/danar/src/main/java/info/nightscout/androidaps/danaRv2/comm/MsgStatusAPS_v2.kt
similarity index 56%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgStatusAPS_v2.kt
rename to danar/src/main/java/info/nightscout/androidaps/danaRv2/comm/MsgStatusAPS_v2.kt
index 1821c17321..383d190a48 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgStatusAPS_v2.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danaRv2/comm/MsgStatusAPS_v2.kt
@@ -1,14 +1,12 @@
-package info.nightscout.androidaps.plugins.pump.danaRv2.comm
+package info.nightscout.androidaps.danaRv2.comm
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.danar.comm.MessageBase
import info.nightscout.androidaps.logging.LTag
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MessageBase
class MsgStatusAPS_v2(
- private val aapsLogger: AAPSLogger,
- private val danaRPump: DanaRPump
-) : MessageBase() {
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
init {
SetCommand(0xE001)
@@ -18,7 +16,7 @@ class MsgStatusAPS_v2(
override fun handleMessage(bytes: ByteArray) {
val iob = intFromBuff(bytes, 0, 2) / 100.0
val deliveredSoFar = intFromBuff(bytes, 2, 2) / 100.0
- danaRPump.iob = iob
+ danaPump.iob = iob
aapsLogger.debug(LTag.PUMPCOMM, "Delivered so far: $deliveredSoFar")
aapsLogger.debug(LTag.PUMPCOMM, "Current pump IOB: $iob")
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgStatusBolusExtended_v2.kt b/danar/src/main/java/info/nightscout/androidaps/danaRv2/comm/MsgStatusBolusExtended_v2.kt
similarity index 71%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgStatusBolusExtended_v2.kt
rename to danar/src/main/java/info/nightscout/androidaps/danaRv2/comm/MsgStatusBolusExtended_v2.kt
index b769b8a8f8..f0afbabcb2 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgStatusBolusExtended_v2.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danaRv2/comm/MsgStatusBolusExtended_v2.kt
@@ -1,15 +1,13 @@
-package info.nightscout.androidaps.plugins.pump.danaRv2.comm
+package info.nightscout.androidaps.danaRv2.comm
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.danar.comm.MessageBase
import info.nightscout.androidaps.logging.LTag
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MessageBase
import kotlin.math.ceil
class MsgStatusBolusExtended_v2(
- private val aapsLogger: AAPSLogger,
- private val danaRPump: DanaRPump
-) : MessageBase() {
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
init {
SetCommand(0x0207)
@@ -29,13 +27,13 @@ class MsgStatusBolusExtended_v2(
val extendedBolusAbsoluteRate = if (isExtendedInProgress) extendedBolusAmount / extendedBolusMinutes * 60 else 0.0
val extendedBolusStart = if (isExtendedInProgress) getDateFromSecAgo(extendedBolusSoFarInSecs) else 0
val extendedBolusRemainingMinutes = extendedBolusMinutes - extendedBolusSoFarInMinutes
- danaRPump.isExtendedInProgress = isExtendedInProgress
- danaRPump.extendedBolusMinutes = extendedBolusMinutes
- danaRPump.extendedBolusAmount = extendedBolusAmount
- danaRPump.extendedBolusSoFarInMinutes = extendedBolusSoFarInMinutes
- danaRPump.extendedBolusAbsoluteRate = extendedBolusAbsoluteRate
- danaRPump.extendedBolusStart = extendedBolusStart
- danaRPump.extendedBolusRemainingMinutes = extendedBolusRemainingMinutes
+ danaPump.isExtendedInProgress = isExtendedInProgress
+ danaPump.extendedBolusMinutes = extendedBolusMinutes
+ danaPump.extendedBolusAmount = extendedBolusAmount
+ danaPump.extendedBolusSoFarInMinutes = extendedBolusSoFarInMinutes
+ danaPump.extendedBolusAbsoluteRate = extendedBolusAbsoluteRate
+ danaPump.extendedBolusStart = extendedBolusStart
+ danaPump.extendedBolusRemainingMinutes = extendedBolusRemainingMinutes
aapsLogger.debug(LTag.PUMPCOMM, "Is extended bolus running: $isExtendedInProgress")
aapsLogger.debug(LTag.PUMPCOMM, "Extended bolus min: $extendedBolusMinutes")
aapsLogger.debug(LTag.PUMPCOMM, "Extended bolus amount: $extendedBolusAmount")
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgStatusTempBasal_v2.kt b/danar/src/main/java/info/nightscout/androidaps/danaRv2/comm/MsgStatusTempBasal_v2.kt
similarity index 69%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgStatusTempBasal_v2.kt
rename to danar/src/main/java/info/nightscout/androidaps/danaRv2/comm/MsgStatusTempBasal_v2.kt
index ac21c3f533..53f2c81e1d 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/comm/MsgStatusTempBasal_v2.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danaRv2/comm/MsgStatusTempBasal_v2.kt
@@ -1,17 +1,13 @@
-package info.nightscout.androidaps.plugins.pump.danaRv2.comm
+package info.nightscout.androidaps.danaRv2.comm
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.danar.comm.MessageBase
import info.nightscout.androidaps.logging.LTag
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MessageBase
-import info.nightscout.androidaps.utils.DateUtil
import kotlin.math.ceil
class MsgStatusTempBasal_v2(
- private val aapsLogger: AAPSLogger,
- private val danaRPump: DanaRPump
-
-) : MessageBase() {
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
init {
SetCommand(0x0205)
@@ -27,17 +23,17 @@ class MsgStatusTempBasal_v2(
val tempBasalRunningSeconds = intFromBuff(bytes, 3, 3)
val tempBasalRemainingMin = (tempBasalTotalSec - tempBasalRunningSeconds) / 60
val tempBasalStart = if (isTempBasalInProgress) getDateFromTempBasalSecAgo(tempBasalRunningSeconds) else 0
- danaRPump.isTempBasalInProgress = isTempBasalInProgress
- danaRPump.tempBasalPercent = tempBasalPercent
- danaRPump.tempBasalRemainingMin = tempBasalRemainingMin
- danaRPump.tempBasalTotalSec = tempBasalTotalSec
- danaRPump.tempBasalStart = tempBasalStart
+ danaPump.isTempBasalInProgress = isTempBasalInProgress
+ danaPump.tempBasalPercent = tempBasalPercent
+ danaPump.tempBasalRemainingMin = tempBasalRemainingMin
+ danaPump.tempBasalTotalSec = tempBasalTotalSec
+ danaPump.tempBasalStart = tempBasalStart
aapsLogger.debug(LTag.PUMPCOMM, "Is temp basal running: $isTempBasalInProgress")
aapsLogger.debug(LTag.PUMPCOMM, "Is APS temp basal running: $isAPSTempBasalInProgress")
aapsLogger.debug(LTag.PUMPCOMM, "Current temp basal percent: $tempBasalPercent")
aapsLogger.debug(LTag.PUMPCOMM, "Current temp basal remaining min: $tempBasalRemainingMin")
aapsLogger.debug(LTag.PUMPCOMM, "Current temp basal total sec: $tempBasalTotalSec")
- aapsLogger.debug(LTag.PUMPCOMM, "Current temp basal start: " + DateUtil.dateAndTimeString(tempBasalStart))
+ aapsLogger.debug(LTag.PUMPCOMM, "Current temp basal start: " + dateUtil.dateAndTimeString(tempBasalStart))
}
private fun getDateFromTempBasalSecAgo(tempBasalAgoSecs: Int): Long {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/services/DanaRv2ExecutionService.java b/danar/src/main/java/info/nightscout/androidaps/danaRv2/services/DanaRv2ExecutionService.java
similarity index 64%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/services/DanaRv2ExecutionService.java
rename to danar/src/main/java/info/nightscout/androidaps/danaRv2/services/DanaRv2ExecutionService.java
index 564b59e77f..41267b5854 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRv2/services/DanaRv2ExecutionService.java
+++ b/danar/src/main/java/info/nightscout/androidaps/danaRv2/services/DanaRv2ExecutionService.java
@@ -1,92 +1,83 @@
-package info.nightscout.androidaps.plugins.pump.danaRv2.services;
+package info.nightscout.androidaps.danaRv2.services;
-import android.bluetooth.BluetoothDevice;
import android.content.Context;
import android.content.Intent;
-import android.content.IntentFilter;
import android.os.Binder;
import android.os.SystemClock;
import java.io.IOException;
-import java.util.Date;
import javax.inject.Inject;
import dagger.android.HasAndroidInjector;
import info.nightscout.androidaps.Constants;
-import info.nightscout.androidaps.R;
import info.nightscout.androidaps.activities.ErrorHelperActivity;
+import info.nightscout.androidaps.dana.DanaPump;
+import info.nightscout.androidaps.dana.events.EventDanaRNewStatus;
+import info.nightscout.androidaps.danaRKorean.DanaRKoreanPlugin;
+import info.nightscout.androidaps.danaRv2.DanaRv2Plugin;
+import info.nightscout.androidaps.danaRv2.comm.MessageHashTableRv2;
+import info.nightscout.androidaps.danaRv2.comm.MsgCheckValue_v2;
+import info.nightscout.androidaps.danaRv2.comm.MsgHistoryEvents_v2;
+import info.nightscout.androidaps.danaRv2.comm.MsgSetAPSTempBasalStart_v2;
+import info.nightscout.androidaps.danaRv2.comm.MsgSetHistoryEntry_v2;
+import info.nightscout.androidaps.danaRv2.comm.MsgStatusBolusExtended_v2;
+import info.nightscout.androidaps.danaRv2.comm.MsgStatusTempBasal_v2;
+import info.nightscout.androidaps.danar.DanaRPlugin;
+import info.nightscout.androidaps.danar.R;
+import info.nightscout.androidaps.danar.SerialIOThread;
+import info.nightscout.androidaps.danar.comm.MessageBase;
+import info.nightscout.androidaps.danar.comm.MsgBolusStart;
+import info.nightscout.androidaps.danar.comm.MsgBolusStartWithSpeed;
+import info.nightscout.androidaps.danar.comm.MsgSetActivateBasalProfile;
+import info.nightscout.androidaps.danar.comm.MsgSetBasalProfile;
+import info.nightscout.androidaps.danar.comm.MsgSetCarbsEntry;
+import info.nightscout.androidaps.danar.comm.MsgSetExtendedBolusStart;
+import info.nightscout.androidaps.danar.comm.MsgSetExtendedBolusStop;
+import info.nightscout.androidaps.danar.comm.MsgSetTempBasalStart;
+import info.nightscout.androidaps.danar.comm.MsgSetTempBasalStop;
+import info.nightscout.androidaps.danar.comm.MsgSetTime;
+import info.nightscout.androidaps.danar.comm.MsgSetUserOptions;
+import info.nightscout.androidaps.danar.comm.MsgSettingActiveProfile;
+import info.nightscout.androidaps.danar.comm.MsgSettingBasal;
+import info.nightscout.androidaps.danar.comm.MsgSettingGlucose;
+import info.nightscout.androidaps.danar.comm.MsgSettingMaxValues;
+import info.nightscout.androidaps.danar.comm.MsgSettingMeal;
+import info.nightscout.androidaps.danar.comm.MsgSettingProfileRatios;
+import info.nightscout.androidaps.danar.comm.MsgSettingProfileRatiosAll;
+import info.nightscout.androidaps.danar.comm.MsgSettingPumpTime;
+import info.nightscout.androidaps.danar.comm.MsgSettingShippingInfo;
+import info.nightscout.androidaps.danar.comm.MsgSettingUserOptions;
+import info.nightscout.androidaps.danar.comm.MsgStatus;
+import info.nightscout.androidaps.danar.comm.MsgStatusBasic;
+import info.nightscout.androidaps.danar.services.AbstractDanaRExecutionService;
import info.nightscout.androidaps.data.Profile;
import info.nightscout.androidaps.data.PumpEnactResult;
+import info.nightscout.androidaps.db.Treatment;
import info.nightscout.androidaps.dialogs.BolusProgressDialog;
-import info.nightscout.androidaps.events.EventAppExit;
import info.nightscout.androidaps.events.EventInitializationChanged;
-import info.nightscout.androidaps.events.EventPreferenceChange;
import info.nightscout.androidaps.events.EventProfileNeedsUpdate;
import info.nightscout.androidaps.events.EventPumpStatusChanged;
import info.nightscout.androidaps.interfaces.ActivePluginProvider;
import info.nightscout.androidaps.interfaces.CommandQueueProvider;
+import info.nightscout.androidaps.interfaces.ConfigBuilderInterface;
+import info.nightscout.androidaps.interfaces.ProfileFunction;
import info.nightscout.androidaps.interfaces.PumpInterface;
import info.nightscout.androidaps.logging.AAPSLogger;
import info.nightscout.androidaps.logging.LTag;
import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
-import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin;
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker;
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction;
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload;
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification;
import info.nightscout.androidaps.plugins.general.overview.events.EventOverviewBolusProgress;
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification;
import info.nightscout.androidaps.plugins.pump.common.bolusInfo.DetailedBolusInfoStorage;
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPlugin;
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump;
-import info.nightscout.androidaps.plugins.pump.danaR.SerialIOThread;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MessageBase;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgBolusStart;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgBolusStartWithSpeed;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSetActivateBasalProfile;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSetBasalProfile;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSetCarbsEntry;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSetExtendedBolusStart;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSetExtendedBolusStop;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSetTempBasalStart;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSetTempBasalStop;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSetTime;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSetUserOptions;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSettingActiveProfile;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSettingBasal;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSettingGlucose;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSettingMaxValues;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSettingMeal;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSettingProfileRatios;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSettingProfileRatiosAll;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSettingPumpTime;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSettingShippingInfo;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSettingUserOptions;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgStatus;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgStatusBasic;
-import info.nightscout.androidaps.plugins.pump.danaR.events.EventDanaRNewStatus;
-import info.nightscout.androidaps.plugins.pump.danaR.services.AbstractDanaRExecutionService;
-import info.nightscout.androidaps.plugins.pump.danaRKorean.DanaRKoreanPlugin;
-import info.nightscout.androidaps.plugins.pump.danaRv2.DanaRv2Plugin;
-import info.nightscout.androidaps.plugins.pump.danaRv2.comm.MessageHashTableRv2;
-import info.nightscout.androidaps.plugins.pump.danaRv2.comm.MsgCheckValue_v2;
-import info.nightscout.androidaps.plugins.pump.danaRv2.comm.MsgHistoryEvents_v2;
-import info.nightscout.androidaps.plugins.pump.danaRv2.comm.MsgSetAPSTempBasalStart_v2;
-import info.nightscout.androidaps.plugins.pump.danaRv2.comm.MsgSetHistoryEntry_v2;
-import info.nightscout.androidaps.plugins.pump.danaRv2.comm.MsgStatusBolusExtended_v2;
-import info.nightscout.androidaps.plugins.pump.danaRv2.comm.MsgStatusTempBasal_v2;
-import info.nightscout.androidaps.plugins.treatments.Treatment;
-import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin;
import info.nightscout.androidaps.queue.Callback;
import info.nightscout.androidaps.queue.commands.Command;
import info.nightscout.androidaps.utils.DateUtil;
-import info.nightscout.androidaps.utils.FabricPrivacy;
import info.nightscout.androidaps.utils.T;
import info.nightscout.androidaps.utils.resources.ResourceHelper;
import info.nightscout.androidaps.utils.sharedPreferences.SP;
-import io.reactivex.disposables.CompositeDisposable;
-import io.reactivex.schedulers.Schedulers;
public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
@Inject HasAndroidInjector injector;
@@ -94,19 +85,21 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
@Inject RxBusWrapper rxBus;
@Inject ResourceHelper resourceHelper;
@Inject ConstraintChecker constraintChecker;
- @Inject DanaRPump danaRPump;
+ @Inject DanaPump danaPump;
@Inject DanaRPlugin danaRPlugin;
@Inject DanaRKoreanPlugin danaRKoreanPlugin;
@Inject DanaRv2Plugin danaRv2Plugin;
@Inject ActivePluginProvider activePlugin;
- @Inject ConfigBuilderPlugin configBuilderPlugin;
+ @Inject ConfigBuilderInterface configBuilderPlugin;
@Inject CommandQueueProvider commandQueue;
@Inject Context context;
@Inject MessageHashTableRv2 messageHashTableRv2;
@Inject DetailedBolusInfoStorage detailedBolusInfoStorage;
- @Inject TreatmentsPlugin treatmentsPlugin;
+ @Inject ActivePluginProvider activePluginProvider;
@Inject ProfileFunction profileFunction;
+ @Inject NSUpload nsUpload;
@Inject SP sp;
+ @Inject DateUtil dateUtil;
private long lastHistoryFetched = 0;
@@ -151,7 +144,7 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
if (mSerialIOThread != null) {
mSerialIOThread.disconnect("Recreate SerialIOThread");
}
- mSerialIOThread = new SerialIOThread(mRfcommSocket, messageHashTableRv2, danaRPump);
+ mSerialIOThread = new SerialIOThread(aapsLogger, mRfcommSocket, messageHashTableRv2, danaPump);
mHandshakeInProgress = true;
rxBus.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.HANDSHAKING, 0));
}
@@ -163,13 +156,13 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
public void getPumpStatus() {
try {
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.gettingpumpstatus)));
- MsgStatus statusMsg = new MsgStatus(aapsLogger, danaRPump);
- MsgStatusBasic statusBasicMsg = new MsgStatusBasic(aapsLogger, danaRPump);
- MsgStatusTempBasal_v2 tempStatusMsg = new MsgStatusTempBasal_v2(aapsLogger, danaRPump);
- MsgStatusBolusExtended_v2 exStatusMsg = new MsgStatusBolusExtended_v2(aapsLogger, danaRPump);
- MsgCheckValue_v2 checkValue = new MsgCheckValue_v2(aapsLogger, rxBus, resourceHelper, danaRPump, danaRPlugin, danaRKoreanPlugin, danaRv2Plugin, configBuilderPlugin, commandQueue);
+ MsgStatus statusMsg = new MsgStatus(injector);
+ MsgStatusBasic statusBasicMsg = new MsgStatusBasic(injector);
+ MsgStatusTempBasal_v2 tempStatusMsg = new MsgStatusTempBasal_v2(injector);
+ MsgStatusBolusExtended_v2 exStatusMsg = new MsgStatusBolusExtended_v2(injector);
+ MsgCheckValue_v2 checkValue = new MsgCheckValue_v2(injector);
- if (danaRPump.isNewPump()) {
+ if (danaPump.isNewPump()) {
mSerialIOThread.sendMessage(checkValue);
if (!checkValue.received) {
return;
@@ -184,30 +177,29 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.gettingextendedbolusstatus)));
mSerialIOThread.sendMessage(exStatusMsg);
- danaRPump.setLastConnection(System.currentTimeMillis());
+ danaPump.setLastConnection(System.currentTimeMillis());
Profile profile = profileFunction.getProfile();
PumpInterface pump = activePlugin.getActivePump();
- if (profile != null && Math.abs(danaRPump.getCurrentBasal() - profile.getBasal()) >= pump.getPumpDescription().basalStep) {
+ if (profile != null && Math.abs(danaPump.getCurrentBasal() - profile.getBasal()) >= pump.getPumpDescription().basalStep) {
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.gettingpumpsettings)));
- mSerialIOThread.sendMessage(new MsgSettingBasal(aapsLogger, danaRPump, danaRPlugin));
+ mSerialIOThread.sendMessage(new MsgSettingBasal(injector));
if (!pump.isThisProfileSet(profile) && !commandQueue.isRunning(Command.CommandType.BASAL_PROFILE)) {
rxBus.send(new EventProfileNeedsUpdate());
}
}
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.gettingpumptime)));
- mSerialIOThread.sendMessage(new MsgSettingPumpTime(aapsLogger, danaRPump));
- if (danaRPump.getPumpTime() == 0) {
+ mSerialIOThread.sendMessage(new MsgSettingPumpTime(injector));
+ if (danaPump.getPumpTime() == 0) {
// initial handshake was not successfull
// deinitialize pump
- danaRPump.setLastConnection(0);
- danaRPump.setLastSettingsRead(0);
+ danaPump.reset();
rxBus.send(new EventDanaRNewStatus());
rxBus.send(new EventInitializationChanged());
return;
}
- long timeDiff = (danaRPump.getPumpTime() - System.currentTimeMillis()) / 1000L;
+ long timeDiff = (danaPump.getPumpTime() - System.currentTimeMillis()) / 1000L;
aapsLogger.debug(LTag.PUMP, "Pump time difference: " + timeDiff + " seconds");
if (Math.abs(timeDiff) > 3) {
if (Math.abs(timeDiff) > 60 * 60 * 1.5) {
@@ -221,35 +213,35 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
context.startActivity(i);
//deinitialize pump
- danaRPump.setLastConnection(0);
+ danaPump.reset();
rxBus.send(new EventDanaRNewStatus());
rxBus.send(new EventInitializationChanged());
return;
} else {
waitForWholeMinute(); // Dana can set only whole minute
// add 10sec to be sure we are over minute (will be cutted off anyway)
- mSerialIOThread.sendMessage(new MsgSetTime(aapsLogger, new Date(DateUtil.now() + T.secs(10).msecs())));
- mSerialIOThread.sendMessage(new MsgSettingPumpTime(aapsLogger, danaRPump));
- timeDiff = (danaRPump.getPumpTime() - System.currentTimeMillis()) / 1000L;
+ mSerialIOThread.sendMessage(new MsgSetTime(injector, DateUtil.now() + T.secs(10).msecs()));
+ mSerialIOThread.sendMessage(new MsgSettingPumpTime(injector));
+ timeDiff = (danaPump.getPumpTime() - System.currentTimeMillis()) / 1000L;
aapsLogger.debug(LTag.PUMP, "Pump time difference: " + timeDiff + " seconds");
}
}
long now = System.currentTimeMillis();
- if (danaRPump.getLastSettingsRead() + 60 * 60 * 1000L < now || !pump.isInitialized()) {
+ if (danaPump.getLastSettingsRead() + 60 * 60 * 1000L < now || !pump.isInitialized()) {
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.gettingpumpsettings)));
- mSerialIOThread.sendMessage(new MsgSettingShippingInfo(aapsLogger, danaRPump));
- mSerialIOThread.sendMessage(new MsgSettingActiveProfile(aapsLogger, danaRPump));
- mSerialIOThread.sendMessage(new MsgSettingMeal(aapsLogger, rxBus, resourceHelper, danaRPump, danaRKoreanPlugin));
- mSerialIOThread.sendMessage(new MsgSettingBasal(aapsLogger, danaRPump, danaRPlugin));
+ mSerialIOThread.sendMessage(new MsgSettingShippingInfo(injector));
+ mSerialIOThread.sendMessage(new MsgSettingActiveProfile(injector));
+ mSerialIOThread.sendMessage(new MsgSettingMeal(injector));
+ mSerialIOThread.sendMessage(new MsgSettingBasal(injector));
//0x3201
- mSerialIOThread.sendMessage(new MsgSettingMaxValues(aapsLogger, danaRPump));
- mSerialIOThread.sendMessage(new MsgSettingGlucose(aapsLogger, danaRPump));
- mSerialIOThread.sendMessage(new MsgSettingActiveProfile(aapsLogger, danaRPump));
- mSerialIOThread.sendMessage(new MsgSettingProfileRatios(aapsLogger, danaRPump));
- mSerialIOThread.sendMessage(new MsgSettingUserOptions(aapsLogger, danaRPump));
- mSerialIOThread.sendMessage(new MsgSettingProfileRatiosAll(aapsLogger, danaRPump));
- danaRPump.setLastSettingsRead(now);
+ mSerialIOThread.sendMessage(new MsgSettingMaxValues(injector));
+ mSerialIOThread.sendMessage(new MsgSettingGlucose(injector));
+ mSerialIOThread.sendMessage(new MsgSettingActiveProfile(injector));
+ mSerialIOThread.sendMessage(new MsgSettingProfileRatios(injector));
+ mSerialIOThread.sendMessage(new MsgSettingUserOptions(injector));
+ mSerialIOThread.sendMessage(new MsgSettingProfileRatiosAll(injector));
+ danaPump.setLastSettingsRead(now);
}
loadEvents();
@@ -257,12 +249,12 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
rxBus.send(new EventDanaRNewStatus());
rxBus.send(new EventInitializationChanged());
//NSUpload.uploadDeviceStatus();
- if (danaRPump.getDailyTotalUnits() > danaRPump.getMaxDailyTotalUnits() * Constants.dailyLimitWarning) {
- aapsLogger.debug(LTag.PUMP, "Approaching daily limit: " + danaRPump.getDailyTotalUnits() + "/" + danaRPump.getMaxDailyTotalUnits());
+ if (danaPump.getDailyTotalUnits() > danaPump.getMaxDailyTotalUnits() * Constants.dailyLimitWarning) {
+ aapsLogger.debug(LTag.PUMP, "Approaching daily limit: " + danaPump.getDailyTotalUnits() + "/" + danaPump.getMaxDailyTotalUnits());
if (System.currentTimeMillis() > lastApproachingDailyLimit + 30 * 60 * 1000) {
Notification reportFail = new Notification(Notification.APPROACHING_DAILY_LIMIT, resourceHelper.gs(R.string.approachingdailylimit), Notification.URGENT);
rxBus.send(new EventNewNotification(reportFail));
- NSUpload.uploadError(resourceHelper.gs(R.string.approachingdailylimit) + ": " + danaRPump.getDailyTotalUnits() + "/" + danaRPump.getMaxDailyTotalUnits() + "U");
+ nsUpload.uploadError(resourceHelper.gs(R.string.approachingdailylimit) + ": " + danaPump.getDailyTotalUnits() + "/" + danaPump.getMaxDailyTotalUnits() + "U");
lastApproachingDailyLimit = System.currentTimeMillis();
}
}
@@ -273,14 +265,14 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
public boolean tempBasal(int percent, int durationInHours) {
if (!isConnected()) return false;
- if (danaRPump.isTempBasalInProgress()) {
+ if (danaPump.isTempBasalInProgress()) {
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.stoppingtempbasal)));
- mSerialIOThread.sendMessage(new MsgSetTempBasalStop(aapsLogger));
+ mSerialIOThread.sendMessage(new MsgSetTempBasalStop(injector));
SystemClock.sleep(500);
}
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.settingtempbasal)));
- mSerialIOThread.sendMessage(new MsgSetTempBasalStart(aapsLogger, percent, durationInHours));
- mSerialIOThread.sendMessage(new MsgStatusTempBasal_v2(aapsLogger, danaRPump));
+ mSerialIOThread.sendMessage(new MsgSetTempBasalStart(injector, percent, durationInHours));
+ mSerialIOThread.sendMessage(new MsgStatusTempBasal_v2(injector));
loadEvents();
rxBus.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
@@ -288,14 +280,14 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
public boolean highTempBasal(int percent, int durationInMinutes) {
if (!isConnected()) return false;
- if (danaRPump.isTempBasalInProgress()) {
+ if (danaPump.isTempBasalInProgress()) {
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.stoppingtempbasal)));
- mSerialIOThread.sendMessage(new MsgSetTempBasalStop(aapsLogger));
+ mSerialIOThread.sendMessage(new MsgSetTempBasalStop(injector));
SystemClock.sleep(500);
}
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.settingtempbasal)));
- mSerialIOThread.sendMessage(new MsgSetAPSTempBasalStart_v2(aapsLogger, percent, durationInMinutes == 15, durationInMinutes == 30));
- mSerialIOThread.sendMessage(new MsgStatusTempBasal_v2(aapsLogger, danaRPump));
+ mSerialIOThread.sendMessage(new MsgSetAPSTempBasalStart_v2(injector, percent, durationInMinutes == 15, durationInMinutes == 30));
+ mSerialIOThread.sendMessage(new MsgStatusTempBasal_v2(injector));
loadEvents();
rxBus.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
@@ -308,14 +300,14 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
}
if (!isConnected()) return false;
- if (danaRPump.isTempBasalInProgress()) {
+ if (danaPump.isTempBasalInProgress()) {
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.stoppingtempbasal)));
- mSerialIOThread.sendMessage(new MsgSetTempBasalStop(aapsLogger));
+ mSerialIOThread.sendMessage(new MsgSetTempBasalStop(injector));
SystemClock.sleep(500);
}
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.settingtempbasal)));
- mSerialIOThread.sendMessage(new MsgSetAPSTempBasalStart_v2(aapsLogger, percent, durationInMinutes == 15, durationInMinutes == 30));
- mSerialIOThread.sendMessage(new MsgStatusTempBasal_v2(aapsLogger, danaRPump));
+ mSerialIOThread.sendMessage(new MsgSetAPSTempBasalStart_v2(injector, percent, durationInMinutes == 15, durationInMinutes == 30));
+ mSerialIOThread.sendMessage(new MsgStatusTempBasal_v2(injector));
loadEvents();
rxBus.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
@@ -324,8 +316,8 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
public boolean tempBasalStop() {
if (!isConnected()) return false;
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.stoppingtempbasal)));
- mSerialIOThread.sendMessage(new MsgSetTempBasalStop(aapsLogger));
- mSerialIOThread.sendMessage(new MsgStatusTempBasal_v2(aapsLogger, danaRPump));
+ mSerialIOThread.sendMessage(new MsgSetTempBasalStop(injector));
+ mSerialIOThread.sendMessage(new MsgStatusTempBasal_v2(injector));
loadEvents();
rxBus.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
@@ -334,8 +326,8 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
public boolean extendedBolus(double insulin, int durationInHalfHours) {
if (!isConnected()) return false;
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.settingextendedbolus)));
- mSerialIOThread.sendMessage(new MsgSetExtendedBolusStart(aapsLogger, constraintChecker, insulin, (byte) (durationInHalfHours & 0xFF)));
- mSerialIOThread.sendMessage(new MsgStatusBolusExtended_v2(aapsLogger, danaRPump));
+ mSerialIOThread.sendMessage(new MsgSetExtendedBolusStart(injector, insulin, (byte) (durationInHalfHours & 0xFF)));
+ mSerialIOThread.sendMessage(new MsgStatusBolusExtended_v2(injector));
loadEvents();
rxBus.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
@@ -344,8 +336,8 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
public boolean extendedBolusStop() {
if (!isConnected()) return false;
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.stoppingextendedbolus)));
- mSerialIOThread.sendMessage(new MsgSetExtendedBolusStop(aapsLogger));
- mSerialIOThread.sendMessage(new MsgStatusBolusExtended_v2(aapsLogger, danaRPump));
+ mSerialIOThread.sendMessage(new MsgSetExtendedBolusStop(injector));
+ mSerialIOThread.sendMessage(new MsgStatusBolusExtended_v2(injector));
loadEvents();
rxBus.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
@@ -356,40 +348,41 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
if (BolusProgressDialog.stopPressed) return false;
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.startingbolus)));
- mBolusingTreatment = t;
+ danaPump.setBolusingTreatment(t);
+ danaPump.setBolusDone(false);
final int preferencesSpeed = sp.getInt(R.string.key_danars_bolusspeed, 0);
MessageBase start;
if (preferencesSpeed == 0)
- start = new MsgBolusStart(aapsLogger, constraintChecker, danaRPump, amount);
+ start = new MsgBolusStart(injector, amount);
else
- start = new MsgBolusStartWithSpeed(aapsLogger, constraintChecker, danaRPump, amount, preferencesSpeed);
- danaRPump.setBolusStopped(false);
- danaRPump.setBolusStopForced(false);
+ start = new MsgBolusStartWithSpeed(injector, amount, preferencesSpeed);
+ danaPump.setBolusStopped(false);
+ danaPump.setBolusStopForced(false);
if (carbs > 0) {
- MsgSetCarbsEntry msg = new MsgSetCarbsEntry(aapsLogger, carbtime, carbs);
+ MsgSetCarbsEntry msg = new MsgSetCarbsEntry(injector, carbtime, carbs);
mSerialIOThread.sendMessage(msg);
- MsgSetHistoryEntry_v2 msgSetHistoryEntry_v2 = new MsgSetHistoryEntry_v2(aapsLogger, DanaRPump.CARBS, carbtime, carbs, 0);
+ MsgSetHistoryEntry_v2 msgSetHistoryEntry_v2 = new MsgSetHistoryEntry_v2(injector, DanaPump.CARBS, carbtime, carbs, 0);
mSerialIOThread.sendMessage(msgSetHistoryEntry_v2);
lastHistoryFetched = Math.min(lastHistoryFetched, carbtime - T.mins(1).msecs());
}
final long bolusStart = System.currentTimeMillis();
if (amount > 0) {
- danaRPump.setBolusingTreatment(t);
- danaRPump.setBolusAmountToBeDelivered(amount);
+ danaPump.setBolusingTreatment(t);
+ danaPump.setBolusAmountToBeDelivered(amount);
- if (!danaRPump.getBolusStopped()) {
+ if (!danaPump.getBolusStopped()) {
mSerialIOThread.sendMessage(start);
} else {
t.insulin = 0d;
return false;
}
- while (!danaRPump.getBolusStopped() && !start.failed) {
+ while (!danaPump.getBolusStopped() && !start.failed) {
SystemClock.sleep(100);
- if ((System.currentTimeMillis() - danaRPump.getBolusProgressLastTimeStamp()) > 15 * 1000L) { // if i didn't receive status for more than 15 sec expecting broken comm
- danaRPump.setBolusStopped(true);
- danaRPump.setBolusStopForced(true);
+ if ((System.currentTimeMillis() - danaPump.getBolusProgressLastTimeStamp()) > 15 * 1000L) { // if i didn't receive status for more than 15 sec expecting broken comm
+ danaPump.setBolusStopped(true);
+ danaPump.setBolusStopForced(true);
aapsLogger.error("Communication stopped");
}
}
@@ -399,7 +392,7 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
bolusingEvent.setT(t);
bolusingEvent.setPercent(99);
- mBolusingTreatment = null;
+ danaPump.setBolusingTreatment(null);
int speed = 12;
switch (preferencesSpeed) {
case 0:
@@ -426,7 +419,7 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
public void run() {
// load last bolus status
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.gettingbolusstatus)));
- mSerialIOThread.sendMessage(new MsgStatus(aapsLogger, danaRPump));
+ mSerialIOThread.sendMessage(new MsgStatus(injector));
bolusingEvent.setPercent(100);
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.disconnecting)));
}
@@ -436,9 +429,9 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
public boolean carbsEntry(int amount, long time) {
if (!isConnected()) return false;
- MsgSetCarbsEntry msg = new MsgSetCarbsEntry(aapsLogger, time, amount);
+ MsgSetCarbsEntry msg = new MsgSetCarbsEntry(injector, time, amount);
mSerialIOThread.sendMessage(msg);
- MsgSetHistoryEntry_v2 msgSetHistoryEntry_v2 = new MsgSetHistoryEntry_v2(aapsLogger, DanaRPump.CARBS, time, amount, 0);
+ MsgSetHistoryEntry_v2 msgSetHistoryEntry_v2 = new MsgSetHistoryEntry_v2(injector, DanaPump.CARBS, time, amount, 0);
mSerialIOThread.sendMessage(msgSetHistoryEntry_v2);
lastHistoryFetched = Math.min(lastHistoryFetched, time - T.mins(1).msecs());
return true;
@@ -455,8 +448,8 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
if (!isConnected())
return new PumpEnactResult(injector).success(false);
SystemClock.sleep(300);
- MsgHistoryEvents_v2 msg = new MsgHistoryEvents_v2(aapsLogger, resourceHelper, detailedBolusInfoStorage, danaRv2Plugin, rxBus, treatmentsPlugin, injector, lastHistoryFetched);
- aapsLogger.debug(LTag.PUMP, "Loading event history from: " + DateUtil.dateAndTimeString(lastHistoryFetched));
+ MsgHistoryEvents_v2 msg = new MsgHistoryEvents_v2(injector, lastHistoryFetched);
+ aapsLogger.debug(LTag.PUMP, "Loading event history from: " + dateUtil.dateAndTimeString(lastHistoryFetched));
mSerialIOThread.sendMessage(msg);
while (!danaRv2Plugin.eventsLoadingDone && mRfcommSocket.isConnected()) {
@@ -467,19 +460,19 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
lastHistoryFetched = danaRv2Plugin.lastEventTimeLoaded - T.mins(1).msecs();
else
lastHistoryFetched = 0;
- danaRPump.setLastConnection(System.currentTimeMillis());
+ danaPump.setLastConnection(System.currentTimeMillis());
return new PumpEnactResult(injector).success(true);
}
public boolean updateBasalsInPump(final Profile profile) {
if (!isConnected()) return false;
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.updatingbasalrates)));
- Double[] basal = danaRPump.buildDanaRProfileRecord(profile);
- MsgSetBasalProfile msgSet = new MsgSetBasalProfile(aapsLogger, rxBus, resourceHelper, (byte) 0, basal);
+ Double[] basal = danaPump.buildDanaRProfileRecord(profile);
+ MsgSetBasalProfile msgSet = new MsgSetBasalProfile(injector, (byte) 0, basal);
mSerialIOThread.sendMessage(msgSet);
- MsgSetActivateBasalProfile msgActivate = new MsgSetActivateBasalProfile(aapsLogger, (byte) 0);
+ MsgSetActivateBasalProfile msgActivate = new MsgSetActivateBasalProfile(injector, (byte) 0);
mSerialIOThread.sendMessage(msgActivate);
- danaRPump.setLastSettingsRead(0); // force read full settings
+ danaPump.setLastSettingsRead(0); // force read full settings
getPumpStatus();
rxBus.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
@@ -489,7 +482,7 @@ public class DanaRv2ExecutionService extends AbstractDanaRExecutionService {
if (!isConnected())
return new PumpEnactResult(injector).success(false);
SystemClock.sleep(300);
- MsgSetUserOptions msg = new MsgSetUserOptions(aapsLogger, danaRPump);
+ MsgSetUserOptions msg = new MsgSetUserOptions(injector);
mSerialIOThread.sendMessage(msg);
SystemClock.sleep(200);
return new PumpEnactResult(injector).success(!msg.failed);
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/AbstractDanaRPlugin.java b/danar/src/main/java/info/nightscout/androidaps/danar/AbstractDanaRPlugin.java
similarity index 77%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/AbstractDanaRPlugin.java
rename to danar/src/main/java/info/nightscout/androidaps/danar/AbstractDanaRPlugin.java
index 4fe2815bdc..f048c101ff 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/AbstractDanaRPlugin.java
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/AbstractDanaRPlugin.java
@@ -1,4 +1,4 @@
-package info.nightscout.androidaps.plugins.pump.danaR;
+package info.nightscout.androidaps.danar;
import androidx.annotation.NonNull;
@@ -9,12 +9,18 @@ import java.util.Date;
import java.util.List;
import dagger.android.HasAndroidInjector;
-import info.nightscout.androidaps.BuildConfig;
-import info.nightscout.androidaps.R;
+import info.nightscout.androidaps.dana.DanaPumpInterface;
+import info.nightscout.androidaps.dana.DanaFragment;
+import info.nightscout.androidaps.dana.DanaPump;
+import info.nightscout.androidaps.dana.comm.RecordTypes;
+import info.nightscout.androidaps.danar.services.AbstractDanaRExecutionService;
import info.nightscout.androidaps.data.Profile;
import info.nightscout.androidaps.data.PumpEnactResult;
import info.nightscout.androidaps.db.ExtendedBolus;
import info.nightscout.androidaps.db.TemporaryBasal;
+import info.nightscout.androidaps.events.EventConfigBuilderChange;
+import info.nightscout.androidaps.events.EventPreferenceChange;
+import info.nightscout.androidaps.interfaces.ActivePluginProvider;
import info.nightscout.androidaps.interfaces.CommandQueueProvider;
import info.nightscout.androidaps.interfaces.Constraint;
import info.nightscout.androidaps.interfaces.ConstraintsInterface;
@@ -34,62 +40,90 @@ import info.nightscout.androidaps.plugins.general.actions.defs.CustomActionType;
import info.nightscout.androidaps.plugins.general.overview.events.EventDismissNotification;
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification;
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.RecordTypes;
-import info.nightscout.androidaps.plugins.pump.danaR.services.AbstractDanaRExecutionService;
-import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin;
import info.nightscout.androidaps.utils.DateUtil;
import info.nightscout.androidaps.utils.DecimalFormatter;
import info.nightscout.androidaps.utils.Round;
import info.nightscout.androidaps.utils.TimeChangeType;
import info.nightscout.androidaps.utils.resources.ResourceHelper;
import info.nightscout.androidaps.utils.sharedPreferences.SP;
+import io.reactivex.disposables.CompositeDisposable;
+import io.reactivex.schedulers.Schedulers;
/**
* Created by mike on 28.01.2018.
*/
-public abstract class AbstractDanaRPlugin extends PumpPluginBase implements PumpInterface, DanaRInterface, ConstraintsInterface {
+public abstract class AbstractDanaRPlugin extends PumpPluginBase implements PumpInterface, DanaRInterface, ConstraintsInterface, DanaPumpInterface {
protected AbstractDanaRExecutionService sExecutionService;
+ protected CompositeDisposable disposable = new CompositeDisposable();
+
protected boolean useExtendedBoluses = false;
protected PumpDescription pumpDescription = new PumpDescription();
- protected DanaRPump danaRPump;
+ protected DanaPump danaPump;
protected ConstraintChecker constraintChecker;
protected RxBusWrapper rxBus;
- protected TreatmentsPlugin treatmentsPlugin;
+ protected ActivePluginProvider activePlugin;
protected SP sp;
+ protected DateUtil dateUtil;
protected AbstractDanaRPlugin(
HasAndroidInjector injector,
- DanaRPump danaRPump,
+ DanaPump danaPump,
ResourceHelper resourceHelper,
ConstraintChecker constraintChecker,
AAPSLogger aapsLogger,
CommandQueueProvider commandQueue,
RxBusWrapper rxBus,
- TreatmentsPlugin treatmentsPlugin,
- SP sp
+ ActivePluginProvider activePlugin,
+ SP sp,
+ DateUtil dateUtil
) {
super(new PluginDescription()
.mainType(PluginType.PUMP)
- .fragmentClass(DanaRFragment.class.getName())
+ .fragmentClass(DanaFragment.class.getName())
.pluginName(R.string.danarspump)
.shortName(R.string.danarpump_shortname)
- .preferencesId(R.xml.pref_danars)
+ .preferencesId(R.xml.pref_danar)
.description(R.string.description_pump_dana_r),
injector, aapsLogger, resourceHelper, commandQueue
);
- this.danaRPump = danaRPump;
+ this.danaPump = danaPump;
this.constraintChecker = constraintChecker;
this.rxBus = rxBus;
- this.treatmentsPlugin = treatmentsPlugin;
+ this.activePlugin = activePlugin;
this.sp = sp;
+ this.dateUtil = dateUtil;
+ }
+
+ @Override protected void onStart() {
+ super.onStart();
+ disposable.add(rxBus
+ .toObservable(EventConfigBuilderChange.class)
+ .observeOn(Schedulers.io())
+ .subscribe(event -> danaPump.reset())
+ );
+ disposable.add(rxBus
+ .toObservable(EventPreferenceChange.class)
+ .observeOn(Schedulers.io())
+ .subscribe(event -> {
+ if (event.isChanged(getResourceHelper(), R.string.key_danar_bt_name)) {
+ danaPump.reset();
+ getCommandQueue().readStatus("DeviceChanged", null);
+ }
+ })
+ );
+ }
+
+ @Override protected void onStop() {
+ super.onStop();
+ disposable.clear();
}
@Override
public boolean isSuspended() {
- return danaRPump.getPumpSuspended();
+ return danaPump.getPumpSuspended();
}
@Override
@@ -138,12 +172,12 @@ public abstract class AbstractDanaRPlugin extends PumpPluginBase implements Pump
public boolean isThisProfileSet(Profile profile) {
if (!isInitialized())
return true; // TODO: not sure what's better. so far TRUE to prevent too many SMS
- if (danaRPump.getPumpProfiles() == null)
+ if (danaPump.getPumpProfiles() == null)
return true; // TODO: not sure what's better. so far TRUE to prevent too many SMS
- int basalValues = danaRPump.getBasal48Enable() ? 48 : 24;
- int basalIncrement = danaRPump.getBasal48Enable() ? 30 * 60 : 60 * 60;
+ int basalValues = danaPump.getBasal48Enable() ? 48 : 24;
+ int basalIncrement = danaPump.getBasal48Enable() ? 30 * 60 : 60 * 60;
for (int h = 0; h < basalValues; h++) {
- Double pumpValue = danaRPump.getPumpProfiles()[danaRPump.getActiveProfile()][h];
+ Double pumpValue = danaPump.getPumpProfiles()[danaPump.getActiveProfile()][h];
Double profileValue = profile.getBasalTimeFromMidnight(h * basalIncrement);
if (Math.abs(pumpValue - profileValue) > getPumpDescription().basalStep) {
getAapsLogger().debug(LTag.PUMP, "Diff found. Hour: " + h + " Pump: " + pumpValue + " Profile: " + profileValue);
@@ -155,22 +189,22 @@ public abstract class AbstractDanaRPlugin extends PumpPluginBase implements Pump
@Override
public long lastDataTime() {
- return danaRPump.getLastConnection();
+ return danaPump.getLastConnection();
}
@Override
public double getBaseBasalRate() {
- return danaRPump.getCurrentBasal();
+ return danaPump.getCurrentBasal();
}
@Override
public double getReservoirLevel() {
- return danaRPump.getReservoirRemainingUnits();
+ return danaPump.getReservoirRemainingUnits();
}
@Override
public int getBatteryLevel() {
- return danaRPump.getBatteryRemaining();
+ return danaPump.getBatteryRemaining();
}
@Override
@@ -184,26 +218,26 @@ public abstract class AbstractDanaRPlugin extends PumpPluginBase implements Pump
@NonNull @Override
public PumpEnactResult setTempBasalPercent(Integer percent, Integer durationInMinutes, Profile profile, boolean enforceNew) {
- DanaRPump pump = danaRPump;
+ DanaPump pump = danaPump;
PumpEnactResult result = new PumpEnactResult(getInjector());
percent = constraintChecker.applyBasalPercentConstraints(new Constraint<>(percent), profile).value();
if (percent < 0) {
result.isTempCancel = false;
result.enacted = false;
result.success = false;
- result.comment = getResourceHelper().gs(R.string.danar_invalidinput);
+ result.comment = getResourceHelper().gs(R.string.invalidinput);
getAapsLogger().error("setTempBasalPercent: Invalid input");
return result;
}
if (percent > getPumpDescription().maxTempPercent)
percent = getPumpDescription().maxTempPercent;
long now = System.currentTimeMillis();
- TemporaryBasal activeTemp = treatmentsPlugin.getRealTempBasalFromHistory(now);
+ TemporaryBasal activeTemp = activePlugin.getActiveTreatments().getRealTempBasalFromHistory(now);
if (activeTemp != null && activeTemp.percentRate == percent && activeTemp.getPlannedRemainingMinutes() > 4 && !enforceNew) {
result.enacted = false;
result.success = true;
result.isTempCancel = false;
- result.comment = getResourceHelper().gs(R.string.virtualpump_resultok);
+ result.comment = getResourceHelper().gs(R.string.ok);
result.duration = pump.getTempBasalRemainingMin();
result.percent = pump.getTempBasalPercent();
result.isPercent = true;
@@ -215,7 +249,7 @@ public abstract class AbstractDanaRPlugin extends PumpPluginBase implements Pump
if (connectionOK && pump.isTempBasalInProgress() && pump.getTempBasalPercent() == percent) {
result.enacted = true;
result.success = true;
- result.comment = getResourceHelper().gs(R.string.virtualpump_resultok);
+ result.comment = getResourceHelper().gs(R.string.ok);
result.isTempCancel = false;
result.duration = pump.getTempBasalRemainingMin();
result.percent = pump.getTempBasalPercent();
@@ -232,18 +266,18 @@ public abstract class AbstractDanaRPlugin extends PumpPluginBase implements Pump
@NonNull @Override
public PumpEnactResult setExtendedBolus(Double insulin, Integer durationInMinutes) {
- DanaRPump pump = danaRPump;
+ DanaPump pump = danaPump;
insulin = constraintChecker.applyExtendedBolusConstraints(new Constraint<>(insulin)).value();
// needs to be rounded
int durationInHalfHours = Math.max(durationInMinutes / 30, 1);
insulin = Round.roundTo(insulin, getPumpDescription().extendedBolusStep);
PumpEnactResult result = new PumpEnactResult(getInjector());
- ExtendedBolus runningEB = treatmentsPlugin.getExtendedBolusFromHistory(System.currentTimeMillis());
+ ExtendedBolus runningEB = activePlugin.getActiveTreatments().getExtendedBolusFromHistory(System.currentTimeMillis());
if (runningEB != null && Math.abs(runningEB.insulin - insulin) < getPumpDescription().extendedBolusStep) {
result.enacted = false;
result.success = true;
- result.comment = getResourceHelper().gs(R.string.virtualpump_resultok);
+ result.comment = getResourceHelper().gs(R.string.ok);
result.duration = pump.getExtendedBolusRemainingMinutes();
result.absolute = pump.getExtendedBolusAbsoluteRate();
result.isPercent = false;
@@ -255,7 +289,7 @@ public abstract class AbstractDanaRPlugin extends PumpPluginBase implements Pump
if (connectionOK && pump.isExtendedInProgress() && Math.abs(pump.getExtendedBolusAmount() - insulin) < getPumpDescription().extendedBolusStep) {
result.enacted = true;
result.success = true;
- result.comment = getResourceHelper().gs(R.string.virtualpump_resultok);
+ result.comment = getResourceHelper().gs(R.string.ok);
result.isTempCancel = false;
result.duration = pump.getExtendedBolusRemainingMinutes();
result.absolute = pump.getExtendedBolusAbsoluteRate();
@@ -275,15 +309,15 @@ public abstract class AbstractDanaRPlugin extends PumpPluginBase implements Pump
@NonNull @Override
public PumpEnactResult cancelExtendedBolus() {
PumpEnactResult result = new PumpEnactResult(getInjector());
- ExtendedBolus runningEB = treatmentsPlugin.getExtendedBolusFromHistory(System.currentTimeMillis());
+ ExtendedBolus runningEB = activePlugin.getActiveTreatments().getExtendedBolusFromHistory(System.currentTimeMillis());
if (runningEB != null) {
sExecutionService.extendedBolusStop();
result.enacted = true;
result.isTempCancel = true;
}
- if (!danaRPump.isExtendedInProgress()) {
+ if (!danaPump.isExtendedInProgress()) {
result.success = true;
- result.comment = getResourceHelper().gs(R.string.virtualpump_resultok);
+ result.comment = getResourceHelper().gs(R.string.ok);
getAapsLogger().debug(LTag.PUMP, "cancelExtendedBolus: OK");
return result;
} else {
@@ -298,8 +332,8 @@ public abstract class AbstractDanaRPlugin extends PumpPluginBase implements Pump
public void connect(String from) {
if (sExecutionService != null) {
sExecutionService.connect();
- pumpDescription.basalStep = danaRPump.getBasalStep();
- pumpDescription.bolusStep = danaRPump.getBolusStep();
+ pumpDescription.basalStep = danaPump.getBasalStep();
+ pumpDescription.bolusStep = danaPump.getBolusStep();
}
}
@@ -327,17 +361,17 @@ public abstract class AbstractDanaRPlugin extends PumpPluginBase implements Pump
public void getPumpStatus() {
if (sExecutionService != null) {
sExecutionService.getPumpStatus();
- pumpDescription.basalStep = danaRPump.getBasalStep();
- pumpDescription.bolusStep = danaRPump.getBolusStep();
+ pumpDescription.basalStep = danaPump.getBasalStep();
+ pumpDescription.bolusStep = danaPump.getBolusStep();
}
}
@NonNull @Override
- public JSONObject getJSONStatus(Profile profile, String profilename) {
- DanaRPump pump = danaRPump;
+ public JSONObject getJSONStatus(Profile profile, String profilename, String version) {
+ DanaPump pump = danaPump;
long now = System.currentTimeMillis();
- if (pump.getLastConnection() + 5 * 60 * 1000L < System.currentTimeMillis()) {
- return null;
+ if (pump.getLastConnection() + 60 * 60 * 1000L < System.currentTimeMillis()) {
+ return new JSONObject();
}
JSONObject pumpjson = new JSONObject();
JSONObject battery = new JSONObject();
@@ -347,21 +381,21 @@ public abstract class AbstractDanaRPlugin extends PumpPluginBase implements Pump
battery.put("percent", pump.getBatteryRemaining());
status.put("status", pump.getPumpSuspended() ? "suspended" : "normal");
status.put("timestamp", DateUtil.toISOString(pump.getLastConnection()));
- extended.put("Version", BuildConfig.VERSION_NAME + "-" + BuildConfig.BUILDVERSION);
+ extended.put("Version", version);
if (pump.getLastBolusTime() != 0) {
- extended.put("LastBolus", DateUtil.dateAndTimeString(pump.getLastBolusTime()));
+ extended.put("LastBolus", dateUtil.dateAndTimeString(pump.getLastBolusTime()));
extended.put("LastBolusAmount", pump.getLastBolusAmount());
}
- TemporaryBasal tb = treatmentsPlugin.getRealTempBasalFromHistory(now);
+ TemporaryBasal tb = activePlugin.getActiveTreatments().getRealTempBasalFromHistory(now);
if (tb != null) {
extended.put("TempBasalAbsoluteRate", tb.tempBasalConvertedToAbsolute(now, profile));
- extended.put("TempBasalStart", DateUtil.dateAndTimeString(tb.date));
+ extended.put("TempBasalStart", dateUtil.dateAndTimeString(tb.date));
extended.put("TempBasalRemaining", tb.getPlannedRemainingMinutes());
}
- ExtendedBolus eb = treatmentsPlugin.getExtendedBolusFromHistory(now);
+ ExtendedBolus eb = activePlugin.getActiveTreatments().getExtendedBolusFromHistory(now);
if (eb != null) {
extended.put("ExtendedBolusAbsoluteRate", eb.absoluteRate());
- extended.put("ExtendedBolusStart", DateUtil.dateAndTimeString(eb.date));
+ extended.put("ExtendedBolusStart", dateUtil.dateAndTimeString(eb.date));
extended.put("ExtendedBolusRemaining", eb.getPlannedRemainingMinutes());
}
extended.put("BaseBasalRate", getBaseBasalRate());
@@ -388,7 +422,7 @@ public abstract class AbstractDanaRPlugin extends PumpPluginBase implements Pump
@NonNull @Override
public String serialNumber() {
- return danaRPump.getSerialNumber();
+ return danaPump.getSerialNumber();
}
@NonNull @Override
@@ -411,7 +445,7 @@ public abstract class AbstractDanaRPlugin extends PumpPluginBase implements Pump
@NonNull @Override
public Constraint applyBasalConstraints(Constraint absoluteRate, @NonNull Profile profile) {
- absoluteRate.setIfSmaller(getAapsLogger(), danaRPump.getMaxBasal(), String.format(getResourceHelper().gs(R.string.limitingbasalratio), danaRPump.getMaxBasal(), getResourceHelper().gs(R.string.pumplimit)), this);
+ absoluteRate.setIfSmaller(getAapsLogger(), danaPump.getMaxBasal(), String.format(getResourceHelper().gs(R.string.limitingbasalratio), danaPump.getMaxBasal(), getResourceHelper().gs(R.string.pumplimit)), this);
return absoluteRate;
}
@@ -425,7 +459,7 @@ public abstract class AbstractDanaRPlugin extends PumpPluginBase implements Pump
@NonNull @Override
public Constraint applyBolusConstraints(Constraint insulin) {
- insulin.setIfSmaller(getAapsLogger(), danaRPump.getMaxBolus(), String.format(getResourceHelper().gs(R.string.limitingbolus), danaRPump.getMaxBolus(), getResourceHelper().gs(R.string.pumplimit)), this);
+ insulin.setIfSmaller(getAapsLogger(), danaPump.getMaxBolus(), String.format(getResourceHelper().gs(R.string.limitingbolus), danaPump.getMaxBolus(), getResourceHelper().gs(R.string.pumplimit)), this);
return insulin;
}
@@ -441,7 +475,7 @@ public abstract class AbstractDanaRPlugin extends PumpPluginBase implements Pump
// Reply for sms communicator
@NonNull public String shortStatus(boolean veryShort) {
- DanaRPump pump = danaRPump;
+ DanaPump pump = danaPump;
String ret = "";
if (pump.getLastConnection() != 0) {
long agoMsec = System.currentTimeMillis() - pump.getLastConnection();
@@ -451,11 +485,11 @@ public abstract class AbstractDanaRPlugin extends PumpPluginBase implements Pump
if (pump.getLastBolusTime() != 0) {
ret += "LastBolus: " + DecimalFormatter.to2Decimal(pump.getLastBolusAmount()) + "U @" + android.text.format.DateFormat.format("HH:mm", pump.getLastBolusTime()) + "\n";
}
- TemporaryBasal activeTemp = treatmentsPlugin.getRealTempBasalFromHistory(System.currentTimeMillis());
+ TemporaryBasal activeTemp = activePlugin.getActiveTreatments().getRealTempBasalFromHistory(System.currentTimeMillis());
if (activeTemp != null) {
ret += "Temp: " + activeTemp.toStringFull() + "\n";
}
- ExtendedBolus activeExtendedBolus = treatmentsPlugin.getExtendedBolusFromHistory(System.currentTimeMillis());
+ ExtendedBolus activeExtendedBolus = activePlugin.getActiveTreatments().getExtendedBolusFromHistory(System.currentTimeMillis());
if (activeExtendedBolus != null) {
ret += "Extended: " + activeExtendedBolus.toString() + "\n";
}
@@ -489,5 +523,6 @@ public abstract class AbstractDanaRPlugin extends PumpPluginBase implements Pump
public void timezoneOrDSTChanged(TimeChangeType timeChangeType) {
}
-
+ @Override public void clearPairing() {
+ }
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/BluetoothDevicePreference.java b/danar/src/main/java/info/nightscout/androidaps/danar/BluetoothDevicePreference.java
similarity index 94%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/BluetoothDevicePreference.java
rename to danar/src/main/java/info/nightscout/androidaps/danar/BluetoothDevicePreference.java
index b255b1b556..794587c2ce 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/BluetoothDevicePreference.java
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/BluetoothDevicePreference.java
@@ -1,4 +1,4 @@
-package info.nightscout.androidaps.plugins.pump.danaR;
+package info.nightscout.androidaps.danar;
import android.bluetooth.*;
import android.content.Context;
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/DanaRPlugin.java b/danar/src/main/java/info/nightscout/androidaps/danar/DanaRPlugin.java
similarity index 85%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/DanaRPlugin.java
rename to danar/src/main/java/info/nightscout/androidaps/danar/DanaRPlugin.java
index 3c6ce84c42..8c9c449b17 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/DanaRPlugin.java
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/DanaRPlugin.java
@@ -1,4 +1,4 @@
-package info.nightscout.androidaps.plugins.pump.danaR;
+package info.nightscout.androidaps.danar;
import android.content.ComponentName;
import android.content.Context;
@@ -12,14 +12,17 @@ import javax.inject.Inject;
import javax.inject.Singleton;
import dagger.android.HasAndroidInjector;
-import info.nightscout.androidaps.R;
+import info.nightscout.androidaps.dana.DanaPump;
+import info.nightscout.androidaps.danar.services.DanaRExecutionService;
import info.nightscout.androidaps.data.DetailedBolusInfo;
import info.nightscout.androidaps.data.Profile;
import info.nightscout.androidaps.data.PumpEnactResult;
import info.nightscout.androidaps.db.ExtendedBolus;
import info.nightscout.androidaps.db.TemporaryBasal;
+import info.nightscout.androidaps.db.Treatment;
import info.nightscout.androidaps.events.EventAppExit;
import info.nightscout.androidaps.events.EventPreferenceChange;
+import info.nightscout.androidaps.interfaces.ActivePluginProvider;
import info.nightscout.androidaps.interfaces.CommandQueueProvider;
import info.nightscout.androidaps.interfaces.Constraint;
import info.nightscout.androidaps.interfaces.PluginType;
@@ -28,9 +31,7 @@ import info.nightscout.androidaps.logging.LTag;
import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker;
import info.nightscout.androidaps.plugins.pump.common.defs.PumpType;
-import info.nightscout.androidaps.plugins.pump.danaR.services.DanaRExecutionService;
-import info.nightscout.androidaps.plugins.treatments.Treatment;
-import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin;
+import info.nightscout.androidaps.utils.DateUtil;
import info.nightscout.androidaps.utils.FabricPrivacy;
import info.nightscout.androidaps.utils.Round;
import info.nightscout.androidaps.utils.resources.ResourceHelper;
@@ -46,6 +47,7 @@ public class DanaRPlugin extends AbstractDanaRPlugin {
private final Context context;
private final ResourceHelper resourceHelper;
private final ConstraintChecker constraintChecker;
+ private final FabricPrivacy fabricPrivacy;
@Inject
public DanaRPlugin(
@@ -55,16 +57,19 @@ public class DanaRPlugin extends AbstractDanaRPlugin {
Context context,
ResourceHelper resourceHelper,
ConstraintChecker constraintChecker,
- TreatmentsPlugin treatmentsPlugin,
+ ActivePluginProvider activePlugin,
SP sp,
CommandQueueProvider commandQueue,
- DanaRPump danaRPump
+ DanaPump danaPump,
+ DateUtil dateUtil,
+ FabricPrivacy fabricPrivacy
) {
- super(injector, danaRPump, resourceHelper, constraintChecker, aapsLogger, commandQueue, rxBus, treatmentsPlugin, sp);
+ super(injector, danaPump, resourceHelper, constraintChecker, aapsLogger, commandQueue, rxBus, activePlugin, sp, dateUtil);
this.aapsLogger = aapsLogger;
this.context = context;
this.resourceHelper = resourceHelper;
this.constraintChecker = constraintChecker;
+ this.fabricPrivacy = fabricPrivacy;
useExtendedBoluses = sp.getBoolean(R.string.key_danar_useextended, false);
pumpDescription.setPumpDescription(PumpType.DanaR);
@@ -82,16 +87,16 @@ public class DanaRPlugin extends AbstractDanaRPlugin {
boolean previousValue = useExtendedBoluses;
useExtendedBoluses = sp.getBoolean(R.string.key_danar_useextended, false);
- if (useExtendedBoluses != previousValue && treatmentsPlugin.isInHistoryExtendedBoluslInProgress()) {
+ if (useExtendedBoluses != previousValue && activePlugin.getActiveTreatments().isInHistoryExtendedBoluslInProgress()) {
sExecutionService.extendedBolusStop();
}
}
- }, exception -> FabricPrivacy.getInstance().logException(exception))
+ }, fabricPrivacy::logException)
);
disposable.add(rxBus
.toObservable(EventAppExit.class)
.observeOn(Schedulers.io())
- .subscribe(event -> context.unbindService(mConnection), exception -> FabricPrivacy.getInstance().logException(exception))
+ .subscribe(event -> context.unbindService(mConnection), fabricPrivacy::logException)
);
super.onStart();
}
@@ -138,7 +143,7 @@ public class DanaRPlugin extends AbstractDanaRPlugin {
@Override
public boolean isInitialized() {
- return danaRPump.getLastConnection() > 0 && danaRPump.isExtendedBolusEnabled() && danaRPump.getMaxBasal() > 0 && danaRPump.isPasswordOK();
+ return danaPump.getLastConnection() > 0 && danaPump.isExtendedBolusEnabled() && danaPump.getMaxBasal() > 0 && danaPump.isPasswordOK();
}
@Override
@@ -165,20 +170,20 @@ public class DanaRPlugin extends AbstractDanaRPlugin {
result.bolusDelivered = t.insulin;
result.carbsDelivered = detailedBolusInfo.carbs;
if (!result.success)
- result.comment = String.format(resourceHelper.gs(R.string.boluserrorcode), detailedBolusInfo.insulin, t.insulin, danaRPump.getMessageStartErrorCode());
+ result.comment = String.format(resourceHelper.gs(R.string.boluserrorcode), detailedBolusInfo.insulin, t.insulin, danaPump.getBolusStartErrorCode());
else
- result.comment = resourceHelper.gs(R.string.virtualpump_resultok);
+ result.comment = resourceHelper.gs(R.string.ok);
aapsLogger.debug(LTag.PUMP, "deliverTreatment: OK. Asked: " + detailedBolusInfo.insulin + " Delivered: " + result.bolusDelivered);
detailedBolusInfo.insulin = t.insulin;
detailedBolusInfo.date = System.currentTimeMillis();
- treatmentsPlugin.addToHistoryTreatment(detailedBolusInfo, false);
+ activePlugin.getActiveTreatments().addToHistoryTreatment(detailedBolusInfo, false);
return result;
} else {
PumpEnactResult result = new PumpEnactResult(getInjector());
result.success = false;
result.bolusDelivered = 0d;
result.carbsDelivered = 0d;
- result.comment = resourceHelper.gs(R.string.danar_invalidinput);
+ result.comment = resourceHelper.gs(R.string.invalidinput);
aapsLogger.error("deliverTreatment: Invalid input");
return result;
}
@@ -196,14 +201,14 @@ public class DanaRPlugin extends AbstractDanaRPlugin {
absoluteRate = constraintChecker.applyBasalConstraints(new Constraint<>(absoluteRate), profile).value();
- final boolean doTempOff = getBaseBasalRate() - absoluteRate == 0d;
- final boolean doLowTemp = absoluteRate < getBaseBasalRate();
+ final boolean doTempOff = getBaseBasalRate() - absoluteRate == 0d && absoluteRate >= 0.10d;
+ final boolean doLowTemp = absoluteRate < getBaseBasalRate() || absoluteRate < 0.10d;
final boolean doHighTemp = absoluteRate > getBaseBasalRate() && !useExtendedBoluses;
final boolean doExtendedTemp = absoluteRate > getBaseBasalRate() && useExtendedBoluses;
long now = System.currentTimeMillis();
- TemporaryBasal activeTemp = treatmentsPlugin.getRealTempBasalFromHistory(now);
- ExtendedBolus activeExtended = treatmentsPlugin.getExtendedBolusFromHistory(now);
+ TemporaryBasal activeTemp = activePlugin.getActiveTreatments().getRealTempBasalFromHistory(now);
+ ExtendedBolus activeExtended = activePlugin.getActiveTreatments().getExtendedBolusFromHistory(now);
if (doTempOff) {
// If extended in progress
@@ -227,6 +232,8 @@ public class DanaRPlugin extends AbstractDanaRPlugin {
if (doLowTemp || doHighTemp) {
Integer percentRate = Double.valueOf(absoluteRate / getBaseBasalRate() * 100).intValue();
+ // Any basal less than 0.10u/h will be dumped once per hour, not every 4 mins. So if it's less than .10u/h, set a zero temp.
+ if (absoluteRate < 0.10d) percentRate = 0;
if (percentRate < 100) percentRate = Round.ceilTo((double) percentRate, 10d).intValue();
else percentRate = Round.floorTo((double) percentRate, 10d).intValue();
if (percentRate > getPumpDescription().maxTempPercent) {
@@ -287,16 +294,16 @@ public class DanaRPlugin extends AbstractDanaRPlugin {
extendedRateToSet = Round.roundTo(extendedRateToSet, pumpDescription.extendedBolusStep * 2); // *2 because of halfhours
// What is current rate of extended bolusing in u/h?
- aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Extended bolus in progress: " + (activeExtended != null) + " rate: " + danaRPump.getExtendedBolusAbsoluteRate() + "U/h duration remaining: " + danaRPump.getExtendedBolusRemainingMinutes() + "min");
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Extended bolus in progress: " + (activeExtended != null) + " rate: " + danaPump.getExtendedBolusAbsoluteRate() + "U/h duration remaining: " + danaPump.getExtendedBolusRemainingMinutes() + "min");
aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Rate to set: " + extendedRateToSet + "U/h");
// Compare with extended rate in progress
- if (activeExtended != null && Math.abs(danaRPump.getExtendedBolusAbsoluteRate() - extendedRateToSet) < getPumpDescription().extendedBolusStep) {
+ if (activeExtended != null && Math.abs(danaPump.getExtendedBolusAbsoluteRate() - extendedRateToSet) < getPumpDescription().extendedBolusStep) {
// correct extended already set
result.success = true;
- result.absolute = danaRPump.getExtendedBolusAbsoluteRate();
+ result.absolute = danaPump.getExtendedBolusAbsoluteRate();
result.enacted = false;
- result.duration = danaRPump.getExtendedBolusRemainingMinutes();
+ result.duration = danaPump.getExtendedBolusRemainingMinutes();
result.isPercent = false;
result.isTempCancel = false;
aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Correct extended already set");
@@ -324,15 +331,15 @@ public class DanaRPlugin extends AbstractDanaRPlugin {
@NonNull @Override
public PumpEnactResult cancelTempBasal(boolean force) {
- if (treatmentsPlugin.isInHistoryRealTempBasalInProgress())
+ if (activePlugin.getActiveTreatments().isInHistoryRealTempBasalInProgress())
return cancelRealTempBasal();
- if (treatmentsPlugin.isInHistoryExtendedBoluslInProgress() && useExtendedBoluses) {
+ if (activePlugin.getActiveTreatments().isInHistoryExtendedBoluslInProgress() && useExtendedBoluses) {
return cancelExtendedBolus();
}
PumpEnactResult result = new PumpEnactResult(getInjector());
result.success = true;
result.enacted = false;
- result.comment = resourceHelper.gs(R.string.virtualpump_resultok);
+ result.comment = resourceHelper.gs(R.string.ok);
result.isTempCancel = true;
return result;
}
@@ -344,16 +351,16 @@ public class DanaRPlugin extends AbstractDanaRPlugin {
private PumpEnactResult cancelRealTempBasal() {
PumpEnactResult result = new PumpEnactResult(getInjector());
- TemporaryBasal runningTB = treatmentsPlugin.getTempBasalFromHistory(System.currentTimeMillis());
+ TemporaryBasal runningTB = activePlugin.getActiveTreatments().getTempBasalFromHistory(System.currentTimeMillis());
if (runningTB != null) {
sExecutionService.tempBasalStop();
result.enacted = true;
result.isTempCancel = true;
}
- if (!danaRPump.isTempBasalInProgress()) {
+ if (!danaPump.isTempBasalInProgress()) {
result.success = true;
result.isTempCancel = true;
- result.comment = resourceHelper.gs(R.string.virtualpump_resultok);
+ result.comment = resourceHelper.gs(R.string.ok);
aapsLogger.debug(LTag.PUMP, "cancelRealTempBasal: OK");
return result;
} else {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/SerialIOThread.java b/danar/src/main/java/info/nightscout/androidaps/danar/SerialIOThread.java
similarity index 69%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/SerialIOThread.java
rename to danar/src/main/java/info/nightscout/androidaps/danar/SerialIOThread.java
index 4b49d652a2..18ab01053f 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/SerialIOThread.java
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/SerialIOThread.java
@@ -1,27 +1,24 @@
-package info.nightscout.androidaps.plugins.pump.danaR;
+package info.nightscout.androidaps.danar;
import android.bluetooth.BluetoothSocket;
import android.os.SystemClock;
-import org.slf4j.Logger;
-
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
-import info.nightscout.androidaps.logging.L;
+import info.nightscout.androidaps.dana.DanaPump;
+import info.nightscout.androidaps.danar.comm.MessageBase;
+import info.nightscout.androidaps.danar.comm.MessageHashTableBase;
+import info.nightscout.androidaps.logging.AAPSLogger;
import info.nightscout.androidaps.logging.LTag;
-import info.nightscout.androidaps.logging.StacktraceLoggerWrapper;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MessageBase;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MessageHashTableBase;
-import info.nightscout.androidaps.plugins.pump.danaR.services.AbstractSerialIOThread;
import info.nightscout.androidaps.utils.CRC;
/**
* Created by mike on 17.07.2016.
*/
-public class SerialIOThread extends AbstractSerialIOThread {
- private static Logger log = StacktraceLoggerWrapper.getLogger(LTag.PUMPBTCOMM);
+public class SerialIOThread extends Thread {
+ private AAPSLogger aapsLogger;
private InputStream mInputStream = null;
private OutputStream mOutputStream = null;
@@ -32,19 +29,20 @@ public class SerialIOThread extends AbstractSerialIOThread {
private MessageBase processedMessage;
private MessageHashTableBase hashTable;
- private DanaRPump danaRPump;
+ private DanaPump danaPump;
- public SerialIOThread(BluetoothSocket rfcommSocket, MessageHashTableBase hashTable, DanaRPump danaRPump) {
+ public SerialIOThread(AAPSLogger aapsLogger, BluetoothSocket rfcommSocket, MessageHashTableBase hashTable, DanaPump danaPump) {
super();
this.hashTable = hashTable;
- this.danaRPump = danaRPump;
+ this.danaPump = danaPump;
+ this.aapsLogger = aapsLogger;
mRfCommSocket = rfcommSocket;
try {
mOutputStream = mRfCommSocket.getOutputStream();
mInputStream = mRfCommSocket.getInputStream();
} catch (IOException e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error("Unhandled exception", e);
}
this.start();
}
@@ -76,8 +74,7 @@ public class SerialIOThread extends AbstractSerialIOThread {
message = hashTable.findMessage(command);
}
- if (L.isEnabled(LTag.PUMPBTCOMM))
- log.debug("<<<<< " + message.getMessageName() + " " + MessageBase.toHexString(extractedBuff));
+ aapsLogger.debug(LTag.PUMPBTCOMM, "<<<<< " + message.getMessageName() + " " + MessageBase.toHexString(extractedBuff));
// process the message content
message.received = true;
@@ -89,7 +86,7 @@ public class SerialIOThread extends AbstractSerialIOThread {
}
} catch (Exception e) {
if (!e.getMessage().contains("bt socket closed"))
- log.error("Thread exception: ", e);
+ aapsLogger.error("Thread exception: ", e);
mKeepRunning = false;
}
disconnect("EndOfLoop");
@@ -111,7 +108,7 @@ public class SerialIOThread extends AbstractSerialIOThread {
return null;
}
if (mReadBuff[length - 2] != (byte) 0x2E || mReadBuff[length - 1] != (byte) 0x2E) {
- log.error("wrong packet lenght=" + length + " data " + MessageBase.toHexString(mReadBuff));
+ aapsLogger.error("wrong packet lenght=" + length + " data " + MessageBase.toHexString(mReadBuff));
disconnect("wrong packet");
return null;
}
@@ -124,7 +121,7 @@ public class SerialIOThread extends AbstractSerialIOThread {
byte crcByte1received = mReadBuff[length - 3];
if (crcByte0 != crcByte0received || crcByte1 != crcByte1received) {
- log.error("CRC Error" + String.format("%02x ", crcByte0) + String.format("%02x ", crcByte1) + String.format("%02x ", crcByte0received) + String.format("%02x ", crcByte1received));
+ aapsLogger.error("CRC Error" + String.format("%02x ", crcByte0) + String.format("%02x ", crcByte1) + String.format("%02x ", crcByte0received) + String.format("%02x ", crcByte1received));
disconnect("crc error");
return null;
}
@@ -137,80 +134,70 @@ public class SerialIOThread extends AbstractSerialIOThread {
mReadBuff = unprocessedData;
return extractedBuff;
} else {
- log.error("Wrong beginning of packet len=" + mReadBuff.length + " " + MessageBase.toHexString(mReadBuff));
+ aapsLogger.error("Wrong beginning of packet len=" + mReadBuff.length + " " + MessageBase.toHexString(mReadBuff));
disconnect("Wrong beginning of packet");
return null;
}
}
- @Override
public synchronized void sendMessage(MessageBase message) {
if (!mRfCommSocket.isConnected()) {
- log.error("Socket not connected on sendMessage");
+ aapsLogger.error("Socket not connected on sendMessage");
return;
}
processedMessage = message;
byte[] messageBytes = message.getRawMessageBytes();
- if (L.isEnabled(LTag.PUMPBTCOMM))
- log.debug(">>>>> " + message.getMessageName() + " " + MessageBase.toHexString(messageBytes));
+ aapsLogger.debug(LTag.PUMPBTCOMM, ">>>>> " + message.getMessageName() + " " + MessageBase.toHexString(messageBytes));
try {
mOutputStream.write(messageBytes);
} catch (Exception e) {
- log.error("sendMessage write exception: ", e);
+ aapsLogger.error("sendMessage write exception: ", e);
}
synchronized (message) {
try {
message.wait(5000);
} catch (InterruptedException e) {
- log.error("sendMessage InterruptedException", e);
+ aapsLogger.error("sendMessage InterruptedException", e);
}
}
SystemClock.sleep(200);
if (!message.isReceived()) {
message.handleMessageNotReceived();
- if (L.isEnabled(LTag.PUMPBTCOMM))
- log.error("Reply not received " + message.getMessageName());
+ aapsLogger.error(LTag.PUMPBTCOMM, "Reply not received " + message.getMessageName());
if (message.getCommand() == 0xF0F1) {
- danaRPump.setNewPump(false);
- if (L.isEnabled(LTag.PUMPCOMM))
- log.debug("Old firmware detected");
+ danaPump.setNewPump(false);
+ aapsLogger.debug(LTag.PUMPBTCOMM, "Old firmware detected");
}
}
}
- @Override
public void disconnect(String reason) {
mKeepRunning = false;
try {
mInputStream.close();
} catch (Exception e) {
- if (L.isEnabled(LTag.PUMPBTCOMM))
- log.debug(e.getMessage());
+ aapsLogger.debug(LTag.PUMPBTCOMM, e.getMessage());
}
try {
mOutputStream.close();
} catch (Exception e) {
- if (L.isEnabled(LTag.PUMPBTCOMM))
- log.debug(e.getMessage());
+ aapsLogger.debug(LTag.PUMPBTCOMM, e.getMessage());
}
try {
mRfCommSocket.close();
} catch (Exception e) {
- if (L.isEnabled(LTag.PUMPBTCOMM))
- log.debug(e.getMessage());
+ aapsLogger.debug(LTag.PUMPBTCOMM, e.getMessage());
}
try {
System.runFinalization();
} catch (Exception e) {
- if (L.isEnabled(LTag.PUMPBTCOMM))
- log.debug(e.getMessage());
+ aapsLogger.debug(LTag.PUMPBTCOMM, e.getMessage());
}
- if (L.isEnabled(LTag.PUMPBTCOMM))
- log.debug("Disconnected: " + reason);
+ aapsLogger.debug(LTag.PUMPBTCOMM, "Disconnected: " + reason);
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MessageBase.java b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MessageBase.java
similarity index 55%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MessageBase.java
rename to danar/src/main/java/info/nightscout/androidaps/danar/comm/MessageBase.java
index 9ebf373795..9f918a416c 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MessageBase.java
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MessageBase.java
@@ -1,21 +1,35 @@
-package info.nightscout.androidaps.plugins.pump.danaR.comm;
+package info.nightscout.androidaps.danar.comm;
import android.annotation.TargetApi;
import android.os.Build;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.joda.time.DateTime;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import java.util.Calendar;
-import java.util.Date;
import java.util.GregorianCalendar;
-import info.nightscout.androidaps.logging.L;
+import javax.inject.Inject;
+
+import dagger.android.HasAndroidInjector;
+import info.nightscout.androidaps.dana.DanaPump;
+import info.nightscout.androidaps.danaRKorean.DanaRKoreanPlugin;
+import info.nightscout.androidaps.danaRv2.DanaRv2Plugin;
+import info.nightscout.androidaps.danar.DanaRPlugin;
+import info.nightscout.androidaps.interfaces.ActivePluginProvider;
+import info.nightscout.androidaps.interfaces.CommandQueueProvider;
+import info.nightscout.androidaps.interfaces.ConfigBuilderInterface;
+import info.nightscout.androidaps.interfaces.DatabaseHelperInterface;
+import info.nightscout.androidaps.logging.AAPSLogger;
import info.nightscout.androidaps.logging.LTag;
-import info.nightscout.androidaps.logging.StacktraceLoggerWrapper;
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
+import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker;
+import info.nightscout.androidaps.plugins.general.nsclient.NSUpload;
+import info.nightscout.androidaps.plugins.pump.common.bolusInfo.DetailedBolusInfoStorage;
import info.nightscout.androidaps.utils.CRC;
+import info.nightscout.androidaps.utils.DateUtil;
+import info.nightscout.androidaps.utils.resources.ResourceHelper;
/*
* 00 01 02 03 04 05 06
@@ -24,22 +38,39 @@ import info.nightscout.androidaps.utils.CRC;
*/
public class MessageBase {
- private static Logger log = StacktraceLoggerWrapper.getLogger(LTag.PUMPCOMM);
+ @Inject public AAPSLogger aapsLogger;
+ @Inject public DateUtil dateUtil;
+ @Inject public DanaPump danaPump;
+ @Inject public DanaRPlugin danaRPlugin;
+ @Inject public DanaRKoreanPlugin danaRKoreanPlugin;
+ @Inject public DanaRv2Plugin danaRv2Plugin;
+ @Inject public RxBusWrapper rxBus;
+ @Inject public ResourceHelper resourceHelper;
+ @Inject public ActivePluginProvider activePlugin;
+ @Inject public ConfigBuilderInterface configBuilder;
+ @Inject public CommandQueueProvider commandQueue;
+ @Inject public DetailedBolusInfoStorage detailedBolusInfoStorage;
+ @Inject public ConstraintChecker constraintChecker;
+ @Inject public NSUpload nsUpload;
+ @Inject public DatabaseHelperInterface databaseHelper;
+ HasAndroidInjector injector;
+
public byte[] buffer = new byte[512];
private int position = 6;
public boolean received = false;
public boolean failed = false;
+ public MessageBase(HasAndroidInjector injector) {
+ injector.androidInjector().inject(this);
+ this. injector = injector;
+ }
+
public void SetCommand(int cmd) {
this.buffer[4] = (byte) (cmd >> 8 & 0xFF);
this.buffer[5] = (byte) (cmd & 0xFF);
}
- public void resetBuffer() {
- position = 6;
- }
-
public void AddParamByte(byte data) {
this.buffer[this.position++] = data;
}
@@ -66,13 +97,15 @@ public class MessageBase {
AddParamByte((byte) (date.get(Calendar.SECOND)));
}
- public void AddParamDateTime(Date date) {
- AddParamByte((byte) (date.getSeconds()));
- AddParamByte((byte) (date.getMinutes()));
- AddParamByte((byte) (date.getHours()));
- AddParamByte((byte) (date.getDate()));
- AddParamByte((byte) (date.getMonth() + 1));
- AddParamByte((byte) (date.getYear() - 100));
+ public void AddParamDateTimeReversed(long timestamp) {
+ GregorianCalendar date = new GregorianCalendar();
+ date.setTimeInMillis(timestamp);
+ AddParamByte((byte) (date.get(Calendar.SECOND)));
+ AddParamByte((byte) (date.get(Calendar.MINUTE)));
+ AddParamByte((byte) (date.get(Calendar.HOUR_OF_DAY)));
+ AddParamByte((byte) (date.get(Calendar.DAY_OF_MONTH)));
+ AddParamByte((byte) (date.get(Calendar.MONTH) + 1));
+ AddParamByte((byte) (date.get(Calendar.YEAR) - 1900 - 100));
}
public byte[] getRawMessageBytes() {
@@ -97,13 +130,11 @@ public class MessageBase {
}
public void handleMessage(byte[] bytes) {
- if (L.isEnabled(LTag.PUMPCOMM)) {
- if (bytes.length > 6) {
- int command = (bytes[5] & 0xFF) | ((bytes[4] << 8) & 0xFF00);
- log.debug("UNPROCESSED MSG: " + getMessageName() + " Command: " + String.format("%04X", command) + " Data: " + toHexString(bytes));
- } else {
- log.debug("MISFORMATTED MSG: " + toHexString(bytes));
- }
+ if (bytes.length > 6) {
+ int command = (bytes[5] & 0xFF) | ((bytes[4] << 8) & 0xFF00);
+ aapsLogger.debug(LTag.PUMPCOMM, "UNPROCESSED MSG: " + getMessageName() + " Command: " + String.format("%04X", command) + " Data: " + toHexString(bytes));
+ } else {
+ aapsLogger.debug(LTag.PUMPCOMM, "MISFORMATTED MSG: " + toHexString(bytes));
}
}
@@ -115,11 +146,11 @@ public class MessageBase {
return command;
}
- public static int byteFromRawBuff(byte[] buff, int offset) {
+ public int byteFromRawBuff(byte[] buff, int offset) {
return buff[offset] & 0xFF;
}
- public static int intFromBuff(byte[] buff, int offset, int length) {
+ public int intFromBuff(byte[] buff, int offset, int length) {
offset += 6;
switch (length) {
case 1:
@@ -134,37 +165,39 @@ public class MessageBase {
return 0;
}
- public static long dateTimeFromBuff(byte[] buff, int offset) {
+ public long dateTimeFromBuff(byte[] buff, int offset) {
return
- new Date(
- 100 + intFromBuff(buff, offset, 1),
- intFromBuff(buff, offset + 1, 1) - 1,
+ new DateTime(
+ 2000 + intFromBuff(buff, offset, 1),
+ intFromBuff(buff, offset + 1, 1),
intFromBuff(buff, offset + 2, 1),
intFromBuff(buff, offset + 3, 1),
intFromBuff(buff, offset + 4, 1),
0
- ).getTime();
+ ).getMillis();
}
- public static synchronized long dateTimeSecFromBuff(byte[] buff, int offset) {
+ public synchronized long dateTimeSecFromBuff(byte[] buff, int offset) {
return
- new Date(
- 100 + intFromBuff(buff, offset, 1),
- intFromBuff(buff, offset + 1, 1) - 1,
+ new DateTime(
+ 2000 + intFromBuff(buff, offset, 1),
+ intFromBuff(buff, offset + 1, 1),
intFromBuff(buff, offset + 2, 1),
intFromBuff(buff, offset + 3, 1),
intFromBuff(buff, offset + 4, 1),
intFromBuff(buff, offset + 5, 1)
- ).getTime();
+ ).getMillis();
}
- public static long dateFromBuff(byte[] buff, int offset) {
+ public long dateFromBuff(byte[] buff, int offset) {
return
- new Date(
- 100 + intFromBuff(buff, offset, 1),
- intFromBuff(buff, offset + 1, 1) - 1,
- intFromBuff(buff, offset + 2, 1)
- ).getTime();
+ new DateTime(
+ 2000 + intFromBuff(buff, offset, 1),
+ intFromBuff(buff, offset + 1, 1),
+ intFromBuff(buff, offset + 2, 1),
+ 0,
+ 0
+ ).getMillis();
}
@TargetApi(Build.VERSION_CODES.KITKAT)
@@ -184,7 +217,7 @@ public class MessageBase {
}
public static String toHexString(byte[] buff) {
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
int count = 0;
for (byte element : buff) {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MessageHashTableBase.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MessageHashTableBase.kt
similarity index 66%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MessageHashTableBase.kt
rename to danar/src/main/java/info/nightscout/androidaps/danar/comm/MessageHashTableBase.kt
index 9c524e02a6..269ac7f756 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MessageHashTableBase.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MessageHashTableBase.kt
@@ -1,4 +1,4 @@
-package info.nightscout.androidaps.plugins.pump.danaR.comm
+package info.nightscout.androidaps.danar.comm
interface MessageHashTableBase {
fun put(message: MessageBase)
diff --git a/danar/src/main/java/info/nightscout/androidaps/danar/comm/MessageHashTableR.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MessageHashTableR.kt
new file mode 100644
index 0000000000..4e36973f26
--- /dev/null
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MessageHashTableR.kt
@@ -0,0 +1,80 @@
+package info.nightscout.androidaps.danar.comm
+
+import dagger.android.HasAndroidInjector
+import java.util.*
+import javax.inject.Inject
+import javax.inject.Singleton
+
+@Singleton
+class MessageHashTableR @Inject constructor(
+ private val injector: HasAndroidInjector
+) : MessageHashTableBase {
+
+ var messages: HashMap = HashMap()
+
+ init {
+ put(MsgBolusStop(injector)) // 0x0101 CMD_MEALINS_STOP
+ put(MsgBolusStart(injector, 0.0)) // 0x0102 CMD_MEALINS_START_DATA
+ put(MsgBolusStartWithSpeed(injector, 0.0, 0)) // 0x0104 CMD_MEALINS_START_DATA_SPEED
+ put(MsgBolusProgress(injector)) // 0x0202 CMD_PUMP_THIS_REMAINDER_MEAL_INS
+ put(MsgStatusProfile(injector)) // 0x0204 CMD_PUMP_CALCULATION_SETTING
+ put(MsgStatusTempBasal(injector)) // 0x0205 CMD_PUMP_EXERCISE_MODE
+ put(MsgStatusBolusExtended(injector)) // 0x0207 CMD_PUMP_EXPANS_INS_I
+ put(MsgStatusBasic(injector)) // 0x020A CMD_PUMP_INITVIEW_I
+ put(MsgStatus(injector)) // 0x020B CMD_PUMP_STATUS
+ // 0x0301 CMD_PUMPINIT_TIME_INFO
+ put(MsgInitConnStatusTime(injector))
+ put(MsgInitConnStatusBolus(injector)) // 0x0302 CMD_PUMPINIT_BOLUS_INFO
+ put(MsgInitConnStatusBasic(injector)) // 0x0303 CMD_PUMPINIT_INIT_INFO
+ put(MsgInitConnStatusOption(injector)) // 0x0304 CMD_PUMPINIT_OPTION
+ put(MsgSetTempBasalStart(injector, 0, 0)) // 0x0401 CMD_PUMPSET_EXERCISE_S
+ put(MsgSetCarbsEntry(injector, 0, 0)) // 0x0402 CMD_PUMPSET_HIS_S
+ put(MsgSetTempBasalStop(injector)) // 0x0403 CMD_PUMPSET_EXERCISE_STOP
+ put(MsgSetExtendedBolusStop(injector)) // 0x0406 CMD_PUMPSET_EXPANS_INS_STOP
+ put(MsgSetExtendedBolusStart(injector, 0.0, 0)) // 0x0407 CMD_PUMPSET_EXPANS_INS_S
+ put(MsgError(injector)) // 0x0601 CMD_PUMPOWAY_SYSTEM_STATUS
+ put(MsgPCCommStart(injector)) // 0x3001 CMD_CONNECT
+ put(MsgPCCommStop(injector)) // 0x3002 CMD_DISCONNECT
+ put(MsgHistoryBolus(injector)) // 0x3101 CMD_HISTORY_MEAL_INS
+ put(MsgHistoryDailyInsulin(injector)) // 0x3102 CMD_HISTORY_DAY_INS
+ put(MsgHistoryGlucose(injector)) // 0x3104 CMD_HISTORY_GLUCOSE
+ put(MsgHistoryAlarm(injector)) // 0x3105 CMD_HISTORY_ALARM
+ put(MsgHistoryError(injector)) // 0x3106 CMD_HISTORY_ERROR
+ put(MsgHistoryCarbo(injector)) // 0x3107 CMD_HISTORY_CARBOHY
+ put(MsgHistoryRefill(injector)) // 0x3108 CMD_HISTORY_REFILL
+ put(MsgHistorySuspend(injector)) // 0x3109 CMD_HISTORY_SUSPEND
+ put(MsgHistoryBasalHour(injector)) // 0x310A CMD_HISTORY_BASAL_HOUR
+ put(MsgHistoryDone(injector)) // 0x31F1 CMD_HISTORY_DONT_USED
+ // 0x3202 CMD_SETTING_V_BASAL_INS_I
+ put(MsgSettingBasal(injector))
+ // 0x3203 CMD_SETTING_V_MEAL_SETTING_I
+ put(MsgSettingMeal(injector))
+ put(MsgSettingProfileRatios(injector)) // 0x3204 CMD_SETTING_V_CCC_I
+ put(MsgSettingMaxValues(injector)) // 0x3205 CMD_SETTING_V_MAX_VALUE_I
+ put(MsgSettingBasalProfileAll(injector)) // 0x3206 CMD_SETTING_V_BASAL_PROFILE_ALL
+ put(MsgSettingShippingInfo(injector)) // 0x3207 CMD_SETTING_V_SHIPPING_I
+ put(MsgSettingGlucose(injector)) // 0x3209 CMD_SETTING_V_GLUCOSEandEASY
+ put(MsgSettingPumpTime(injector)) // 0x320A CMD_SETTING_V_TIME_I
+ put(MsgSettingUserOptions(injector)) // 0x320B CMD_SETTING_V_USER_OPTIONS
+ put(MsgSettingActiveProfile(injector)) // 0x320C CMD_SETTING_V_PROFILE_NUMBER
+ put(MsgSettingProfileRatiosAll(injector)) // 0x320D CMD_SETTING_V_CIR_CF_VALUE
+ put(MsgSetSingleBasalProfile(injector, Array(24) { 0.0 })) // 0x3302 CMD_SETTING_BASAL_INS_S
+ put(MsgSetBasalProfile(injector, 0.toByte(), Array(24) { 0.0 })) // 0x3306 CMD_SETTING_BASAL_PROFILE_S
+ put(MsgSetUserOptions(injector)) // 0x330B CMD_SETTING_USER_OPTIONS_S
+ put(MsgSetActivateBasalProfile(injector, 0.toByte())) // 0x330C CMD_SETTING_PROFILE_NUMBER_S
+ put(MsgHistoryAllDone(injector)) // 0x41F1 CMD_HISTORY_ALL_DONE
+ put(MsgHistoryAll(injector)) // 0x41F2 CMD_HISTORY_ALL
+ put(MsgHistoryNewDone(injector)) // 0x42F1 CMD_HISTORY_NEW_DONE
+ put(MsgHistoryNew(injector)) // 0x42F2 CMD_HISTORY_NEW
+ // 0xF0F1 CMD_PUMP_CHECK_VALUE
+ put(MsgCheckValue(injector))
+ }
+
+ override fun put(message: MessageBase) {
+ messages[message.command] = message
+ }
+
+ override fun findMessage(command: Int): MessageBase {
+ return messages[command] ?: MessageBase(injector)
+ }
+}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MessageOriginalNames.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MessageOriginalNames.kt
similarity index 99%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MessageOriginalNames.kt
rename to danar/src/main/java/info/nightscout/androidaps/danar/comm/MessageOriginalNames.kt
index dd3dd75512..4c1e077a11 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MessageOriginalNames.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MessageOriginalNames.kt
@@ -1,4 +1,4 @@
-package info.nightscout.androidaps.plugins.pump.danaR.comm
+package info.nightscout.androidaps.danar.comm
import java.util.*
diff --git a/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgBolusProgress.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgBolusProgress.kt
new file mode 100644
index 0000000000..2cceeb10f1
--- /dev/null
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgBolusProgress.kt
@@ -0,0 +1,29 @@
+package info.nightscout.androidaps.danar.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.danar.R
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.plugins.general.overview.events.EventOverviewBolusProgress
+import kotlin.math.min
+
+class MsgBolusProgress(
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
+
+ init {
+ SetCommand(0x0202)
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun handleMessage(bytes: ByteArray) {
+ val deliveredInsulin = danaPump.bolusAmountToBeDelivered - intFromBuff(bytes, 0, 2) / 100.0
+ danaPump.bolusProgressLastTimeStamp = System.currentTimeMillis()
+ danaPump.bolusingTreatment?.insulin = deliveredInsulin
+ val bolusingEvent = EventOverviewBolusProgress
+ bolusingEvent.status = resourceHelper.gs(R.string.bolusdelivering, deliveredInsulin)
+ bolusingEvent.t = danaPump.bolusingTreatment
+ bolusingEvent.percent = min((deliveredInsulin / danaPump.bolusAmountToBeDelivered * 100).toInt(), 100)
+ aapsLogger.debug(LTag.PUMPCOMM, "Delivered insulin so far: $deliveredInsulin")
+ rxBus.send(bolusingEvent)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgBolusStart.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgBolusStart.kt
similarity index 61%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgBolusStart.kt
rename to danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgBolusStart.kt
index 695c3f1ec0..66ba788656 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgBolusStart.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgBolusStart.kt
@@ -1,18 +1,13 @@
-package info.nightscout.androidaps.plugins.pump.danaR.comm
+package info.nightscout.androidaps.danar.comm
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.interfaces.Constraint
-import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag
-import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPlugin
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
class MsgBolusStart(
- private val aapsLogger: AAPSLogger,
- constraintChecker: ConstraintChecker,
- private val danaRPump: DanaRPump,
+ injector: HasAndroidInjector,
private var amount: Double
-) : MessageBase() {
+) : MessageBase(injector) {
init {
SetCommand(0x0102)
@@ -31,6 +26,6 @@ class MsgBolusStart(
failed = false
aapsLogger.debug(LTag.PUMPBTCOMM, "Messsage response: $errorCode OK")
}
- danaRPump.messageStartErrorCode = errorCode
+ danaPump.bolusStartErrorCode = errorCode
}
}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgBolusStartWithSpeed.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgBolusStartWithSpeed.kt
similarity index 63%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgBolusStartWithSpeed.kt
rename to danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgBolusStartWithSpeed.kt
index 3ea3eed8f1..845d6407d9 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgBolusStartWithSpeed.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgBolusStartWithSpeed.kt
@@ -1,19 +1,14 @@
-package info.nightscout.androidaps.plugins.pump.danaR.comm
+package info.nightscout.androidaps.danar.comm
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.interfaces.Constraint
-import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag
-import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPlugin
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
class MsgBolusStartWithSpeed(
- private val aapsLogger: AAPSLogger,
- constraintChecker: ConstraintChecker,
- private val danaRPump: DanaRPump,
+ injector: HasAndroidInjector,
private var amount: Double,
speed: Int
-) : MessageBase() {
+) : MessageBase(injector) {
init {
SetCommand(0x0104)
@@ -33,6 +28,6 @@ class MsgBolusStartWithSpeed(
failed = false
aapsLogger.debug(LTag.PUMPBTCOMM, "Messsage response: $errorCode OK")
}
- danaRPump.messageStartErrorCode = errorCode
+ danaPump.bolusStartErrorCode = errorCode
}
}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgBolusStop.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgBolusStop.kt
similarity index 50%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgBolusStop.kt
rename to danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgBolusStop.kt
index bdabef46da..a531d1cc03 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgBolusStop.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgBolusStop.kt
@@ -1,20 +1,13 @@
-package info.nightscout.androidaps.plugins.pump.danaR.comm
+package info.nightscout.androidaps.danar.comm
-import info.nightscout.androidaps.MainApp
-import info.nightscout.androidaps.R
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.danar.R
import info.nightscout.androidaps.logging.LTag
-import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.overview.events.EventOverviewBolusProgress
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
-import info.nightscout.androidaps.utils.resources.ResourceHelper
class MsgBolusStop(
- private val aapsLogger: AAPSLogger,
- private val rxBus: RxBusWrapper,
- private val resourceHelper: ResourceHelper,
- private val danaRPump: DanaRPump
-) : MessageBase() {
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
init {
SetCommand(0x0101)
@@ -24,9 +17,9 @@ class MsgBolusStop(
override fun handleMessage(bytes: ByteArray) {
aapsLogger.debug(LTag.PUMPCOMM, "Messsage received")
val bolusingEvent = EventOverviewBolusProgress
- danaRPump.bolusStopped = true
- if (!danaRPump.bolusStopForced) {
- danaRPump.bolusingTreatment?.insulin = danaRPump.bolusAmountToBeDelivered
+ danaPump.bolusStopped = true
+ if (!danaPump.bolusStopForced) {
+ danaPump.bolusingTreatment?.insulin = danaPump.bolusAmountToBeDelivered
bolusingEvent.status = resourceHelper.gs(R.string.overview_bolusprogress_delivered)
bolusingEvent.percent = 100
} else {
diff --git a/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgCheckValue.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgCheckValue.kt
new file mode 100644
index 0000000000..d6c9ef2255
--- /dev/null
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgCheckValue.kt
@@ -0,0 +1,30 @@
+package info.nightscout.androidaps.danar.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.logging.LTag
+
+class MsgCheckValue(
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
+
+ init {
+ SetCommand(0xF0F1)
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun handleMessage(bytes: ByteArray) {
+ danaPump.isNewPump = true
+ aapsLogger.debug(LTag.PUMPCOMM, "New firmware confirmed")
+ danaPump.hwModel = intFromBuff(bytes, 0, 1)
+ danaPump.protocol = intFromBuff(bytes, 1, 1)
+ danaPump.productCode = intFromBuff(bytes, 2, 1)
+ if (danaPump.hwModel != DanaPump.EXPORT_MODEL) {
+ danaRPlugin.disconnect("Wrong Model")
+ aapsLogger.debug(LTag.PUMPCOMM, "Wrong model selected")
+ }
+ aapsLogger.debug(LTag.PUMPCOMM, "Model: " + String.format("%02X ", danaPump.hwModel))
+ aapsLogger.debug(LTag.PUMPCOMM, "Protocol: " + String.format("%02X ", danaPump.protocol))
+ aapsLogger.debug(LTag.PUMPCOMM, "Product Code: " + String.format("%02X ", danaPump.productCode))
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgError.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgError.kt
similarity index 64%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgError.kt
rename to danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgError.kt
index 6069520870..4791424d8e 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgError.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgError.kt
@@ -1,20 +1,13 @@
-package info.nightscout.androidaps.plugins.pump.danaR.comm
+package info.nightscout.androidaps.danar.comm
-import info.nightscout.androidaps.R
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.danar.R
import info.nightscout.androidaps.logging.LTag
-import info.nightscout.androidaps.plugins.bus.RxBusWrapper
-import info.nightscout.androidaps.plugins.general.nsclient.NSUpload
import info.nightscout.androidaps.plugins.general.overview.events.EventOverviewBolusProgress
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
-import info.nightscout.androidaps.utils.resources.ResourceHelper
class MsgError(
- private val aapsLogger: AAPSLogger,
- private val rxBus: RxBusWrapper,
- private val resourceHelper: ResourceHelper,
- private val danaRPump: DanaRPump
-) : MessageBase() {
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
init {
SetCommand(0x0601)
@@ -33,7 +26,7 @@ class MsgError(
}
if (errorCode < 8) { // bolus delivering stopped
val bolusingEvent = EventOverviewBolusProgress
- danaRPump.bolusStopped = true
+ danaPump.bolusStopped = true
bolusingEvent.status = errorString
rxBus.send(bolusingEvent)
failed = true
@@ -41,6 +34,6 @@ class MsgError(
failed = false
}
aapsLogger.debug(LTag.PUMPCOMM, "Error detected: $errorString")
- NSUpload.uploadError(errorString)
+ nsUpload.uploadError(errorString)
}
}
\ No newline at end of file
diff --git a/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryAlarm.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryAlarm.kt
new file mode 100644
index 0000000000..c531f30ad4
--- /dev/null
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryAlarm.kt
@@ -0,0 +1,15 @@
+package info.nightscout.androidaps.danar.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+
+class MsgHistoryAlarm(
+ injector: HasAndroidInjector
+) : MsgHistoryAll(injector) {
+
+ init {
+ SetCommand(0x3105)
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+ // Handle message taken from MsgHistoryAll
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryAll.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryAll.kt
similarity index 65%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryAll.kt
rename to danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryAll.kt
index 8c50099756..17b4d54d3e 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgHistoryAll.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryAll.kt
@@ -1,17 +1,13 @@
-package info.nightscout.androidaps.plugins.pump.danaR.comm
+package info.nightscout.androidaps.danar.comm
-import info.nightscout.androidaps.MainApp
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.db.DanaRHistoryRecord
-import info.nightscout.androidaps.logging.AAPSLogger
+import info.nightscout.androidaps.events.EventDanaRSyncStatus
import info.nightscout.androidaps.logging.LTag
-import info.nightscout.androidaps.plugins.bus.RxBusWrapper
-import info.nightscout.androidaps.plugins.pump.danaR.events.EventDanaRSyncStatus
-import info.nightscout.androidaps.utils.DateUtil
open class MsgHistoryAll(
- val aapsLogger: AAPSLogger,
- val rxBus: RxBusWrapper
-) : MessageBase() {
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
init {
SetCommand(0x41F2)
@@ -21,12 +17,10 @@ open class MsgHistoryAll(
override fun handleMessage(bytes: ByteArray) {
val recordCode = intFromBuff(bytes, 0, 1).toByte()
val date = dateFromBuff(bytes, 1) // 3 bytes
- val datetime = dateTimeFromBuff(bytes, 1) // 5 bytes
- val datetimewihtsec = dateTimeSecFromBuff(bytes, 1) // 6 bytes
val dailyBasal = intFromBuff(bytes, 4, 2) * 0.01
val dailyBolus = intFromBuff(bytes, 6, 2) * 0.01
- val paramByte5 = intFromBuff(bytes, 4, 1).toByte()
- val paramByte6 = intFromBuff(bytes, 5, 1).toByte()
+ //val paramByte5 = intFromBuff(bytes, 4, 1).toByte()
+ //val paramByte6 = intFromBuff(bytes, 5, 1).toByte()
val paramByte7 = intFromBuff(bytes, 6, 1).toByte()
val paramByte8 = intFromBuff(bytes, 7, 1).toByte()
val value = intFromBuff(bytes, 8, 2).toDouble()
@@ -35,7 +29,8 @@ open class MsgHistoryAll(
danaRHistoryRecord.setBytes(bytes)
var messageType = ""
when (recordCode) {
- RecordTypes.RECORD_TYPE_BOLUS -> {
+ info.nightscout.androidaps.dana.comm.RecordTypes.RECORD_TYPE_BOLUS -> {
+ val datetime = dateTimeFromBuff(bytes, 1) // 5 bytes
danaRHistoryRecord.recordDate = datetime
when (0xF0 and paramByte8.toInt()) {
0xA0 -> {
@@ -64,57 +59,65 @@ open class MsgHistoryAll(
danaRHistoryRecord.recordValue = value * 0.01
}
- RecordTypes.RECORD_TYPE_DAILY -> {
+ info.nightscout.androidaps.dana.comm.RecordTypes.RECORD_TYPE_DAILY -> {
messageType += "dailyinsulin"
danaRHistoryRecord.recordDate = date
danaRHistoryRecord.recordDailyBasal = dailyBasal
danaRHistoryRecord.recordDailyBolus = dailyBolus
}
- RecordTypes.RECORD_TYPE_PRIME -> {
+ info.nightscout.androidaps.dana.comm.RecordTypes.RECORD_TYPE_PRIME -> {
messageType += "prime"
+ val datetimewihtsec = dateTimeSecFromBuff(bytes, 1) // 6 bytes
danaRHistoryRecord.recordDate = datetimewihtsec
danaRHistoryRecord.recordValue = value * 0.01
}
- RecordTypes.RECORD_TYPE_ERROR -> {
+ info.nightscout.androidaps.dana.comm.RecordTypes.RECORD_TYPE_ERROR -> {
messageType += "error"
+ val datetimewihtsec = dateTimeSecFromBuff(bytes, 1) // 6 bytes
danaRHistoryRecord.recordDate = datetimewihtsec
danaRHistoryRecord.recordValue = value * 0.01
}
- RecordTypes.RECORD_TYPE_REFILL -> {
+ info.nightscout.androidaps.dana.comm.RecordTypes.RECORD_TYPE_REFILL -> {
messageType += "refill"
+ val datetimewihtsec = dateTimeSecFromBuff(bytes, 1) // 6 bytes
danaRHistoryRecord.recordDate = datetimewihtsec
danaRHistoryRecord.recordValue = value * 0.01
}
- RecordTypes.RECORD_TYPE_BASALHOUR -> {
+ info.nightscout.androidaps.dana.comm.RecordTypes.RECORD_TYPE_BASALHOUR -> {
messageType += "basal hour"
+ val datetimewihtsec = dateTimeSecFromBuff(bytes, 1) // 6 bytes
danaRHistoryRecord.recordDate = datetimewihtsec
danaRHistoryRecord.recordValue = value * 0.01
}
- RecordTypes.RECORD_TYPE_TB -> {
+ info.nightscout.androidaps.dana.comm.RecordTypes.RECORD_TYPE_TB -> {
messageType += "tb"
+ val datetimewihtsec = dateTimeSecFromBuff(bytes, 1) // 6 bytes
danaRHistoryRecord.recordDate = datetimewihtsec
danaRHistoryRecord.recordValue = value * 0.01
}
- RecordTypes.RECORD_TYPE_GLUCOSE -> {
+ info.nightscout.androidaps.dana.comm.RecordTypes.RECORD_TYPE_GLUCOSE -> {
messageType += "glucose"
+ val datetimewihtsec = dateTimeSecFromBuff(bytes, 1) // 6 bytes
danaRHistoryRecord.recordDate = datetimewihtsec
danaRHistoryRecord.recordValue = value
}
- RecordTypes.RECORD_TYPE_CARBO -> {
+ info.nightscout.androidaps.dana.comm.RecordTypes.RECORD_TYPE_CARBO -> {
messageType += "carbo"
+ val datetimewihtsec = dateTimeSecFromBuff(bytes, 1) // 6 bytes
danaRHistoryRecord.recordDate = datetimewihtsec
danaRHistoryRecord.recordValue = value
}
- RecordTypes.RECORD_TYPE_ALARM -> {
+ info.nightscout.androidaps.dana.comm.RecordTypes.RECORD_TYPE_ALARM -> {
messageType += "alarm"
+ val datetimewihtsec = dateTimeSecFromBuff(bytes, 1) // 6 bytes
danaRHistoryRecord.recordDate = datetimewihtsec
var strAlarm = "None"
when (paramByte8.toInt()) {
@@ -127,17 +130,18 @@ open class MsgHistoryAll(
danaRHistoryRecord.recordValue = value * 0.01
}
- RecordTypes.RECORD_TYPE_SUSPEND -> {
+ info.nightscout.androidaps.dana.comm.RecordTypes.RECORD_TYPE_SUSPEND -> {
messageType += "suspend"
+ val datetimewihtsec = dateTimeSecFromBuff(bytes, 1) // 6 bytes
danaRHistoryRecord.recordDate = datetimewihtsec
var strRecordValue = "Off"
if (paramByte8.toInt() == 79) strRecordValue = "On"
danaRHistoryRecord.stringRecordValue = strRecordValue
}
- 17.toByte() -> failed = true
+ 17.toByte() -> failed = true
}
- MainApp.getDbHelper().createOrUpdate(danaRHistoryRecord)
- rxBus.send(EventDanaRSyncStatus(DateUtil.dateAndTimeString(danaRHistoryRecord.recordDate) + " " + messageType))
+ databaseHelper.createOrUpdate(danaRHistoryRecord)
+ rxBus.send(EventDanaRSyncStatus(dateUtil.dateAndTimeString(danaRHistoryRecord.recordDate) + " " + messageType))
}
}
\ No newline at end of file
diff --git a/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryAllDone.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryAllDone.kt
new file mode 100644
index 0000000000..431a301a7a
--- /dev/null
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryAllDone.kt
@@ -0,0 +1,20 @@
+package info.nightscout.androidaps.danar.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+
+class MsgHistoryAllDone(
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
+
+ init {
+ SetCommand(0x41F1)
+ danaPump.historyDoneReceived = false
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun handleMessage(bytes: ByteArray) {
+ danaPump.historyDoneReceived = true
+ aapsLogger.debug(LTag.PUMPCOMM, "History all done received")
+ }
+}
\ No newline at end of file
diff --git a/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryBasalHour.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryBasalHour.kt
new file mode 100644
index 0000000000..a90847871e
--- /dev/null
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryBasalHour.kt
@@ -0,0 +1,15 @@
+package info.nightscout.androidaps.danar.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+
+class MsgHistoryBasalHour(
+ injector: HasAndroidInjector
+) : MsgHistoryAll(injector) {
+
+ init {
+ SetCommand(0x310A)
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+ // Handle message taken from MsgHistoryAll
+}
\ No newline at end of file
diff --git a/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryBolus.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryBolus.kt
new file mode 100644
index 0000000000..b7f2cd011a
--- /dev/null
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryBolus.kt
@@ -0,0 +1,15 @@
+package info.nightscout.androidaps.danar.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+
+class MsgHistoryBolus(
+ injector: HasAndroidInjector
+) : MsgHistoryAll(injector) {
+
+ init {
+ SetCommand(0x3101)
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+ // Handle message taken from MsgHistoryAll
+}
\ No newline at end of file
diff --git a/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryCarbo.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryCarbo.kt
new file mode 100644
index 0000000000..2aa76526d7
--- /dev/null
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryCarbo.kt
@@ -0,0 +1,15 @@
+package info.nightscout.androidaps.danar.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+
+class MsgHistoryCarbo(
+ injector: HasAndroidInjector
+) : MsgHistoryAll(injector) {
+
+ init {
+ SetCommand(0x3107)
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+ // Handle message taken from MsgHistoryAll
+}
\ No newline at end of file
diff --git a/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryDailyInsulin.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryDailyInsulin.kt
new file mode 100644
index 0000000000..df0e3135d6
--- /dev/null
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryDailyInsulin.kt
@@ -0,0 +1,15 @@
+package info.nightscout.androidaps.danar.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+
+class MsgHistoryDailyInsulin(
+ injector: HasAndroidInjector
+) : MsgHistoryAll(injector) {
+
+ init {
+ SetCommand(0x3102)
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+ // Handle message taken from MsgHistoryAll
+}
\ No newline at end of file
diff --git a/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryDone.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryDone.kt
new file mode 100644
index 0000000000..a528a630c4
--- /dev/null
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryDone.kt
@@ -0,0 +1,20 @@
+package info.nightscout.androidaps.danar.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+
+class MsgHistoryDone(
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
+
+ init {
+ SetCommand(0x31F1)
+ danaPump.historyDoneReceived = false
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun handleMessage(bytes: ByteArray) {
+ danaPump.historyDoneReceived = true
+ aapsLogger.debug(LTag.PUMPCOMM, "History done received")
+ }
+}
\ No newline at end of file
diff --git a/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryError.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryError.kt
new file mode 100644
index 0000000000..55ddadb91a
--- /dev/null
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryError.kt
@@ -0,0 +1,15 @@
+package info.nightscout.androidaps.danar.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+
+class MsgHistoryError(
+ injector: HasAndroidInjector
+) : MsgHistoryAll(injector) {
+
+ init {
+ SetCommand(0x3106)
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+ // Handle message taken from MsgHistoryAll
+}
\ No newline at end of file
diff --git a/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryGlucose.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryGlucose.kt
new file mode 100644
index 0000000000..15f40773fa
--- /dev/null
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryGlucose.kt
@@ -0,0 +1,15 @@
+package info.nightscout.androidaps.danar.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+
+class MsgHistoryGlucose(
+ injector: HasAndroidInjector
+) : MsgHistoryAll(injector) {
+
+ init {
+ SetCommand(0x3104)
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+ // Handle message taken from MsgHistoryAll
+}
\ No newline at end of file
diff --git a/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryNew.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryNew.kt
new file mode 100644
index 0000000000..21e9d23672
--- /dev/null
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryNew.kt
@@ -0,0 +1,15 @@
+package info.nightscout.androidaps.danar.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+
+class MsgHistoryNew(
+ injector: HasAndroidInjector
+) : MsgHistoryAll(injector) {
+
+ init {
+ SetCommand(0x42F2)
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+ // Handle message taken from MsgHistoryAll
+}
\ No newline at end of file
diff --git a/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryNewDone.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryNewDone.kt
new file mode 100644
index 0000000000..77f627d8ff
--- /dev/null
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryNewDone.kt
@@ -0,0 +1,20 @@
+package info.nightscout.androidaps.danar.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+
+class MsgHistoryNewDone(
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
+
+ init {
+ SetCommand(0x42F1)
+ danaPump.historyDoneReceived = false
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun handleMessage(bytes: ByteArray) {
+ danaPump.historyDoneReceived = true
+ aapsLogger.debug(LTag.PUMPCOMM, "History new done received")
+ }
+}
\ No newline at end of file
diff --git a/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryRefill.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryRefill.kt
new file mode 100644
index 0000000000..1b4b38d67b
--- /dev/null
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistoryRefill.kt
@@ -0,0 +1,15 @@
+package info.nightscout.androidaps.danar.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+
+class MsgHistoryRefill(
+ injector: HasAndroidInjector
+) : MsgHistoryAll(injector) {
+
+ init {
+ SetCommand(0x3108)
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+ // Handle message taken from MsgHistoryAll
+}
\ No newline at end of file
diff --git a/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistorySuspend.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistorySuspend.kt
new file mode 100644
index 0000000000..a0b6bbb9a3
--- /dev/null
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgHistorySuspend.kt
@@ -0,0 +1,15 @@
+package info.nightscout.androidaps.danar.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+
+class MsgHistorySuspend(
+ injector: HasAndroidInjector
+) : MsgHistoryAll(injector) {
+
+ init {
+ SetCommand(0x3109)
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+ // Handle message taken from MsgHistoryAll
+}
\ No newline at end of file
diff --git a/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgInitConnStatusBasic.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgInitConnStatusBasic.kt
new file mode 100644
index 0000000000..c0b3864df1
--- /dev/null
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgInitConnStatusBasic.kt
@@ -0,0 +1,56 @@
+package info.nightscout.androidaps.danar.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+
+class MsgInitConnStatusBasic(
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
+
+ init {
+ SetCommand(0x0303)
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun handleMessage(bytes: ByteArray) {
+ if (bytes.size - 10 < 21) {
+ return
+ }
+ danaPump.pumpSuspended = intFromBuff(bytes, 0, 1) == 1
+ danaPump.calculatorEnabled = intFromBuff(bytes, 1, 1) == 1
+ danaPump.dailyTotalUnits = intFromBuff(bytes, 2, 3) / 750.0
+ danaPump.maxDailyTotalUnits = intFromBuff(bytes, 5, 2) / 100
+ danaPump.reservoirRemainingUnits = intFromBuff(bytes, 7, 3) / 750.0
+ danaPump.bolusBlocked = intFromBuff(bytes, 10, 1) == 1
+ danaPump.currentBasal = intFromBuff(bytes, 11, 2) / 100.0
+ danaPump.tempBasalPercent = intFromBuff(bytes, 13, 1)
+ danaPump.isExtendedInProgress = intFromBuff(bytes, 14, 1) == 1
+ danaPump.isTempBasalInProgress = intFromBuff(bytes, 15, 1) == 1
+ val statusBasalUDOption = intFromBuff(bytes, 16, 1)
+ danaPump.isDualBolusInProgress = intFromBuff(bytes, 17, 1) == 1
+ val extendedBolusRate = intFromBuff(bytes, 18, 2) / 100.0
+ danaPump.batteryRemaining = intFromBuff(bytes, 20, 1)
+ val bolusConfig = intFromBuff(bytes, 21, 1)
+ val deliveryPrime = bolusConfig and info.nightscout.androidaps.dana.DanaPump.DELIVERY_PRIME != 0
+ val deliveryStepBolus = bolusConfig and info.nightscout.androidaps.dana.DanaPump.DELIVERY_STEP_BOLUS != 0
+ val deliveryBasal = bolusConfig and info.nightscout.androidaps.dana.DanaPump.DELIVERY_BASAL != 0
+ val deliveryExtBolus = bolusConfig and info.nightscout.androidaps.dana.DanaPump.DELIVERY_EXT_BOLUS != 0
+ aapsLogger.debug(LTag.PUMPCOMM, "Delivery prime: $deliveryPrime")
+ aapsLogger.debug(LTag.PUMPCOMM, "Delivery step bolus: $deliveryStepBolus")
+ aapsLogger.debug(LTag.PUMPCOMM, "Delivery basal: $deliveryBasal")
+ aapsLogger.debug(LTag.PUMPCOMM, "Delivery ext bolus: $deliveryExtBolus")
+ aapsLogger.debug(LTag.PUMPCOMM, "Pump suspended: " + danaPump.pumpSuspended)
+ aapsLogger.debug(LTag.PUMPCOMM, "Calculator enabled: " + danaPump.calculatorEnabled)
+ aapsLogger.debug(LTag.PUMPCOMM, "Daily total units: " + danaPump.dailyTotalUnits)
+ aapsLogger.debug(LTag.PUMPCOMM, "Max daily total units: " + danaPump.maxDailyTotalUnits)
+ aapsLogger.debug(LTag.PUMPCOMM, "Reservoir remaining units: " + danaPump.reservoirRemainingUnits)
+ aapsLogger.debug(LTag.PUMPCOMM, "Bolus blocked: " + danaPump.bolusBlocked)
+ aapsLogger.debug(LTag.PUMPCOMM, "Current basal: " + danaPump.currentBasal)
+ aapsLogger.debug(LTag.PUMPCOMM, "Current temp basal percent: " + danaPump.tempBasalPercent)
+ aapsLogger.debug(LTag.PUMPCOMM, "Is extended bolus running: " + danaPump.isExtendedInProgress)
+ aapsLogger.debug(LTag.PUMPCOMM, "statusBasalUDOption: $statusBasalUDOption")
+ aapsLogger.debug(LTag.PUMPCOMM, "Is dual bolus running: " + danaPump.isDualBolusInProgress)
+ aapsLogger.debug(LTag.PUMPCOMM, "Extended bolus rate: $extendedBolusRate")
+ aapsLogger.debug(LTag.PUMPCOMM, "Battery remaining: " + danaPump.batteryRemaining)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgInitConnStatusBolus.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgInitConnStatusBolus.kt
similarity index 56%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgInitConnStatusBolus.kt
rename to danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgInitConnStatusBolus.kt
index 580df8e133..f866533d08 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgInitConnStatusBolus.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgInitConnStatusBolus.kt
@@ -1,21 +1,15 @@
-package info.nightscout.androidaps.plugins.pump.danaR.comm
+package info.nightscout.androidaps.danar.comm
-import info.nightscout.androidaps.R
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.danar.R
import info.nightscout.androidaps.logging.LTag
-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
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
-import info.nightscout.androidaps.utils.resources.ResourceHelper
class MsgInitConnStatusBolus(
- private val aapsLogger: AAPSLogger,
- private val rxBus: RxBusWrapper,
- private val resourceHelper: ResourceHelper,
- private val danaRPump: DanaRPump
-) : MessageBase() {
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
init {
SetCommand(0x0302)
@@ -29,14 +23,14 @@ class MsgInitConnStatusBolus(
}
failed = false
val bolusConfig = intFromBuff(bytes, 0, 1)
- danaRPump.isExtendedBolusEnabled = bolusConfig and 0x01 != 0
- danaRPump.bolusStep = intFromBuff(bytes, 1, 1) / 100.0
- danaRPump.maxBolus = intFromBuff(bytes, 2, 2) / 100.0
+ danaPump.isExtendedBolusEnabled = bolusConfig and 0x01 != 0
+ danaPump.bolusStep = intFromBuff(bytes, 1, 1) / 100.0
+ danaPump.maxBolus = intFromBuff(bytes, 2, 2) / 100.0
//int bolusRate = intFromBuff(bytes, 4, 8);
- aapsLogger.debug(LTag.PUMPCOMM, "Is Extended bolus enabled: " + danaRPump.isExtendedBolusEnabled)
- aapsLogger.debug(LTag.PUMPCOMM, "Bolus increment: " + danaRPump.bolusStep)
- aapsLogger.debug(LTag.PUMPCOMM, "Bolus max: " + danaRPump.maxBolus)
- if (!danaRPump.isExtendedBolusEnabled) {
+ aapsLogger.debug(LTag.PUMPCOMM, "Is Extended bolus enabled: " + danaPump.isExtendedBolusEnabled)
+ aapsLogger.debug(LTag.PUMPCOMM, "Bolus increment: " + danaPump.bolusStep)
+ aapsLogger.debug(LTag.PUMPCOMM, "Bolus max: " + danaPump.maxBolus)
+ if (!danaPump.isExtendedBolusEnabled) {
val notification = Notification(Notification.EXTENDED_BOLUS_DISABLED, resourceHelper.gs(R.string.danar_enableextendedbolus), Notification.URGENT)
rxBus.send(EventNewNotification(notification))
} else {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgInitConnStatusOption.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgInitConnStatusOption.kt
similarity index 67%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgInitConnStatusOption.kt
rename to danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgInitConnStatusOption.kt
index ee1d26ce3f..3fa4ef120c 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgInitConnStatusOption.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgInitConnStatusOption.kt
@@ -1,23 +1,15 @@
-package info.nightscout.androidaps.plugins.pump.danaR.comm
+package info.nightscout.androidaps.danar.comm
-import info.nightscout.androidaps.R
-import info.nightscout.androidaps.interfaces.ActivePluginProvider
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.danar.R
import info.nightscout.androidaps.logging.LTag
-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
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
-import info.nightscout.androidaps.utils.resources.ResourceHelper
class MsgInitConnStatusOption(
- private val aapsLogger: AAPSLogger,
- private val rxBus: RxBusWrapper,
- private val resourceHelper: ResourceHelper,
- private val danaRPump: DanaRPump,
- private val activePlugin: ActivePluginProvider
-) : MessageBase() {
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
init {
SetCommand(0x0304)
@@ -36,12 +28,12 @@ class MsgInitConnStatusOption(
//int none = intFromBuff(bytes, 8, 1);
if (bytes.size >= 21) {
failed = false
- danaRPump.password = intFromBuff(bytes, 9, 2) xor 0x3463
- aapsLogger.debug(LTag.PUMPCOMM, "Pump password: " + danaRPump.password)
+ danaPump.password = intFromBuff(bytes, 9, 2) xor 0x3463
+ aapsLogger.debug(LTag.PUMPCOMM, "Pump password: " + danaPump.password)
} else {
failed = true
}
- if (!danaRPump.isPasswordOK) {
+ if (!danaPump.isPasswordOK) {
val notification = Notification(Notification.WRONG_PUMP_PASSWORD, resourceHelper.gs(R.string.wrongpumppassword), Notification.URGENT)
rxBus.send(EventNewNotification(notification))
} else {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgInitConnStatusTime.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgInitConnStatusTime.kt
similarity index 57%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgInitConnStatusTime.kt
rename to danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgInitConnStatusTime.kt
index 1ff8eb0e9b..090d4ee443 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgInitConnStatusTime.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgInitConnStatusTime.kt
@@ -1,31 +1,16 @@
-package info.nightscout.androidaps.plugins.pump.danaR.comm
+package info.nightscout.androidaps.danar.comm
-import info.nightscout.androidaps.R
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.danar.R
import info.nightscout.androidaps.events.EventRebuildTabs
-import info.nightscout.androidaps.interfaces.CommandQueueProvider
import info.nightscout.androidaps.interfaces.PluginType
-import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag
-import info.nightscout.androidaps.plugins.bus.RxBusWrapper
-import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPlugin
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
-import info.nightscout.androidaps.plugins.pump.danaRKorean.DanaRKoreanPlugin
-import info.nightscout.androidaps.utils.DateUtil
-import info.nightscout.androidaps.utils.resources.ResourceHelper
class MsgInitConnStatusTime(
- private val aapsLogger: AAPSLogger,
- private val rxBus: RxBusWrapper,
- private val resourceHelper: ResourceHelper,
- private val danaRPump: DanaRPump,
- private val danaRPlugin: DanaRPlugin,
- private val danaRKoreanPlugin: DanaRKoreanPlugin,
- private val configBuilderPlugin: ConfigBuilderPlugin,
- private val commandQueue: CommandQueueProvider
-) : MessageBase() {
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
init {
SetCommand(0x0301)
@@ -42,9 +27,9 @@ class MsgInitConnStatusTime(
danaRKoreanPlugin.setFragmentVisible(PluginType.PUMP, true)
danaRPlugin.setPluginEnabled(PluginType.PUMP, false)
danaRPlugin.setFragmentVisible(PluginType.PUMP, false)
- danaRPump.reset() // mark not initialized
+ danaPump.reset() // mark not initialized
//If profile coming from pump, switch it as well
- configBuilderPlugin.storeSettings("ChangingDanaDriver")
+ configBuilder.storeSettings("ChangingDanaDriver")
rxBus.send(EventRebuildTabs())
commandQueue.readStatus("PumpDriverChange", null) // force new connection
failed = false
@@ -54,7 +39,7 @@ class MsgInitConnStatusTime(
}
val time = dateTimeSecFromBuff(bytes, 0)
val versionCode = intFromBuff(bytes, 6, 1)
- aapsLogger.debug(LTag.PUMPCOMM, "Pump time: " + DateUtil.dateAndTimeString(time))
+ aapsLogger.debug(LTag.PUMPCOMM, "Pump time: " + dateUtil.dateAndTimeString(time))
aapsLogger.debug(LTag.PUMPCOMM, "Version code: $versionCode")
}
}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgPCCommStart.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgPCCommStart.kt
similarity index 64%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgPCCommStart.kt
rename to danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgPCCommStart.kt
index 35e5f2391a..3bb8aca2df 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgPCCommStart.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgPCCommStart.kt
@@ -1,11 +1,11 @@
-package info.nightscout.androidaps.plugins.pump.danaR.comm
+package info.nightscout.androidaps.danar.comm
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
class MsgPCCommStart constructor(
- private val aapsLogger: AAPSLogger
-) : MessageBase() {
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
init {
SetCommand(0x3001)
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgPCCommStop.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgPCCommStop.kt
similarity index 63%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgPCCommStop.kt
rename to danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgPCCommStop.kt
index c6d6ac4ae7..e71226a556 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgPCCommStop.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgPCCommStop.kt
@@ -1,11 +1,11 @@
-package info.nightscout.androidaps.plugins.pump.danaR.comm
+package info.nightscout.androidaps.danar.comm
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
class MsgPCCommStop(
- private val aapsLogger: AAPSLogger
-) : MessageBase() {
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
init {
SetCommand(0x3002)
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetActivateBasalProfile.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSetActivateBasalProfile.kt
similarity index 78%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetActivateBasalProfile.kt
rename to danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSetActivateBasalProfile.kt
index 6343002f99..da1f3fc439 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetActivateBasalProfile.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSetActivateBasalProfile.kt
@@ -1,12 +1,12 @@
-package info.nightscout.androidaps.plugins.pump.danaR.comm
+package info.nightscout.androidaps.danar.comm
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
class MsgSetActivateBasalProfile(
- private val aapsLogger: AAPSLogger,
+ injector: HasAndroidInjector,
index: Byte
-) : MessageBase() {
+) : MessageBase(injector) {
// index 0-3
init {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetBasalProfile.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSetBasalProfile.kt
similarity index 75%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetBasalProfile.kt
rename to danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSetBasalProfile.kt
index 1af0c71832..b72acacffe 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetBasalProfile.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSetBasalProfile.kt
@@ -1,20 +1,16 @@
-package info.nightscout.androidaps.plugins.pump.danaR.comm
+package info.nightscout.androidaps.danar.comm
-import info.nightscout.androidaps.R
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.danar.R
import info.nightscout.androidaps.logging.LTag
-import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification
-import info.nightscout.androidaps.utils.resources.ResourceHelper
class MsgSetBasalProfile(
- private val aapsLogger: AAPSLogger,
- private val rxBus: RxBusWrapper,
- private val resourceHelper: ResourceHelper,
+ injector: HasAndroidInjector,
index: Byte,
values: Array
-) : MessageBase() {
+) : MessageBase(injector) {
// index 0-3
init {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetCarbsEntry.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSetCarbsEntry.kt
similarity index 83%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetCarbsEntry.kt
rename to danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSetCarbsEntry.kt
index 0e62c0d625..bf5010d5e6 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetCarbsEntry.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSetCarbsEntry.kt
@@ -1,21 +1,21 @@
-package info.nightscout.androidaps.plugins.pump.danaR.comm
+package info.nightscout.androidaps.danar.comm
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
import java.util.*
class MsgSetCarbsEntry(
- private val aapsLogger: AAPSLogger,
+ injector: HasAndroidInjector,
val time: Long,
val amount: Int
-) : MessageBase() {
+) : MessageBase(injector) {
init {
SetCommand(0x0402)
aapsLogger.debug(LTag.PUMPBTCOMM, "New message")
val calendar = Calendar.getInstance()
calendar.timeInMillis = time
- AddParamByte(RecordTypes.RECORD_TYPE_CARBO)
+ AddParamByte(info.nightscout.androidaps.dana.comm.RecordTypes.RECORD_TYPE_CARBO)
AddParamByte((calendar[Calendar.YEAR] % 100).toByte())
AddParamByte((calendar[Calendar.MONTH] + 1).toByte())
AddParamByte(calendar[Calendar.DAY_OF_MONTH].toByte())
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetExtendedBolusStart.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSetExtendedBolusStart.kt
similarity index 79%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetExtendedBolusStart.kt
rename to danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSetExtendedBolusStart.kt
index 23da6ede84..e4af85ecf0 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetExtendedBolusStart.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSetExtendedBolusStart.kt
@@ -1,17 +1,15 @@
-package info.nightscout.androidaps.plugins.pump.danaR.comm
+package info.nightscout.androidaps.danar.comm
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.interfaces.Constraint
-import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag
-import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
class MsgSetExtendedBolusStart(
- private val aapsLogger: AAPSLogger,
- constraintChecker: ConstraintChecker,
+ injector: HasAndroidInjector,
private var amount: Double,
private var halfhours: Byte
-) : MessageBase() {
+) : MessageBase(injector) {
init {
SetCommand(0x0407)
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetExtendedBolusStop.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSetExtendedBolusStop.kt
similarity index 77%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetExtendedBolusStop.kt
rename to danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSetExtendedBolusStop.kt
index 887f6c0cdb..422fef6875 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetExtendedBolusStop.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSetExtendedBolusStop.kt
@@ -1,11 +1,11 @@
-package info.nightscout.androidaps.plugins.pump.danaR.comm
+package info.nightscout.androidaps.danar.comm
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
class MsgSetExtendedBolusStop(
- private val aapsLogger: AAPSLogger
-) : MessageBase() {
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
init {
SetCommand(0x0406)
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetSingleBasalProfile.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSetSingleBasalProfile.kt
similarity index 75%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetSingleBasalProfile.kt
rename to danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSetSingleBasalProfile.kt
index 2997a8478f..fe183a648e 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetSingleBasalProfile.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSetSingleBasalProfile.kt
@@ -1,19 +1,15 @@
-package info.nightscout.androidaps.plugins.pump.danaR.comm
+package info.nightscout.androidaps.danar.comm
-import info.nightscout.androidaps.R
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.danar.R
import info.nightscout.androidaps.logging.LTag
-import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification
-import info.nightscout.androidaps.utils.resources.ResourceHelper
class MsgSetSingleBasalProfile(
- private val aapsLogger: AAPSLogger,
- private val rxBus: RxBusWrapper,
- private val resourceHelper: ResourceHelper,
+ injector: HasAndroidInjector,
values: Array
-) : MessageBase() {
+) : MessageBase(injector) {
// index 0-3
init {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetTempBasalStart.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSetTempBasalStart.kt
similarity index 85%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetTempBasalStart.kt
rename to danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSetTempBasalStart.kt
index abdf6b9d1b..85a515d78b 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetTempBasalStart.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSetTempBasalStart.kt
@@ -1,13 +1,13 @@
-package info.nightscout.androidaps.plugins.pump.danaR.comm
+package info.nightscout.androidaps.danar.comm
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
class MsgSetTempBasalStart(
- private val aapsLogger: AAPSLogger,
+ injector: HasAndroidInjector,
private var percent: Int,
private var durationInHours: Int
-) : MessageBase() {
+) : MessageBase(injector) {
init {
SetCommand(0x0401)
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetTempBasalStop.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSetTempBasalStop.kt
similarity index 77%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetTempBasalStop.kt
rename to danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSetTempBasalStop.kt
index cc1308b5e3..8fa27bec42 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetTempBasalStop.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSetTempBasalStop.kt
@@ -1,11 +1,11 @@
-package info.nightscout.androidaps.plugins.pump.danaR.comm
+package info.nightscout.androidaps.danar.comm
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
class MsgSetTempBasalStop(
- private val aapsLogger: AAPSLogger
-) : MessageBase() {
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
init {
SetCommand(0x0403)
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetTime.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSetTime.kt
similarity index 50%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetTime.kt
rename to danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSetTime.kt
index 70971c431e..e9a61dcb9f 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSetTime.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSetTime.kt
@@ -1,19 +1,17 @@
-package info.nightscout.androidaps.plugins.pump.danaR.comm
+package info.nightscout.androidaps.danar.comm
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
-import info.nightscout.androidaps.utils.DateUtil
-import java.util.*
class MsgSetTime(
- private val aapsLogger: AAPSLogger,
- time: Date
-) : MessageBase() {
+ injector: HasAndroidInjector,
+ time: Long
+) : MessageBase(injector) {
init {
SetCommand(0x330a)
- AddParamDateTime(time)
- aapsLogger.debug(LTag.PUMPCOMM, "New message: time:" + DateUtil.dateAndTimeString(time))
+ AddParamDateTimeReversed(time)
+ aapsLogger.debug(LTag.PUMPCOMM, "New message: time:" + dateUtil.dateAndTimeString(time))
}
override fun handleMessage(bytes: ByteArray) {
diff --git a/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSetUserOptions.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSetUserOptions.kt
new file mode 100644
index 0000000000..68d6ef73d9
--- /dev/null
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSetUserOptions.kt
@@ -0,0 +1,41 @@
+package info.nightscout.androidaps.danar.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+
+class MsgSetUserOptions(
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
+
+ init {
+ SetCommand(0x330B)
+ if (danaPump.userOptionsFrompump == null) {
+ // No options set -> Exiting
+ aapsLogger.debug(LTag.PUMPCOMM, "NO USER OPTIONS LOADED EXITING!")
+ } else {
+ danaPump.userOptionsFrompump!![0] = (if (danaPump.timeDisplayType == 1) 0 else 1).toByte()
+ danaPump.userOptionsFrompump!![1] = danaPump.buttonScrollOnOff.toByte()
+ danaPump.userOptionsFrompump!![2] = danaPump.beepAndAlarm.toByte()
+ danaPump.userOptionsFrompump!![3] = danaPump.lcdOnTimeSec.toByte()
+ danaPump.userOptionsFrompump!![4] = danaPump.backlightOnTimeSec.toByte()
+ danaPump.userOptionsFrompump!![5] = danaPump.selectedLanguage.toByte()
+ danaPump.userOptionsFrompump!![8] = danaPump.units.toByte()
+ danaPump.userOptionsFrompump!![9] = danaPump.shutdownHour.toByte()
+ danaPump.userOptionsFrompump!![27] = danaPump.lowReservoirRate.toByte()
+ for (element in danaPump.userOptionsFrompump!!) {
+ AddParamByte(element)
+ }
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+ }
+
+ override fun handleMessage(bytes: ByteArray) {
+ val result = intFromBuff(bytes, 0, 1)
+ if (result != 1) {
+ failed = true
+ aapsLogger.debug(LTag.PUMPCOMM, "Setting user options: $result FAILED!!!")
+ } else {
+ aapsLogger.debug(LTag.PUMPCOMM, "Setting user options: $result")
+ }
+ }
+}
\ No newline at end of file
diff --git a/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSettingActiveProfile.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSettingActiveProfile.kt
new file mode 100644
index 0000000000..09ae3d740e
--- /dev/null
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSettingActiveProfile.kt
@@ -0,0 +1,20 @@
+package info.nightscout.androidaps.danar.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+
+class MsgSettingActiveProfile(
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
+
+ init {
+ SetCommand(0x320C)
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun handleMessage(bytes: ByteArray) {
+ danaPump.activeProfile = intFromBuff(bytes, 0, 1)
+ aapsLogger.debug(LTag.PUMPCOMM, "Active profile number: " + danaPump.activeProfile)
+ }
+
+}
\ No newline at end of file
diff --git a/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSettingBasal.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSettingBasal.kt
new file mode 100644
index 0000000000..dd62d52352
--- /dev/null
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSettingBasal.kt
@@ -0,0 +1,27 @@
+package info.nightscout.androidaps.danar.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+import java.util.*
+
+class MsgSettingBasal(
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
+
+ init {
+ SetCommand(0x3202)
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun handleMessage(bytes: ByteArray) {
+ danaPump.pumpProfiles = Array(4) { Array(48) { 0.0 } }
+ for (index in 0..23) {
+ var basal = intFromBuff(bytes, 2 * index, 2)
+ if (basal < danaRPlugin.pumpDescription.basalMinimumRate) basal = 0
+ danaPump.pumpProfiles!![danaPump.activeProfile][index] = basal / 100.0
+ }
+ for (index in 0..23) {
+ aapsLogger.debug(LTag.PUMPCOMM, "Basal " + String.format(Locale.ENGLISH, "%02d", index) + "h: " + danaPump.pumpProfiles!![danaPump.activeProfile][index])
+ }
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingBasalProfileAll.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSettingBasalProfileAll.kt
similarity index 71%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingBasalProfileAll.kt
rename to danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSettingBasalProfileAll.kt
index c0270a29dd..44314f131a 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingBasalProfileAll.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSettingBasalProfileAll.kt
@@ -1,8 +1,7 @@
-package info.nightscout.androidaps.plugins.pump.danaR.comm
+package info.nightscout.androidaps.danar.comm
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
import java.util.*
/**
@@ -14,19 +13,18 @@ import java.util.*
* THIS IS BROKEN IN PUMP... SENDING ONLY 1 PROFILE
*/
class MsgSettingBasalProfileAll(
- private val aapsLogger: AAPSLogger,
- private val danaRPump: DanaRPump
-) : MessageBase() {
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
override fun handleMessage(bytes: ByteArray) {
- danaRPump.pumpProfiles = Array(4) { Array(48) { 0.0 } }
- if (danaRPump.basal48Enable) {
+ danaPump.pumpProfiles = Array(4) { Array(48) { 0.0 } }
+ if (danaPump.basal48Enable) {
for (profile in 0..3) {
val position = intFromBuff(bytes, 107 * profile, 1)
for (index in 0..47) {
var basal = intFromBuff(bytes, 107 * profile + 2 * index + 1, 2)
if (basal < 10) basal = 0
- danaRPump.pumpProfiles!![position][index] = basal / 100.0
+ danaPump.pumpProfiles!![position][index] = basal / 100.0
}
}
} else {
@@ -36,14 +34,14 @@ class MsgSettingBasalProfileAll(
var basal = intFromBuff(bytes, 59 * profile + 2 * index + 1, 2)
if (basal < 10) basal = 0
aapsLogger.debug(LTag.PUMPCOMM, "position $position index $index")
- danaRPump.pumpProfiles!![position][index] = basal / 100.0
+ danaPump.pumpProfiles!![position][index] = basal / 100.0
}
}
}
- if (danaRPump.basal48Enable) {
+ if (danaPump.basal48Enable) {
for (profile in 0..3) {
for (index in 0..47) {
- aapsLogger.debug(LTag.PUMPCOMM, "Basal profile " + profile + ": " + String.format(Locale.ENGLISH, "%02d", index) + "h: " + danaRPump.pumpProfiles!![profile][index])
+ aapsLogger.debug(LTag.PUMPCOMM, "Basal profile " + profile + ": " + String.format(Locale.ENGLISH, "%02d", index) + "h: " + danaPump.pumpProfiles!![profile][index])
}
}
} else {
@@ -51,7 +49,7 @@ class MsgSettingBasalProfileAll(
for (index in 0..23) { //this is absurd danaRPump.pumpProfiles[profile][index] returns nullPointerException
aapsLogger.debug(LTag.PUMPCOMM, "Basal profile " + profile + ": " + String.format(Locale.ENGLISH, "%02d", index / 2) +
":" + String.format(Locale.ENGLISH, "%02d", index % 2 * 30) + " : " +
- danaRPump.pumpProfiles!![profile][index])
+ danaPump.pumpProfiles!![profile][index])
}
}
}
diff --git a/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSettingGlucose.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSettingGlucose.kt
new file mode 100644
index 0000000000..dd101f3240
--- /dev/null
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSettingGlucose.kt
@@ -0,0 +1,25 @@
+package info.nightscout.androidaps.danar.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.logging.LTag
+
+/**
+ * Created by mike on 05.07.2016.
+ */
+class MsgSettingGlucose(
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
+
+ init {
+ SetCommand(0x3209)
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun handleMessage(bytes: ByteArray) {
+ danaPump.units = intFromBuff(bytes, 0, 1)
+ danaPump.easyBasalMode = intFromBuff(bytes, 1, 1)
+ aapsLogger.debug(LTag.PUMPCOMM, "Pump units: " + if (danaPump.units == DanaPump.UNITS_MGDL) "MGDL" else "MMOL")
+ aapsLogger.debug(LTag.PUMPCOMM, "Easy basal mode: " + danaPump.easyBasalMode)
+ }
+}
\ No newline at end of file
diff --git a/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSettingMaxValues.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSettingMaxValues.kt
new file mode 100644
index 0000000000..aa5dba7afb
--- /dev/null
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSettingMaxValues.kt
@@ -0,0 +1,23 @@
+package info.nightscout.androidaps.danar.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+
+class MsgSettingMaxValues(
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
+
+ init {
+ SetCommand(0x3205)
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun handleMessage(bytes: ByteArray) {
+ danaPump.maxBolus = intFromBuff(bytes, 0, 2) / 100.0
+ danaPump.maxBasal = intFromBuff(bytes, 2, 2) / 100.0
+ danaPump.maxDailyTotalUnits = intFromBuff(bytes, 4, 2) / 100
+ aapsLogger.debug(LTag.PUMPCOMM, "Max bolus: " + danaPump.maxBolus)
+ aapsLogger.debug(LTag.PUMPCOMM, "Max basal: " + danaPump.maxBasal)
+ aapsLogger.debug(LTag.PUMPCOMM, "Total daily max units: " + danaPump.maxDailyTotalUnits)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingMeal.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSettingMeal.kt
similarity index 60%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingMeal.kt
rename to danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSettingMeal.kt
index df40a71cf1..2b235de981 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgSettingMeal.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSettingMeal.kt
@@ -1,24 +1,16 @@
-package info.nightscout.androidaps.plugins.pump.danaR.comm
+package info.nightscout.androidaps.danar.comm
-import info.nightscout.androidaps.R
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.danar.R
import info.nightscout.androidaps.interfaces.PluginType
-import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag
-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
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
-import info.nightscout.androidaps.plugins.pump.danaRKorean.DanaRKoreanPlugin
-import info.nightscout.androidaps.utils.resources.ResourceHelper
class MsgSettingMeal(
- private val aapsLogger: AAPSLogger,
- private val rxBus: RxBusWrapper,
- private val resourceHelper: ResourceHelper,
- private val danaRPump: DanaRPump,
- private val danaRKoreanPlugin: DanaRKoreanPlugin
-) : MessageBase() {
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
init {
SetCommand(0x3203)
@@ -26,29 +18,29 @@ class MsgSettingMeal(
}
override fun handleMessage(bytes: ByteArray) {
- danaRPump.basalStep = intFromBuff(bytes, 0, 1) / 100.0
- danaRPump.bolusStep = intFromBuff(bytes, 1, 1) / 100.0
+ danaPump.basalStep = intFromBuff(bytes, 0, 1) / 100.0
+ danaPump.bolusStep = intFromBuff(bytes, 1, 1) / 100.0
val bolusEnabled = intFromBuff(bytes, 2, 1) == 1
val melodyTime = intFromBuff(bytes, 3, 1)
val blockTime = intFromBuff(bytes, 4, 1)
- danaRPump.isConfigUD = intFromBuff(bytes, 5, 1) == 1
- aapsLogger.debug(LTag.PUMPCOMM, "Basal step: " + danaRPump.basalStep)
- aapsLogger.debug(LTag.PUMPCOMM, "Bolus step: " + danaRPump.bolusStep)
+ danaPump.isConfigUD = intFromBuff(bytes, 5, 1) == 1
+ aapsLogger.debug(LTag.PUMPCOMM, "Basal step: " + danaPump.basalStep)
+ aapsLogger.debug(LTag.PUMPCOMM, "Bolus step: " + danaPump.bolusStep)
aapsLogger.debug(LTag.PUMPCOMM, "Bolus enabled: $bolusEnabled")
aapsLogger.debug(LTag.PUMPCOMM, "Melody time: $melodyTime")
aapsLogger.debug(LTag.PUMPCOMM, "Block time: $blockTime")
- aapsLogger.debug(LTag.PUMPCOMM, "Is Config U/d: " + danaRPump.isConfigUD)
+ aapsLogger.debug(LTag.PUMPCOMM, "Is Config U/d: " + danaPump.isConfigUD)
// DanaRKorean is not possible to set to 0.01 but it works when controlled from AAPS
if (danaRKoreanPlugin.isEnabled(PluginType.PUMP)) {
- danaRPump.basalStep = 0.01
+ danaPump.basalStep = 0.01
}
- if (danaRPump.basalStep != 0.01) {
+ if (danaPump.basalStep != 0.01) {
val notification = Notification(Notification.WRONGBASALSTEP, resourceHelper.gs(R.string.danar_setbasalstep001), Notification.URGENT)
rxBus.send(EventNewNotification(notification))
} else {
rxBus.send(EventDismissNotification(Notification.WRONGBASALSTEP))
}
- if (danaRPump.isConfigUD) {
+ if (danaPump.isConfigUD) {
val notification = Notification(Notification.UD_MODE_ENABLED, resourceHelper.gs(R.string.danar_switchtouhmode), Notification.URGENT)
rxBus.send(EventNewNotification(notification))
} else {
diff --git a/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSettingProfileRatios.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSettingProfileRatios.kt
new file mode 100644
index 0000000000..47d37d746a
--- /dev/null
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSettingProfileRatios.kt
@@ -0,0 +1,37 @@
+package info.nightscout.androidaps.danar.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.logging.LTag
+
+class MsgSettingProfileRatios(
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
+
+ init {
+ SetCommand(0x3204)
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun handleMessage(bytes: ByteArray) {
+ if (danaPump.units == DanaPump.UNITS_MGDL) {
+ danaPump.currentCIR = intFromBuff(bytes, 0, 2)
+ danaPump.currentCF = intFromBuff(bytes, 2, 2).toDouble()
+ danaPump.currentAI = intFromBuff(bytes, 4, 2) / 100.0
+ danaPump.currentTarget = intFromBuff(bytes, 6, 2).toDouble()
+ danaPump.currentAIDR = intFromBuff(bytes, 8, 1)
+ } else {
+ danaPump.currentCIR = intFromBuff(bytes, 0, 2)
+ danaPump.currentCF = intFromBuff(bytes, 2, 2) / 100.0
+ danaPump.currentAI = intFromBuff(bytes, 4, 2) / 100.0
+ danaPump.currentTarget = intFromBuff(bytes, 6, 2) / 100.0
+ danaPump.currentAIDR = intFromBuff(bytes, 8, 1)
+ }
+ aapsLogger.debug(LTag.PUMPCOMM, "Pump units (saved): " + if (danaPump.units == DanaPump.UNITS_MGDL) "MGDL" else "MMOL")
+ aapsLogger.debug(LTag.PUMPCOMM, "Current pump CIR: " + danaPump.currentCIR)
+ aapsLogger.debug(LTag.PUMPCOMM, "Current pump CF: " + danaPump.currentCF)
+ aapsLogger.debug(LTag.PUMPCOMM, "Current pump AI: " + danaPump.currentAI)
+ aapsLogger.debug(LTag.PUMPCOMM, "Current pump target: " + danaPump.currentTarget)
+ aapsLogger.debug(LTag.PUMPCOMM, "Current pump AIDR: " + danaPump.currentAIDR)
+ }
+}
\ No newline at end of file
diff --git a/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSettingProfileRatiosAll.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSettingProfileRatiosAll.kt
new file mode 100644
index 0000000000..5ae004ceac
--- /dev/null
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSettingProfileRatiosAll.kt
@@ -0,0 +1,46 @@
+package info.nightscout.androidaps.danar.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.logging.LTag
+
+class MsgSettingProfileRatiosAll(
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
+
+ init {
+ SetCommand(0x320D)
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun handleMessage(bytes: ByteArray) {
+ if (danaPump.units == DanaPump.UNITS_MGDL) {
+ danaPump.morningCIR = intFromBuff(bytes, 0, 2)
+ danaPump.morningCF = intFromBuff(bytes, 2, 2).toDouble()
+ danaPump.afternoonCIR = intFromBuff(bytes, 4, 2)
+ danaPump.afternoonCF = intFromBuff(bytes, 6, 2).toDouble()
+ danaPump.eveningCIR = intFromBuff(bytes, 8, 2)
+ danaPump.eveningCF = intFromBuff(bytes, 10, 2).toDouble()
+ danaPump.nightCIR = intFromBuff(bytes, 12, 2)
+ danaPump.nightCF = intFromBuff(bytes, 14, 2).toDouble()
+ } else {
+ danaPump.morningCIR = intFromBuff(bytes, 0, 2)
+ danaPump.morningCF = intFromBuff(bytes, 2, 2) / 100.0
+ danaPump.afternoonCIR = intFromBuff(bytes, 4, 2)
+ danaPump.afternoonCF = intFromBuff(bytes, 6, 2) / 100.0
+ danaPump.eveningCIR = intFromBuff(bytes, 8, 2)
+ danaPump.eveningCF = intFromBuff(bytes, 10, 2) / 100.0
+ danaPump.nightCIR = intFromBuff(bytes, 12, 2)
+ danaPump.nightCF = intFromBuff(bytes, 14, 2) / 100.0
+ }
+ aapsLogger.debug(LTag.PUMPCOMM, "Pump units: " + if (danaPump.units == DanaPump.UNITS_MGDL) "MGDL" else "MMOL")
+ aapsLogger.debug(LTag.PUMPCOMM, "Current pump morning CIR: " + danaPump.morningCIR)
+ aapsLogger.debug(LTag.PUMPCOMM, "Current pump morning CF: " + danaPump.morningCF)
+ aapsLogger.debug(LTag.PUMPCOMM, "Current pump afternoon CIR: " + danaPump.afternoonCIR)
+ aapsLogger.debug(LTag.PUMPCOMM, "Current pump afternoon CF: " + danaPump.afternoonCF)
+ aapsLogger.debug(LTag.PUMPCOMM, "Current pump evening CIR: " + danaPump.eveningCIR)
+ aapsLogger.debug(LTag.PUMPCOMM, "Current pump evening CF: " + danaPump.eveningCF)
+ aapsLogger.debug(LTag.PUMPCOMM, "Current pump night CIR: " + danaPump.nightCIR)
+ aapsLogger.debug(LTag.PUMPCOMM, "Current pump night CF: " + danaPump.nightCF)
+ }
+}
\ No newline at end of file
diff --git a/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSettingPumpTime.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSettingPumpTime.kt
new file mode 100644
index 0000000000..d8d216c16e
--- /dev/null
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSettingPumpTime.kt
@@ -0,0 +1,33 @@
+package info.nightscout.androidaps.danar.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+import org.joda.time.DateTime
+import java.util.*
+
+class MsgSettingPumpTime(
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
+
+ init {
+ SetCommand(0x320A)
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun handleMessage(bytes: ByteArray) {
+ val time = DateTime(
+ 2000 + intFromBuff(bytes, 5, 1),
+ intFromBuff(bytes, 4, 1),
+ intFromBuff(bytes, 3, 1),
+ intFromBuff(bytes, 2, 1),
+ intFromBuff(bytes, 1, 1),
+ intFromBuff(bytes, 0, 1)
+ ).millis
+ aapsLogger.debug(LTag.PUMPCOMM, "Pump time: " + dateUtil.dateAndTimeString(time) + " Phone time: " + Date())
+ danaPump.setPumpTime(time)
+ }
+
+ override fun handleMessageNotReceived() {
+ danaPump.resetPumpTime()
+ }
+}
\ No newline at end of file
diff --git a/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSettingShippingInfo.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSettingShippingInfo.kt
new file mode 100644
index 0000000000..20515fd4e8
--- /dev/null
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSettingShippingInfo.kt
@@ -0,0 +1,23 @@
+package info.nightscout.androidaps.danar.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+
+class MsgSettingShippingInfo(
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
+
+ init {
+ SetCommand(0x3207)
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun handleMessage(bytes: ByteArray) {
+ danaPump.serialNumber = stringFromBuff(bytes, 0, 10)
+ danaPump.shippingDate = dateFromBuff(bytes, 10)
+ danaPump.shippingCountry = asciiStringFromBuff(bytes, 13, 3)
+ aapsLogger.debug(LTag.PUMPCOMM, "Serial number: " + danaPump.serialNumber)
+ aapsLogger.debug(LTag.PUMPCOMM, "Shipping date: " + danaPump.shippingDate)
+ aapsLogger.debug(LTag.PUMPCOMM, "Shipping country: " + danaPump.shippingCountry)
+ }
+}
\ No newline at end of file
diff --git a/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSettingUserOptions.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSettingUserOptions.kt
new file mode 100644
index 0000000000..9f3350a579
--- /dev/null
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgSettingUserOptions.kt
@@ -0,0 +1,57 @@
+package info.nightscout.androidaps.danar.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+import java.util.*
+
+class MsgSettingUserOptions(
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
+
+
+ init {
+ SetCommand(0x320B)
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun handleMessage(packet: ByteArray) {
+ val bytes = getDataBytes(packet, packet.size - 10)
+ danaPump.userOptionsFrompump = Arrays.copyOf(bytes, bytes!!.size) // saving pumpDataBytes to use it in MsgSetUserOptions
+ for (pos in bytes.indices) {
+ aapsLogger.debug(LTag.PUMPCOMM, "[" + pos + "]" + bytes[pos])
+ }
+ danaPump.timeDisplayType = if (bytes[0] == 1.toByte()) 0 else 1 // 1 -> 24h 0 -> 12h
+ danaPump.buttonScrollOnOff = if (bytes[1] == 1.toByte()) 1 else 0 // 1 -> ON, 0-> OFF
+ danaPump.beepAndAlarm = bytes[2].toInt() // 1 -> Sound on alarm 2-> Vibrate on alarm 3-> Both on alarm 5-> Sound + beep 6-> vibrate + beep 7-> both + beep Beep adds 4
+ danaPump.lcdOnTimeSec = bytes[3].toInt() and 255
+ danaPump.backlightOnTimeSec = bytes[4].toInt() and 255
+ danaPump.selectedLanguage = bytes[5].toInt() // on DanaRv2 is that needed ?
+ danaPump.units = bytes[8].toInt()
+ danaPump.shutdownHour = bytes[9].toInt()
+ danaPump.lowReservoirRate = bytes[32].toInt() and 255
+ /* int selectableLanguage1 = bytes[10];
+ int selectableLanguage2 = bytes[11];
+ int selectableLanguage3 = bytes[12];
+ int selectableLanguage4 = bytes[13];
+ int selectableLanguage5 = bytes[14];
+ */
+ aapsLogger.debug(LTag.PUMPCOMM, "timeDisplayType: " + danaPump.timeDisplayType)
+ aapsLogger.debug(LTag.PUMPCOMM, "Button scroll: " + danaPump.buttonScrollOnOff)
+ aapsLogger.debug(LTag.PUMPCOMM, "BeepAndAlarm: " + danaPump.beepAndAlarm)
+ aapsLogger.debug(LTag.PUMPCOMM, "screen timeout: " + danaPump.lcdOnTimeSec)
+ aapsLogger.debug(LTag.PUMPCOMM, "BackLight: " + danaPump.backlightOnTimeSec)
+ aapsLogger.debug(LTag.PUMPCOMM, "Selected language: " + danaPump.selectedLanguage)
+ aapsLogger.debug(LTag.PUMPCOMM, "Units: " + danaPump.getUnits())
+ aapsLogger.debug(LTag.PUMPCOMM, "Shutdown: " + danaPump.shutdownHour)
+ aapsLogger.debug(LTag.PUMPCOMM, "Low reservoir: " + danaPump.lowReservoirRate)
+ }
+
+ private fun getDataBytes(bytes: ByteArray?, len: Int): ByteArray? {
+ if (bytes == null) {
+ return null
+ }
+ val ret = ByteArray(len)
+ System.arraycopy(bytes, 6, ret, 0, len)
+ return ret
+ }
+}
\ No newline at end of file
diff --git a/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgStatus.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgStatus.kt
new file mode 100644
index 0000000000..92100e07b1
--- /dev/null
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgStatus.kt
@@ -0,0 +1,34 @@
+package info.nightscout.androidaps.danar.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+
+class MsgStatus(
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
+
+ init {
+ SetCommand(0x020B)
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun handleMessage(bytes: ByteArray) {
+ danaPump.dailyTotalUnits = intFromBuff(bytes, 0, 3) / 750.0
+ danaPump.isExtendedInProgress = intFromBuff(bytes, 3, 1) == 1
+ danaPump.extendedBolusMinutes = intFromBuff(bytes, 4, 2)
+ danaPump.extendedBolusAmount = intFromBuff(bytes, 6, 2) / 100.0
+ val lastBolusAmount = intFromBuff(bytes, 13, 2) / 100.0
+ if (lastBolusAmount != 0.0) {
+ danaPump.lastBolusTime = dateTimeFromBuff(bytes, 8)
+ danaPump.lastBolusAmount = lastBolusAmount
+ }
+ danaPump.iob = intFromBuff(bytes, 15, 2) / 100.0
+ aapsLogger.debug(LTag.PUMPCOMM, "Daily total: " + danaPump.dailyTotalUnits)
+ aapsLogger.debug(LTag.PUMPCOMM, "Is extended bolus running: " + danaPump.isExtendedInProgress)
+ aapsLogger.debug(LTag.PUMPCOMM, "Extended bolus min: " + danaPump.extendedBolusMinutes)
+ aapsLogger.debug(LTag.PUMPCOMM, "Extended bolus amount: " + danaPump.extendedBolusAmount)
+ aapsLogger.debug(LTag.PUMPCOMM, "Last bolus time: " + danaPump.lastBolusTime)
+ aapsLogger.debug(LTag.PUMPCOMM, "Last bolus amount: " + danaPump.lastBolusAmount)
+ aapsLogger.debug(LTag.PUMPCOMM, "IOB: " + danaPump.iob)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgStatusBasic.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgStatusBasic.kt
similarity index 55%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgStatusBasic.kt
rename to danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgStatusBasic.kt
index 97b485eead..b3e8f25b84 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgStatusBasic.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgStatusBasic.kt
@@ -1,13 +1,11 @@
-package info.nightscout.androidaps.plugins.pump.danaR.comm
+package info.nightscout.androidaps.danar.comm
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
class MsgStatusBasic(
- private val aapsLogger: AAPSLogger,
- private val danaRPump: DanaRPump
-) : MessageBase() {
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
init {
SetCommand(0x020A)
@@ -15,25 +13,25 @@ class MsgStatusBasic(
}
override fun handleMessage(bytes: ByteArray) {
- danaRPump.pumpSuspended = intFromBuff(bytes, 0, 1) == 1
- danaRPump.calculatorEnabled = intFromBuff(bytes, 1, 1) == 1
- danaRPump.dailyTotalUnits = intFromBuff(bytes, 2, 3) / 750.0
- danaRPump.maxDailyTotalUnits = intFromBuff(bytes, 5, 2) / 100
- danaRPump.reservoirRemainingUnits = intFromBuff(bytes, 7, 3) / 750.0
- danaRPump.bolusBlocked = intFromBuff(bytes, 10, 1) == 1
- danaRPump.currentBasal = intFromBuff(bytes, 11, 2) / 100.0
+ danaPump.pumpSuspended = intFromBuff(bytes, 0, 1) == 1
+ danaPump.calculatorEnabled = intFromBuff(bytes, 1, 1) == 1
+ danaPump.dailyTotalUnits = intFromBuff(bytes, 2, 3) / 750.0
+ danaPump.maxDailyTotalUnits = intFromBuff(bytes, 5, 2) / 100
+ danaPump.reservoirRemainingUnits = intFromBuff(bytes, 7, 3) / 750.0
+ danaPump.bolusBlocked = intFromBuff(bytes, 10, 1) == 1
+ danaPump.currentBasal = intFromBuff(bytes, 11, 2) / 100.0
// removed. info taken from tempstatus message
//pump.tempBasalPercent = intFromBuff(bytes, 13, 1);
//pump.isExtendedInProgress = intFromBuff(bytes, 14, 1) == 1;
//pump.isTempBasalInProgress = intFromBuff(bytes, 15, 1) == 1;
- danaRPump.batteryRemaining = intFromBuff(bytes, 20, 1)
- aapsLogger.debug(LTag.PUMPCOMM, "Pump suspended: " + danaRPump.pumpSuspended)
- aapsLogger.debug(LTag.PUMPCOMM, "Calculator enabled: " + danaRPump.calculatorEnabled)
- aapsLogger.debug(LTag.PUMPCOMM, "Daily total units: " + danaRPump.dailyTotalUnits)
- aapsLogger.debug(LTag.PUMPCOMM, "Max daily total units: " + danaRPump.maxDailyTotalUnits)
- aapsLogger.debug(LTag.PUMPCOMM, "Reservoir remaining units: " + danaRPump.reservoirRemainingUnits)
- aapsLogger.debug(LTag.PUMPCOMM, "Bolus blocked: " + danaRPump.bolusBlocked)
- aapsLogger.debug(LTag.PUMPCOMM, "Current basal: " + danaRPump.currentBasal)
+ danaPump.batteryRemaining = intFromBuff(bytes, 20, 1)
+ aapsLogger.debug(LTag.PUMPCOMM, "Pump suspended: " + danaPump.pumpSuspended)
+ aapsLogger.debug(LTag.PUMPCOMM, "Calculator enabled: " + danaPump.calculatorEnabled)
+ aapsLogger.debug(LTag.PUMPCOMM, "Daily total units: " + danaPump.dailyTotalUnits)
+ aapsLogger.debug(LTag.PUMPCOMM, "Max daily total units: " + danaPump.maxDailyTotalUnits)
+ aapsLogger.debug(LTag.PUMPCOMM, "Reservoir remaining units: " + danaPump.reservoirRemainingUnits)
+ aapsLogger.debug(LTag.PUMPCOMM, "Bolus blocked: " + danaPump.bolusBlocked)
+ aapsLogger.debug(LTag.PUMPCOMM, "Current basal: " + danaPump.currentBasal)
//aapsLogger.debug(LTag.PUMPCOMM, "Current temp basal percent: " + pump.tempBasalPercent);
//aapsLogger.debug(LTag.PUMPCOMM, "Is extended bolus running: " + pump.isExtendedInProgress);
//aapsLogger.debug(LTag.PUMPCOMM, "Is temp basal running: " + pump.isTempBasalInProgress);
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgStatusBolusExtended.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgStatusBolusExtended.kt
similarity index 65%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgStatusBolusExtended.kt
rename to danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgStatusBolusExtended.kt
index 448b45346a..2daf290d93 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgStatusBolusExtended.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgStatusBolusExtended.kt
@@ -1,21 +1,14 @@
-package info.nightscout.androidaps.plugins.pump.danaR.comm
+package info.nightscout.androidaps.danar.comm
import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.db.ExtendedBolus
import info.nightscout.androidaps.db.Source
-import info.nightscout.androidaps.interfaces.ActivePluginProvider
-import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
-import info.nightscout.androidaps.utils.DateUtil
import kotlin.math.ceil
class MsgStatusBolusExtended(
- private val injector: HasAndroidInjector,
- private val aapsLogger: AAPSLogger,
- private val danaRPump: DanaRPump,
- private val activePlugin: ActivePluginProvider
-) : MessageBase() {
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
init {
SetCommand(0x0207)
@@ -35,20 +28,20 @@ class MsgStatusBolusExtended(
val extendedBolusAbsoluteRate = if (isExtendedInProgress) extendedBolusAmount / extendedBolusMinutes * 60 else 0.0
val extendedBolusStart = if (isExtendedInProgress) getDateFromSecAgo(extendedBolusSoFarInSecs) else 0
val extendedBolusRemainingMinutes = extendedBolusMinutes - extendedBolusSoFarInMinutes
- danaRPump.isExtendedInProgress = isExtendedInProgress
- danaRPump.extendedBolusMinutes = extendedBolusMinutes
- danaRPump.extendedBolusAmount = extendedBolusAmount
- danaRPump.extendedBolusSoFarInMinutes = extendedBolusSoFarInMinutes
- danaRPump.extendedBolusAbsoluteRate = extendedBolusAbsoluteRate
- danaRPump.extendedBolusStart = extendedBolusStart
- danaRPump.extendedBolusRemainingMinutes = extendedBolusRemainingMinutes
+ danaPump.isExtendedInProgress = isExtendedInProgress
+ danaPump.extendedBolusMinutes = extendedBolusMinutes
+ danaPump.extendedBolusAmount = extendedBolusAmount
+ danaPump.extendedBolusSoFarInMinutes = extendedBolusSoFarInMinutes
+ danaPump.extendedBolusAbsoluteRate = extendedBolusAbsoluteRate
+ danaPump.extendedBolusStart = extendedBolusStart
+ danaPump.extendedBolusRemainingMinutes = extendedBolusRemainingMinutes
updateExtendedBolusInDB()
aapsLogger.debug(LTag.PUMPCOMM, "Is extended bolus running: $isExtendedInProgress")
aapsLogger.debug(LTag.PUMPCOMM, "Extended bolus min: $extendedBolusMinutes")
aapsLogger.debug(LTag.PUMPCOMM, "Extended bolus amount: $extendedBolusAmount")
aapsLogger.debug(LTag.PUMPCOMM, "Extended bolus so far in minutes: $extendedBolusSoFarInMinutes")
aapsLogger.debug(LTag.PUMPCOMM, "Extended bolus absolute rate: $extendedBolusAbsoluteRate")
- aapsLogger.debug(LTag.PUMPCOMM, "Extended bolus start: " + DateUtil.dateAndTimeString(extendedBolusStart))
+ aapsLogger.debug(LTag.PUMPCOMM, "Extended bolus start: " + dateUtil.dateAndTimeString(extendedBolusStart))
aapsLogger.debug(LTag.PUMPCOMM, "Extended bolus remaining minutes: $extendedBolusRemainingMinutes")
}
@@ -60,16 +53,16 @@ class MsgStatusBolusExtended(
val now = System.currentTimeMillis()
val extendedBolus = activePlugin.activeTreatments.getExtendedBolusFromHistory(System.currentTimeMillis())
if (extendedBolus != null) {
- if (danaRPump.isExtendedInProgress) {
- if (extendedBolus.absoluteRate() != danaRPump.extendedBolusAbsoluteRate) { // Close current extended
- val exStop = ExtendedBolus(injector, danaRPump.extendedBolusStart - 1000)
+ if (danaPump.isExtendedInProgress) {
+ if (extendedBolus.absoluteRate() != danaPump.extendedBolusAbsoluteRate) { // Close current extended
+ val exStop = ExtendedBolus(injector, danaPump.extendedBolusStart - 1000)
exStop.source = Source.USER
activePlugin.activeTreatments.addToHistoryExtendedBolus(exStop)
// Create new
val newExtended = ExtendedBolus(injector)
- .date(danaRPump.extendedBolusStart)
- .insulin(danaRPump.extendedBolusAmount)
- .durationInMinutes(danaRPump.extendedBolusMinutes)
+ .date(danaPump.extendedBolusStart)
+ .insulin(danaPump.extendedBolusAmount)
+ .durationInMinutes(danaPump.extendedBolusMinutes)
.source(Source.USER)
activePlugin.activeTreatments.addToHistoryExtendedBolus(newExtended)
}
@@ -80,11 +73,11 @@ class MsgStatusBolusExtended(
activePlugin.activeTreatments.addToHistoryExtendedBolus(exStop)
}
} else {
- if (danaRPump.isExtendedInProgress) { // Create new
+ if (danaPump.isExtendedInProgress) { // Create new
val newExtended = ExtendedBolus(injector)
- .date(danaRPump.extendedBolusStart)
- .insulin(danaRPump.extendedBolusAmount)
- .durationInMinutes(danaRPump.extendedBolusMinutes)
+ .date(danaPump.extendedBolusStart)
+ .insulin(danaPump.extendedBolusAmount)
+ .durationInMinutes(danaPump.extendedBolusMinutes)
.source(Source.USER)
activePlugin.activeTreatments.addToHistoryExtendedBolus(newExtended)
}
diff --git a/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgStatusProfile.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgStatusProfile.kt
new file mode 100644
index 0000000000..ec84c0184a
--- /dev/null
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgStatusProfile.kt
@@ -0,0 +1,35 @@
+package info.nightscout.androidaps.danar.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.logging.LTag
+
+class MsgStatusProfile(
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
+
+ init {
+ SetCommand(0x0204)
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun handleMessage(bytes: ByteArray) {
+ if (danaPump.units == DanaPump.UNITS_MGDL) {
+ danaPump.currentCIR = intFromBuff(bytes, 0, 2)
+ danaPump.currentCF = intFromBuff(bytes, 2, 2).toDouble()
+ danaPump.currentAI = intFromBuff(bytes, 4, 2) / 100.0
+ danaPump.currentTarget = intFromBuff(bytes, 6, 2).toDouble()
+ } else {
+ danaPump.currentCIR = intFromBuff(bytes, 0, 2)
+ danaPump.currentCF = intFromBuff(bytes, 2, 2) / 100.0
+ danaPump.currentAI = intFromBuff(bytes, 4, 2) / 100.0
+ danaPump.currentTarget = intFromBuff(bytes, 6, 2) / 100.0
+ }
+ aapsLogger.debug(LTag.PUMPCOMM, "Pump units (saved): " + if (danaPump.units == DanaPump.UNITS_MGDL) "MGDL" else "MMOL")
+ aapsLogger.debug(LTag.PUMPCOMM, "Current pump CIR: " + danaPump.currentCIR)
+ aapsLogger.debug(LTag.PUMPCOMM, "Current pump CF: " + danaPump.currentCF)
+ aapsLogger.debug(LTag.PUMPCOMM, "Current pump AI: " + danaPump.currentAI)
+ aapsLogger.debug(LTag.PUMPCOMM, "Current pump target: " + danaPump.currentTarget)
+ aapsLogger.debug(LTag.PUMPCOMM, "Current pump AIDR: " + danaPump.currentAIDR)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgStatusTempBasal.kt b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgStatusTempBasal.kt
similarity index 69%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgStatusTempBasal.kt
rename to danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgStatusTempBasal.kt
index 67b865bed5..c354da3bb0 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/comm/MsgStatusTempBasal.kt
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/comm/MsgStatusTempBasal.kt
@@ -1,20 +1,14 @@
-package info.nightscout.androidaps.plugins.pump.danaR.comm
+package info.nightscout.androidaps.danar.comm
import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.db.Source
import info.nightscout.androidaps.db.TemporaryBasal
-import info.nightscout.androidaps.interfaces.ActivePluginProvider
-import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
import kotlin.math.ceil
class MsgStatusTempBasal(
- private val aapsLogger: AAPSLogger,
- private val danaRPump: DanaRPump,
- private val activePlugin: ActivePluginProvider,
- private val injector: HasAndroidInjector
-) : MessageBase() {
+ injector: HasAndroidInjector
+) : MessageBase(injector) {
init {
SetCommand(0x0205)
@@ -30,11 +24,11 @@ class MsgStatusTempBasal(
val tempBasalRunningSeconds = intFromBuff(bytes, 3, 3)
val tempBasalRemainingMin = (tempBasalTotalSec - tempBasalRunningSeconds) / 60
val tempBasalStart = if (isTempBasalInProgress) getDateFromTempBasalSecAgo(tempBasalRunningSeconds) else 0
- danaRPump.isTempBasalInProgress = isTempBasalInProgress
- danaRPump.tempBasalPercent = tempBasalPercent
- danaRPump.tempBasalRemainingMin = tempBasalRemainingMin
- danaRPump.tempBasalTotalSec = tempBasalTotalSec
- danaRPump.tempBasalStart = tempBasalStart
+ danaPump.isTempBasalInProgress = isTempBasalInProgress
+ danaPump.tempBasalPercent = tempBasalPercent
+ danaPump.tempBasalRemainingMin = tempBasalRemainingMin
+ danaPump.tempBasalTotalSec = tempBasalTotalSec
+ danaPump.tempBasalStart = tempBasalStart
updateTempBasalInDB()
aapsLogger.debug(LTag.PUMPCOMM, "Is temp basal running: $isTempBasalInProgress")
aapsLogger.debug(LTag.PUMPCOMM, "Is APS temp basal running: $isAPSTempBasalInProgress")
@@ -52,15 +46,15 @@ class MsgStatusTempBasal(
val now = System.currentTimeMillis()
if (activePlugin.activeTreatments.isInHistoryRealTempBasalInProgress) {
val tempBasal = activePlugin.activeTreatments.getRealTempBasalFromHistory(System.currentTimeMillis())
- if (danaRPump.isTempBasalInProgress) {
- if (tempBasal.percentRate != danaRPump.tempBasalPercent) { // Close current temp basal
- val tempStop = TemporaryBasal(injector).date(danaRPump.tempBasalStart - 1000).source(Source.USER)
+ if (danaPump.isTempBasalInProgress) {
+ if (tempBasal.percentRate != danaPump.tempBasalPercent) { // Close current temp basal
+ val tempStop = TemporaryBasal(injector).date(danaPump.tempBasalStart - 1000).source(Source.USER)
activePlugin.activeTreatments.addToHistoryTempBasal(tempStop)
// Create new
val newTempBasal = TemporaryBasal(injector)
- .date(danaRPump.tempBasalStart)
- .percent(danaRPump.tempBasalPercent)
- .duration(danaRPump.tempBasalTotalSec / 60)
+ .date(danaPump.tempBasalStart)
+ .percent(danaPump.tempBasalPercent)
+ .duration(danaPump.tempBasalTotalSec / 60)
.source(Source.USER)
activePlugin.activeTreatments.addToHistoryTempBasal(newTempBasal)
}
@@ -69,11 +63,11 @@ class MsgStatusTempBasal(
activePlugin.activeTreatments.addToHistoryTempBasal(tempStop)
}
} else {
- if (danaRPump.isTempBasalInProgress) { // Create new
+ if (danaPump.isTempBasalInProgress) { // Create new
val newTempBasal = TemporaryBasal(injector)
- .date(danaRPump.tempBasalStart)
- .percent(danaRPump.tempBasalPercent)
- .duration(danaRPump.tempBasalTotalSec / 60)
+ .date(danaPump.tempBasalStart)
+ .percent(danaPump.tempBasalPercent)
+ .duration(danaPump.tempBasalTotalSec / 60)
.source(Source.USER)
activePlugin.activeTreatments.addToHistoryTempBasal(newTempBasal)
}
diff --git a/danar/src/main/java/info/nightscout/androidaps/danar/di/DanaRCommModule.kt b/danar/src/main/java/info/nightscout/androidaps/danar/di/DanaRCommModule.kt
new file mode 100644
index 0000000000..f9c9b58f8d
--- /dev/null
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/di/DanaRCommModule.kt
@@ -0,0 +1,83 @@
+package info.nightscout.androidaps.danar.di
+
+import dagger.Module
+import dagger.android.ContributesAndroidInjector
+import info.nightscout.androidaps.danaRKorean.comm.*
+import info.nightscout.androidaps.danaRv2.comm.*
+import info.nightscout.androidaps.danar.comm.*
+
+@Module
+@Suppress("unused")
+abstract class DanaRCommModule {
+
+ @ContributesAndroidInjector abstract fun contributesMessageBase(): MessageBase
+ @ContributesAndroidInjector abstract fun contributesMsgSetTime(): MsgSetTime
+ @ContributesAndroidInjector abstract fun contributesMsgBolusProgress(): MsgBolusProgress
+ @ContributesAndroidInjector abstract fun contributesMsgBolusStart(): MsgBolusStart
+ @ContributesAndroidInjector abstract fun contributesMsgBolusStartWithSpeed(): MsgBolusStartWithSpeed
+ @ContributesAndroidInjector abstract fun contributesMsgBolusStop(): MsgBolusStop
+ @ContributesAndroidInjector abstract fun contributesMsgCheckValue(): MsgCheckValue
+ @ContributesAndroidInjector abstract fun contributesMsgError(): MsgError
+ @ContributesAndroidInjector abstract fun contributesMsgHistoryAll(): MsgHistoryAll
+ @ContributesAndroidInjector abstract fun contributesMsgHistoryAllDone(): MsgHistoryAllDone
+ @ContributesAndroidInjector abstract fun contributesMsgHistoryDone(): MsgHistoryDone
+ @ContributesAndroidInjector abstract fun contributesMsgHistoryNewDone(): MsgHistoryNewDone
+ @ContributesAndroidInjector abstract fun contributesMsgInitConnStatusBasic(): MsgInitConnStatusBasic
+ @ContributesAndroidInjector abstract fun contributesMsgInitConnStatusBolus(): MsgInitConnStatusBolus
+ @ContributesAndroidInjector abstract fun contributesMsgInitConnStatusOption(): MsgInitConnStatusOption
+ @ContributesAndroidInjector abstract fun contributesMsgInitConnStatusTime(): MsgInitConnStatusTime
+ @ContributesAndroidInjector abstract fun contributesMsgPCCommStart(): MsgPCCommStart
+ @ContributesAndroidInjector abstract fun contributesMsgPCCommStop(): MsgPCCommStop
+ @ContributesAndroidInjector abstract fun contributesMsgSetActivateBasalProfile(): MsgSetActivateBasalProfile
+ @ContributesAndroidInjector abstract fun contributesMsgSetBasalProfile(): MsgSetBasalProfile
+ @ContributesAndroidInjector abstract fun contributesMsgSetCarbsEntry(): MsgSetCarbsEntry
+ @ContributesAndroidInjector abstract fun contributesMsgSetExtendedBolusStart(): MsgSetExtendedBolusStart
+ @ContributesAndroidInjector abstract fun contributesMsgSetExtendedBolusStop(): MsgSetExtendedBolusStop
+ @ContributesAndroidInjector abstract fun contributesMsgSetSingleBasalProfile(): MsgSetSingleBasalProfile
+ @ContributesAndroidInjector abstract fun contributesMsgSetTempBasalStart(): MsgSetTempBasalStart
+ @ContributesAndroidInjector abstract fun contributesMsgSetTempBasalStop(): MsgSetTempBasalStop
+ @ContributesAndroidInjector abstract fun contributesMsgSetUserOptions(): MsgSetUserOptions
+ @ContributesAndroidInjector abstract fun contributesMsgSettingActiveProfile(): MsgSettingActiveProfile
+ @ContributesAndroidInjector abstract fun contributesMsgSettingBasal(): MsgSettingBasal
+ @ContributesAndroidInjector abstract fun contributesMsgSettingBasalProfileAll(): MsgSettingBasalProfileAll
+ @ContributesAndroidInjector abstract fun contributesMsgSettingGlucose(): MsgSettingGlucose
+ @ContributesAndroidInjector abstract fun contributesMsgSettingMaxValues(): MsgSettingMaxValues
+ @ContributesAndroidInjector abstract fun contributesMsgSettingMeal(): MsgSettingMeal
+ @ContributesAndroidInjector abstract fun contributesMsgSettingProfileRatios(): MsgSettingProfileRatios
+ @ContributesAndroidInjector abstract fun contributesMsgSettingProfileRatiosAll(): MsgSettingProfileRatiosAll
+ @ContributesAndroidInjector abstract fun contributesMsgSettingPumpTime(): MsgSettingPumpTime
+ @ContributesAndroidInjector abstract fun contributesMsgSettingShippingInfo(): MsgSettingShippingInfo
+ @ContributesAndroidInjector abstract fun contributesMsgSettingUserOptions(): MsgSettingUserOptions
+ @ContributesAndroidInjector abstract fun contributesMsgStatus(): MsgStatus
+ @ContributesAndroidInjector abstract fun contributesMsgStatusBasic(): MsgStatusBasic
+ @ContributesAndroidInjector abstract fun contributesMsgStatusBolusExtended(): MsgStatusBolusExtended
+ @ContributesAndroidInjector abstract fun contributesMsgStatusProfile(): MsgStatusProfile
+ @ContributesAndroidInjector abstract fun contributesMsgStatusTempBasal(): MsgStatusTempBasal
+ @ContributesAndroidInjector abstract fun contributesMsgHistoryBolus(): MsgHistoryBolus
+ @ContributesAndroidInjector abstract fun contributesMsgHistoryDailyInsulin(): MsgHistoryDailyInsulin
+ @ContributesAndroidInjector abstract fun contributesMsgHistoryGlucose(): MsgHistoryGlucose
+ @ContributesAndroidInjector abstract fun contributesMsgHistoryAlarm(): MsgHistoryAlarm
+ @ContributesAndroidInjector abstract fun contributesMsgHistoryError(): MsgHistoryError
+ @ContributesAndroidInjector abstract fun contributesMsgHistoryCarbo(): MsgHistoryCarbo
+ @ContributesAndroidInjector abstract fun contributesMsgHistoryRefill(): MsgHistoryRefill
+ @ContributesAndroidInjector abstract fun contributesMsgHistorySuspend(): MsgHistorySuspend
+ @ContributesAndroidInjector abstract fun contributesMsgHistoryBasalHour(): MsgHistoryBasalHour
+ @ContributesAndroidInjector abstract fun contributesMsgHistoryNew(): MsgHistoryNew
+
+ @ContributesAndroidInjector abstract fun contributesMsgCheckValue_v2(): MsgCheckValue_v2
+ @ContributesAndroidInjector abstract fun contributesMsgHistoryEvents_v2(): MsgHistoryEvents_v2
+ @ContributesAndroidInjector abstract fun contributesMsgSetAPSTempBasalStart_v2(): MsgSetAPSTempBasalStart_v2
+ @ContributesAndroidInjector abstract fun contributesMsgSetHistoryEntry_v2(): MsgSetHistoryEntry_v2
+ @ContributesAndroidInjector abstract fun contributesMsgStatusAPS_v2(): MsgStatusAPS_v2
+ @ContributesAndroidInjector abstract fun contributesMsgStatusBolusExtended_v2(): MsgStatusBolusExtended_v2
+ @ContributesAndroidInjector abstract fun contributesMsgStatusTempBasal_v2(): MsgStatusTempBasal_v2
+
+ @ContributesAndroidInjector abstract fun contributesMsgCheckValue_k(): MsgCheckValue_k
+ @ContributesAndroidInjector abstract fun contributesMsgInitConnStatusBasic_k(): MsgInitConnStatusBasic_k
+ @ContributesAndroidInjector abstract fun contributesMsgInitConnStatusBolus_k(): MsgInitConnStatusBolus_k
+ @ContributesAndroidInjector abstract fun contributesMsgInitConnStatusTime_k(): MsgInitConnStatusTime_k
+ @ContributesAndroidInjector abstract fun contributesMsgSettingBasalProfileAll_k(): MsgSettingBasalProfileAll_k
+ @ContributesAndroidInjector abstract fun contributesMsgSettingBasal_k(): MsgSettingBasal_k
+ @ContributesAndroidInjector abstract fun contributesMsgStatusBasic_k(): MsgStatusBasic_k
+ @ContributesAndroidInjector abstract fun contributesMsgStatus_k(): MsgStatus_k
+}
\ No newline at end of file
diff --git a/danar/src/main/java/info/nightscout/androidaps/danar/di/DanaRModule.kt b/danar/src/main/java/info/nightscout/androidaps/danar/di/DanaRModule.kt
new file mode 100644
index 0000000000..021d3573d7
--- /dev/null
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/di/DanaRModule.kt
@@ -0,0 +1,9 @@
+package info.nightscout.androidaps.danar.di
+
+import dagger.Module
+
+@Module(includes = [
+ DanaRCommModule::class,
+ DanaRServicesModule::class
+])
+open class DanaRModule
\ No newline at end of file
diff --git a/danar/src/main/java/info/nightscout/androidaps/danar/di/DanaRServicesModule.kt b/danar/src/main/java/info/nightscout/androidaps/danar/di/DanaRServicesModule.kt
new file mode 100644
index 0000000000..198592c13a
--- /dev/null
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/di/DanaRServicesModule.kt
@@ -0,0 +1,18 @@
+package info.nightscout.androidaps.danar.di
+
+import dagger.Module
+import dagger.android.ContributesAndroidInjector
+import info.nightscout.androidaps.danaRKorean.services.DanaRKoreanExecutionService
+import info.nightscout.androidaps.danaRv2.services.DanaRv2ExecutionService
+import info.nightscout.androidaps.danar.services.AbstractDanaRExecutionService
+import info.nightscout.androidaps.danar.services.DanaRExecutionService
+
+@Module
+@Suppress("unused")
+abstract class DanaRServicesModule {
+
+ @ContributesAndroidInjector abstract fun contributesAbstractDanaRExecutionService(): AbstractDanaRExecutionService
+ @ContributesAndroidInjector abstract fun contributesDanaRv2ExecutionService(): DanaRv2ExecutionService
+ @ContributesAndroidInjector abstract fun contributesDanaRExecutionService(): DanaRExecutionService
+ @ContributesAndroidInjector abstract fun contributesDanaRKoreanExecutionService(): DanaRKoreanExecutionService
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/services/AbstractDanaRExecutionService.java b/danar/src/main/java/info/nightscout/androidaps/danar/services/AbstractDanaRExecutionService.java
similarity index 75%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/services/AbstractDanaRExecutionService.java
rename to danar/src/main/java/info/nightscout/androidaps/danar/services/AbstractDanaRExecutionService.java
index f93ce4a780..2fc6d2500f 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/services/AbstractDanaRExecutionService.java
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/services/AbstractDanaRExecutionService.java
@@ -1,4 +1,4 @@
-package info.nightscout.androidaps.plugins.pump.danaR.services;
+package info.nightscout.androidaps.danar.services;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
@@ -16,32 +16,33 @@ import javax.inject.Inject;
import dagger.android.DaggerService;
import dagger.android.HasAndroidInjector;
-import info.nightscout.androidaps.R;
+import info.nightscout.androidaps.dana.DanaPump;
+import info.nightscout.androidaps.dana.comm.RecordTypes;
+import info.nightscout.androidaps.danar.R;
+import info.nightscout.androidaps.danar.SerialIOThread;
+import info.nightscout.androidaps.danar.comm.MessageBase;
+import info.nightscout.androidaps.danar.comm.MsgBolusStop;
+import info.nightscout.androidaps.danar.comm.MsgHistoryAlarm;
+import info.nightscout.androidaps.danar.comm.MsgHistoryBasalHour;
+import info.nightscout.androidaps.danar.comm.MsgHistoryBolus;
+import info.nightscout.androidaps.danar.comm.MsgHistoryCarbo;
+import info.nightscout.androidaps.danar.comm.MsgHistoryDailyInsulin;
+import info.nightscout.androidaps.danar.comm.MsgHistoryError;
+import info.nightscout.androidaps.danar.comm.MsgHistoryGlucose;
+import info.nightscout.androidaps.danar.comm.MsgHistoryRefill;
+import info.nightscout.androidaps.danar.comm.MsgHistorySuspend;
+import info.nightscout.androidaps.danar.comm.MsgPCCommStart;
+import info.nightscout.androidaps.danar.comm.MsgPCCommStop;
import info.nightscout.androidaps.data.Profile;
import info.nightscout.androidaps.data.PumpEnactResult;
+import info.nightscout.androidaps.db.Treatment;
import info.nightscout.androidaps.events.EventAppExit;
import info.nightscout.androidaps.events.EventBTChange;
-import info.nightscout.androidaps.events.EventPreferenceChange;
import info.nightscout.androidaps.events.EventPumpStatusChanged;
+import info.nightscout.androidaps.interfaces.DatabaseHelperInterface;
import info.nightscout.androidaps.logging.AAPSLogger;
import info.nightscout.androidaps.logging.LTag;
import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MessageBase;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgBolusStop;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgHistoryAlarm;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgHistoryBasalHour;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgHistoryBolus;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgHistoryCarbo;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgHistoryDailyInsulin;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgHistoryError;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgHistoryGlucose;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgHistoryRefill;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgHistorySuspend;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgPCCommStart;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgPCCommStop;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.RecordTypes;
-import info.nightscout.androidaps.plugins.treatments.Treatment;
import info.nightscout.androidaps.utils.DateUtil;
import info.nightscout.androidaps.utils.FabricPrivacy;
import info.nightscout.androidaps.utils.ToastUtils;
@@ -61,8 +62,10 @@ public abstract class AbstractDanaRExecutionService extends DaggerService {
@Inject SP sp;
@Inject Context context;
@Inject ResourceHelper resourceHelper;
- @Inject DanaRPump danaRPump;
+ @Inject DanaPump danaPump;
@Inject FabricPrivacy fabricPrivacy;
+ @Inject DateUtil dateUtil;
+ @Inject DatabaseHelperInterface databaseHelper;
private CompositeDisposable disposable = new CompositeDisposable();
@@ -71,12 +74,10 @@ public abstract class AbstractDanaRExecutionService extends DaggerService {
protected BluetoothSocket mRfcommSocket;
protected BluetoothDevice mBTDevice;
- protected Treatment mBolusingTreatment = null;
-
protected boolean mConnectionInProgress = false;
protected boolean mHandshakeInProgress = false;
- protected AbstractSerialIOThread mSerialIOThread;
+ protected SerialIOThread mSerialIOThread;
protected IBinder mBinder;
@@ -209,17 +210,17 @@ public abstract class AbstractDanaRExecutionService extends DaggerService {
}
public void bolusStop() {
- aapsLogger.debug(LTag.PUMP, "bolusStop >>>>> @ " + (mBolusingTreatment == null ? "" : mBolusingTreatment.insulin));
- MsgBolusStop stop = new MsgBolusStop(aapsLogger, rxBus, resourceHelper, danaRPump);
- danaRPump.setBolusStopForced(true);
+ aapsLogger.debug(LTag.PUMP, "bolusStop >>>>> @ " + (danaPump.getBolusingTreatment() == null ? "" : danaPump.getBolusingTreatment().insulin));
+ MsgBolusStop stop = new MsgBolusStop(injector);
+ danaPump.setBolusStopForced(true);
if (isConnected()) {
mSerialIOThread.sendMessage(stop);
- while (!danaRPump.getBolusStopped()) {
+ while (!danaPump.getBolusStopped()) {
mSerialIOThread.sendMessage(stop);
SystemClock.sleep(200);
}
} else {
- danaRPump.setBolusStopped(true);
+ danaPump.setBolusStopped(true);
}
}
@@ -229,42 +230,42 @@ public abstract class AbstractDanaRExecutionService extends DaggerService {
MessageBase msg = null;
switch (type) {
case RecordTypes.RECORD_TYPE_ALARM:
- msg = new MsgHistoryAlarm(aapsLogger, rxBus);
+ msg = new MsgHistoryAlarm(injector);
break;
case RecordTypes.RECORD_TYPE_BASALHOUR:
- msg = new MsgHistoryBasalHour(aapsLogger, rxBus);
+ msg = new MsgHistoryBasalHour(injector);
break;
case RecordTypes.RECORD_TYPE_BOLUS:
- msg = new MsgHistoryBolus(aapsLogger, rxBus);
+ msg = new MsgHistoryBolus(injector);
break;
case RecordTypes.RECORD_TYPE_CARBO:
- msg = new MsgHistoryCarbo(aapsLogger, rxBus);
+ msg = new MsgHistoryCarbo(injector);
break;
case RecordTypes.RECORD_TYPE_DAILY:
- msg = new MsgHistoryDailyInsulin(aapsLogger, rxBus);
+ msg = new MsgHistoryDailyInsulin(injector);
break;
case RecordTypes.RECORD_TYPE_ERROR:
- msg = new MsgHistoryError(aapsLogger, rxBus);
+ msg = new MsgHistoryError(injector);
break;
case RecordTypes.RECORD_TYPE_GLUCOSE:
- msg = new MsgHistoryGlucose(aapsLogger, rxBus);
+ msg = new MsgHistoryGlucose(injector);
break;
case RecordTypes.RECORD_TYPE_REFILL:
- msg = new MsgHistoryRefill(aapsLogger, rxBus);
+ msg = new MsgHistoryRefill(injector);
break;
case RecordTypes.RECORD_TYPE_SUSPEND:
- msg = new MsgHistorySuspend(aapsLogger, rxBus);
+ msg = new MsgHistorySuspend(injector);
break;
}
- danaRPump.setHistoryDoneReceived(false);
- mSerialIOThread.sendMessage(new MsgPCCommStart(aapsLogger));
+ danaPump.setHistoryDoneReceived(false);
+ mSerialIOThread.sendMessage(new MsgPCCommStart(injector));
SystemClock.sleep(400);
mSerialIOThread.sendMessage(msg);
- while (!danaRPump.getHistoryDoneReceived() && mRfcommSocket.isConnected()) {
+ while (!danaPump.getHistoryDoneReceived() && mRfcommSocket.isConnected()) {
SystemClock.sleep(100);
}
SystemClock.sleep(200);
- mSerialIOThread.sendMessage(new MsgPCCommStop(aapsLogger));
+ mSerialIOThread.sendMessage(new MsgPCCommStop(injector));
result.success = true;
result.comment = "OK";
return result;
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/services/DanaRExecutionService.java b/danar/src/main/java/info/nightscout/androidaps/danar/services/DanaRExecutionService.java
similarity index 62%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/services/DanaRExecutionService.java
rename to danar/src/main/java/info/nightscout/androidaps/danar/services/DanaRExecutionService.java
index 832826cf52..5d78247577 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaR/services/DanaRExecutionService.java
+++ b/danar/src/main/java/info/nightscout/androidaps/danar/services/DanaRExecutionService.java
@@ -1,96 +1,85 @@
-package info.nightscout.androidaps.plugins.pump.danaR.services;
+package info.nightscout.androidaps.danar.services;
-import android.bluetooth.BluetoothDevice;
-import android.content.Context;
-import android.content.IntentFilter;
import android.os.Binder;
import android.os.SystemClock;
import java.io.IOException;
-import java.util.Date;
import javax.inject.Inject;
import dagger.android.HasAndroidInjector;
import info.nightscout.androidaps.Constants;
-import info.nightscout.androidaps.R;
+import info.nightscout.androidaps.dana.DanaPump;
+import info.nightscout.androidaps.dana.events.EventDanaRNewStatus;
+import info.nightscout.androidaps.danaRKorean.DanaRKoreanPlugin;
+import info.nightscout.androidaps.danar.DanaRPlugin;
+import info.nightscout.androidaps.danar.R;
+import info.nightscout.androidaps.danar.SerialIOThread;
+import info.nightscout.androidaps.danar.comm.MessageBase;
+import info.nightscout.androidaps.danar.comm.MessageHashTableR;
+import info.nightscout.androidaps.danar.comm.MsgBolusStart;
+import info.nightscout.androidaps.danar.comm.MsgBolusStartWithSpeed;
+import info.nightscout.androidaps.danar.comm.MsgCheckValue;
+import info.nightscout.androidaps.danar.comm.MsgSetActivateBasalProfile;
+import info.nightscout.androidaps.danar.comm.MsgSetBasalProfile;
+import info.nightscout.androidaps.danar.comm.MsgSetCarbsEntry;
+import info.nightscout.androidaps.danar.comm.MsgSetExtendedBolusStart;
+import info.nightscout.androidaps.danar.comm.MsgSetExtendedBolusStop;
+import info.nightscout.androidaps.danar.comm.MsgSetTempBasalStart;
+import info.nightscout.androidaps.danar.comm.MsgSetTempBasalStop;
+import info.nightscout.androidaps.danar.comm.MsgSetTime;
+import info.nightscout.androidaps.danar.comm.MsgSetUserOptions;
+import info.nightscout.androidaps.danar.comm.MsgSettingActiveProfile;
+import info.nightscout.androidaps.danar.comm.MsgSettingBasal;
+import info.nightscout.androidaps.danar.comm.MsgSettingGlucose;
+import info.nightscout.androidaps.danar.comm.MsgSettingMaxValues;
+import info.nightscout.androidaps.danar.comm.MsgSettingMeal;
+import info.nightscout.androidaps.danar.comm.MsgSettingProfileRatios;
+import info.nightscout.androidaps.danar.comm.MsgSettingProfileRatiosAll;
+import info.nightscout.androidaps.danar.comm.MsgSettingPumpTime;
+import info.nightscout.androidaps.danar.comm.MsgSettingShippingInfo;
+import info.nightscout.androidaps.danar.comm.MsgSettingUserOptions;
+import info.nightscout.androidaps.danar.comm.MsgStatus;
+import info.nightscout.androidaps.danar.comm.MsgStatusBasic;
+import info.nightscout.androidaps.danar.comm.MsgStatusBolusExtended;
+import info.nightscout.androidaps.danar.comm.MsgStatusTempBasal;
import info.nightscout.androidaps.data.Profile;
import info.nightscout.androidaps.data.PumpEnactResult;
+import info.nightscout.androidaps.db.Treatment;
import info.nightscout.androidaps.dialogs.BolusProgressDialog;
-import info.nightscout.androidaps.events.EventAppExit;
import info.nightscout.androidaps.events.EventInitializationChanged;
-import info.nightscout.androidaps.events.EventPreferenceChange;
import info.nightscout.androidaps.events.EventProfileNeedsUpdate;
import info.nightscout.androidaps.events.EventPumpStatusChanged;
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.LTag;
import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
-import info.nightscout.androidaps.plugins.configBuilder.ConfigBuilderPlugin;
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker;
-import info.nightscout.androidaps.plugins.configBuilder.ProfileFunction;
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload;
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification;
import info.nightscout.androidaps.plugins.general.overview.events.EventOverviewBolusProgress;
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification;
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPlugin;
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump;
-import info.nightscout.androidaps.plugins.pump.danaR.SerialIOThread;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MessageBase;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MessageHashTableR;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgBolusStart;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgBolusStartWithSpeed;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgCheckValue;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSetActivateBasalProfile;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSetBasalProfile;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSetCarbsEntry;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSetExtendedBolusStart;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSetExtendedBolusStop;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSetTempBasalStart;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSetTempBasalStop;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSetTime;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSetUserOptions;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSettingActiveProfile;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSettingBasal;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSettingGlucose;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSettingMaxValues;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSettingMeal;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSettingProfileRatios;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSettingProfileRatiosAll;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSettingPumpTime;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSettingShippingInfo;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgSettingUserOptions;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgStatus;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgStatusBasic;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgStatusBolusExtended;
-import info.nightscout.androidaps.plugins.pump.danaR.comm.MsgStatusTempBasal;
-import info.nightscout.androidaps.plugins.pump.danaR.events.EventDanaRNewStatus;
-import info.nightscout.androidaps.plugins.pump.danaRKorean.DanaRKoreanPlugin;
-import info.nightscout.androidaps.plugins.treatments.Treatment;
import info.nightscout.androidaps.queue.Callback;
import info.nightscout.androidaps.queue.commands.Command;
import info.nightscout.androidaps.utils.DateUtil;
-import info.nightscout.androidaps.utils.FabricPrivacy;
import info.nightscout.androidaps.utils.resources.ResourceHelper;
import info.nightscout.androidaps.utils.sharedPreferences.SP;
-import io.reactivex.disposables.CompositeDisposable;
-import io.reactivex.schedulers.Schedulers;
public class DanaRExecutionService extends AbstractDanaRExecutionService {
@Inject AAPSLogger aapsLogger;
@Inject RxBusWrapper rxBus;
@Inject ResourceHelper resourceHelper;
@Inject ConstraintChecker constraintChecker;
- @Inject DanaRPump danaRPump;
+ @Inject DanaPump danaPump;
@Inject DanaRPlugin danaRPlugin;
@Inject DanaRKoreanPlugin danaRKoreanPlugin;
- @Inject ConfigBuilderPlugin configBuilderPlugin;
@Inject CommandQueueProvider commandQueue;
- @Inject Context context;
@Inject MessageHashTableR messageHashTableR;
@Inject ActivePluginProvider activePlugin;
@Inject ProfileFunction profileFunction;
+ @Inject NSUpload nsUpload;
@Inject SP sp;
@Inject HasAndroidInjector injector;
@@ -135,7 +124,7 @@ public class DanaRExecutionService extends AbstractDanaRExecutionService {
if (mSerialIOThread != null) {
mSerialIOThread.disconnect("Recreate SerialIOThread");
}
- mSerialIOThread = new SerialIOThread(mRfcommSocket, messageHashTableR, danaRPump);
+ mSerialIOThread = new SerialIOThread(aapsLogger, mRfcommSocket, messageHashTableR, danaPump);
mHandshakeInProgress = true;
rxBus.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.HANDSHAKING, 0));
}
@@ -147,13 +136,13 @@ public class DanaRExecutionService extends AbstractDanaRExecutionService {
public void getPumpStatus() {
try {
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.gettingpumpstatus)));
- MsgStatus statusMsg = new MsgStatus(aapsLogger, danaRPump);
- MsgStatusBasic statusBasicMsg = new MsgStatusBasic(aapsLogger, danaRPump);
- MsgStatusTempBasal tempStatusMsg = new MsgStatusTempBasal(aapsLogger, danaRPump, activePlugin, injector);
- MsgStatusBolusExtended exStatusMsg = new MsgStatusBolusExtended(injector, aapsLogger, danaRPump, activePlugin);
- MsgCheckValue checkValue = new MsgCheckValue(aapsLogger, danaRPump, danaRPlugin);
+ MsgStatus statusMsg = new MsgStatus(injector);
+ MsgStatusBasic statusBasicMsg = new MsgStatusBasic(injector);
+ MsgStatusTempBasal tempStatusMsg = new MsgStatusTempBasal(injector);
+ MsgStatusBolusExtended exStatusMsg = new MsgStatusBolusExtended(injector);
+ MsgCheckValue checkValue = new MsgCheckValue(injector);
- if (danaRPump.isNewPump()) {
+ if (danaPump.isNewPump()) {
mSerialIOThread.sendMessage(checkValue);
if (!checkValue.received) {
return;
@@ -169,61 +158,60 @@ public class DanaRExecutionService extends AbstractDanaRExecutionService {
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.gettingbolusstatus)));
long now = System.currentTimeMillis();
- danaRPump.setLastConnection(now);
+ danaPump.setLastConnection(now);
Profile profile = profileFunction.getProfile();
- if (profile != null && Math.abs(danaRPump.getCurrentBasal() - profile.getBasal()) >= danaRPlugin.getPumpDescription().basalStep) {
+ if (profile != null && Math.abs(danaPump.getCurrentBasal() - profile.getBasal()) >= danaRPlugin.getPumpDescription().basalStep) {
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.gettingpumpsettings)));
- mSerialIOThread.sendMessage(new MsgSettingBasal(aapsLogger, danaRPump, danaRPlugin));
+ mSerialIOThread.sendMessage(new MsgSettingBasal(injector));
if (!danaRPlugin.isThisProfileSet(profile) && !commandQueue.isRunning(Command.CommandType.BASAL_PROFILE)) {
rxBus.send(new EventProfileNeedsUpdate());
}
}
- if (danaRPump.getLastSettingsRead() + 60 * 60 * 1000L < now || !danaRPlugin.isInitialized()) {
+ if (danaPump.getLastSettingsRead() + 60 * 60 * 1000L < now || !danaRPlugin.isInitialized()) {
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.gettingpumpsettings)));
- mSerialIOThread.sendMessage(new MsgSettingShippingInfo(aapsLogger, danaRPump));
- mSerialIOThread.sendMessage(new MsgSettingActiveProfile(aapsLogger, danaRPump));
- mSerialIOThread.sendMessage(new MsgSettingMeal(aapsLogger, rxBus, resourceHelper, danaRPump, danaRKoreanPlugin));
- mSerialIOThread.sendMessage(new MsgSettingBasal(aapsLogger, danaRPump, danaRPlugin));
+ mSerialIOThread.sendMessage(new MsgSettingShippingInfo(injector));
+ mSerialIOThread.sendMessage(new MsgSettingActiveProfile(injector));
+ mSerialIOThread.sendMessage(new MsgSettingMeal(injector));
+ mSerialIOThread.sendMessage(new MsgSettingBasal(injector));
//0x3201
- mSerialIOThread.sendMessage(new MsgSettingMaxValues(aapsLogger, danaRPump));
- mSerialIOThread.sendMessage(new MsgSettingGlucose(aapsLogger, danaRPump));
- mSerialIOThread.sendMessage(new MsgSettingActiveProfile(aapsLogger, danaRPump));
- mSerialIOThread.sendMessage(new MsgSettingProfileRatios(aapsLogger, danaRPump));
- mSerialIOThread.sendMessage(new MsgSettingProfileRatiosAll(aapsLogger, danaRPump));
- mSerialIOThread.sendMessage(new MsgSettingUserOptions(aapsLogger, danaRPump));
+ mSerialIOThread.sendMessage(new MsgSettingMaxValues(injector));
+ mSerialIOThread.sendMessage(new MsgSettingGlucose(injector));
+ mSerialIOThread.sendMessage(new MsgSettingActiveProfile(injector));
+ mSerialIOThread.sendMessage(new MsgSettingProfileRatios(injector));
+ mSerialIOThread.sendMessage(new MsgSettingProfileRatiosAll(injector));
+ mSerialIOThread.sendMessage(new MsgSettingUserOptions(injector));
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.gettingpumptime)));
- mSerialIOThread.sendMessage(new MsgSettingPumpTime(aapsLogger, danaRPump));
- if (danaRPump.getPumpTime() == 0) {
+ mSerialIOThread.sendMessage(new MsgSettingPumpTime(injector));
+ if (danaPump.getPumpTime() == 0) {
// initial handshake was not successfull
// deinitialize pump
- danaRPump.setLastConnection(0);
- danaRPump.setLastSettingsRead(0);
+ danaPump.reset();
rxBus.send(new EventDanaRNewStatus());
rxBus.send(new EventInitializationChanged());
return;
}
- long timeDiff = (danaRPump.getPumpTime() - System.currentTimeMillis()) / 1000L;
+ long timeDiff = (danaPump.getPumpTime() - System.currentTimeMillis()) / 1000L;
aapsLogger.debug(LTag.PUMP, "Pump time difference: " + timeDiff + " seconds");
if (Math.abs(timeDiff) > 10) {
- mSerialIOThread.sendMessage(new MsgSetTime(aapsLogger, new Date()));
- mSerialIOThread.sendMessage(new MsgSettingPumpTime(aapsLogger, danaRPump));
- timeDiff = (danaRPump.getPumpTime() - System.currentTimeMillis()) / 1000L;
+ mSerialIOThread.sendMessage(new MsgSetTime(injector, DateUtil.now()));
+ mSerialIOThread.sendMessage(new MsgSettingPumpTime(injector));
+ timeDiff = (danaPump.getPumpTime() - System.currentTimeMillis()) / 1000L;
aapsLogger.debug(LTag.PUMP, "Pump time difference: " + timeDiff + " seconds");
}
- danaRPump.setLastSettingsRead(now);
+ danaPump.setLastSettingsRead(now);
}
rxBus.send(new EventDanaRNewStatus());
rxBus.send(new EventInitializationChanged());
//NSUpload.uploadDeviceStatus();
- if (danaRPump.getDailyTotalUnits() > danaRPump.getMaxDailyTotalUnits() * Constants.dailyLimitWarning) {
- aapsLogger.debug(LTag.PUMP, "Approaching daily limit: " + danaRPump.getDailyTotalUnits() + "/" + danaRPump.getMaxDailyTotalUnits());
+ if (danaPump.getDailyTotalUnits() > danaPump.getMaxDailyTotalUnits() * Constants.dailyLimitWarning) {
+ aapsLogger.debug(LTag.PUMP, "Approaching daily limit: " + danaPump.getDailyTotalUnits() + "/" + danaPump.getMaxDailyTotalUnits());
if (System.currentTimeMillis() > lastApproachingDailyLimit + 30 * 60 * 1000) {
Notification reportFail = new Notification(Notification.APPROACHING_DAILY_LIMIT, resourceHelper.gs(R.string.approachingdailylimit), Notification.URGENT);
rxBus.send(new EventNewNotification(reportFail));
- NSUpload.uploadError(resourceHelper.gs(R.string.approachingdailylimit) + ": " + danaRPump.getDailyTotalUnits() + "/" + danaRPump.getMaxDailyTotalUnits() + "U");
+ nsUpload.uploadError(resourceHelper.gs(R.string.approachingdailylimit) + ": " + danaPump.getDailyTotalUnits() + "/" + danaPump.getMaxDailyTotalUnits() + "U");
lastApproachingDailyLimit = System.currentTimeMillis();
}
}
@@ -234,14 +222,14 @@ public class DanaRExecutionService extends AbstractDanaRExecutionService {
public boolean tempBasal(int percent, int durationInHours) {
if (!isConnected()) return false;
- if (danaRPump.isTempBasalInProgress()) {
+ if (danaPump.isTempBasalInProgress()) {
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.stoppingtempbasal)));
- mSerialIOThread.sendMessage(new MsgSetTempBasalStop(aapsLogger));
+ mSerialIOThread.sendMessage(new MsgSetTempBasalStop(injector));
SystemClock.sleep(500);
}
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.settingtempbasal)));
- mSerialIOThread.sendMessage(new MsgSetTempBasalStart(aapsLogger, percent, durationInHours));
- mSerialIOThread.sendMessage(new MsgStatusTempBasal(aapsLogger, danaRPump, activePlugin, injector));
+ mSerialIOThread.sendMessage(new MsgSetTempBasalStart(injector, percent, durationInHours));
+ mSerialIOThread.sendMessage(new MsgStatusTempBasal(injector));
rxBus.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
}
@@ -249,8 +237,8 @@ public class DanaRExecutionService extends AbstractDanaRExecutionService {
public boolean tempBasalStop() {
if (!isConnected()) return false;
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.stoppingtempbasal)));
- mSerialIOThread.sendMessage(new MsgSetTempBasalStop(aapsLogger));
- mSerialIOThread.sendMessage(new MsgStatusTempBasal(aapsLogger, danaRPump, activePlugin, injector));
+ mSerialIOThread.sendMessage(new MsgSetTempBasalStop(injector));
+ mSerialIOThread.sendMessage(new MsgStatusTempBasal(injector));
rxBus.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
}
@@ -258,8 +246,8 @@ public class DanaRExecutionService extends AbstractDanaRExecutionService {
public boolean extendedBolus(double insulin, int durationInHalfHours) {
if (!isConnected()) return false;
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.settingextendedbolus)));
- mSerialIOThread.sendMessage(new MsgSetExtendedBolusStart(aapsLogger, constraintChecker, insulin, (byte) (durationInHalfHours & 0xFF)));
- mSerialIOThread.sendMessage(new MsgStatusBolusExtended(injector, aapsLogger, danaRPump, activePlugin));
+ mSerialIOThread.sendMessage(new MsgSetExtendedBolusStart(injector, insulin, (byte) (durationInHalfHours & 0xFF)));
+ mSerialIOThread.sendMessage(new MsgStatusBolusExtended(injector));
rxBus.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
}
@@ -267,8 +255,8 @@ public class DanaRExecutionService extends AbstractDanaRExecutionService {
public boolean extendedBolusStop() {
if (!isConnected()) return false;
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.stoppingextendedbolus)));
- mSerialIOThread.sendMessage(new MsgSetExtendedBolusStop(aapsLogger));
- mSerialIOThread.sendMessage(new MsgStatusBolusExtended(injector, aapsLogger, danaRPump, activePlugin));
+ mSerialIOThread.sendMessage(new MsgSetExtendedBolusStop(injector));
+ mSerialIOThread.sendMessage(new MsgStatusBolusExtended(injector));
rxBus.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
}
@@ -282,36 +270,37 @@ public class DanaRExecutionService extends AbstractDanaRExecutionService {
if (!isConnected()) return false;
if (BolusProgressDialog.stopPressed) return false;
- mBolusingTreatment = t;
+ danaPump.setBolusingTreatment(t);
+ danaPump.setBolusDone(false);
int preferencesSpeed = sp.getInt(R.string.key_danars_bolusspeed, 0);
MessageBase start;
if (preferencesSpeed == 0)
- start = new MsgBolusStart(aapsLogger, constraintChecker, danaRPump, amount);
+ start = new MsgBolusStart(injector, amount);
else
- start = new MsgBolusStartWithSpeed(aapsLogger, constraintChecker, danaRPump, amount, preferencesSpeed);
- danaRPump.setBolusStopped(false);
- danaRPump.setBolusStopForced(false);
+ start = new MsgBolusStartWithSpeed(injector, amount, preferencesSpeed);
+ danaPump.setBolusStopped(false);
+ danaPump.setBolusStopForced(false);
if (carbs > 0) {
- mSerialIOThread.sendMessage(new MsgSetCarbsEntry(aapsLogger, carbtime, carbs));
+ mSerialIOThread.sendMessage(new MsgSetCarbsEntry(injector, carbtime, carbs));
}
if (amount > 0) {
- danaRPump.setBolusingTreatment(t);
- danaRPump.setBolusAmountToBeDelivered(amount);
+ danaPump.setBolusingTreatment(t);
+ danaPump.setBolusAmountToBeDelivered(amount);
long bolusStart = System.currentTimeMillis();
- if (!danaRPump.getBolusStopped()) {
+ if (!danaPump.getBolusStopped()) {
mSerialIOThread.sendMessage(start);
} else {
t.insulin = 0d;
return false;
}
- while (!danaRPump.getBolusStopped() && !start.failed) {
+ while (!danaPump.getBolusStopped() && !start.failed) {
SystemClock.sleep(100);
- if ((System.currentTimeMillis() - danaRPump.getBolusProgressLastTimeStamp()) > 15 * 1000L) { // if i didn't receive status for more than 15 sec expecting broken comm
- danaRPump.setBolusStopped(true);
- danaRPump.setBolusStopForced(true);
+ if ((System.currentTimeMillis() - danaPump.getBolusProgressLastTimeStamp()) > 15 * 1000L) { // if i didn't receive status for more than 15 sec expecting broken comm
+ danaPump.setBolusStopped(true);
+ danaPump.setBolusStopForced(true);
aapsLogger.debug(LTag.PUMP, "Communication stopped");
}
}
@@ -321,7 +310,7 @@ public class DanaRExecutionService extends AbstractDanaRExecutionService {
bolusingEvent.setT(t);
bolusingEvent.setPercent(99);
- mBolusingTreatment = null;
+ danaPump.setBolusingTreatment(null);
int speed = 12;
switch (preferencesSpeed) {
@@ -353,11 +342,11 @@ public class DanaRExecutionService extends AbstractDanaRExecutionService {
commandQueue.independentConnect("bolusingInterrupted", new Callback() {
@Override
public void run() {
- if (danaRPump.getLastBolusTime() > System.currentTimeMillis() - 60 * 1000L) { // last bolus max 1 min old
- t.insulin = danaRPump.getLastBolusAmount();
- aapsLogger.debug(LTag.PUMP, "Used bolus amount from history: " + danaRPump.getLastBolusAmount());
+ if (danaPump.getLastBolusTime() > System.currentTimeMillis() - 60 * 1000L) { // last bolus max 1 min old
+ t.insulin = danaPump.getLastBolusAmount();
+ aapsLogger.debug(LTag.PUMP, "Used bolus amount from history: " + danaPump.getLastBolusAmount());
} else {
- aapsLogger.debug(LTag.PUMP, "Bolus amount in history too old: " + DateUtil.dateAndTimeString(danaRPump.getLastBolusTime()));
+ aapsLogger.debug(LTag.PUMP, "Bolus amount in history too old: " + dateUtil.dateAndTimeString(danaPump.getLastBolusTime()));
}
synchronized (o) {
o.notify();
@@ -379,7 +368,7 @@ public class DanaRExecutionService extends AbstractDanaRExecutionService {
public boolean carbsEntry(int amount) {
if (!isConnected()) return false;
- MsgSetCarbsEntry msg = new MsgSetCarbsEntry(aapsLogger, System.currentTimeMillis(), amount);
+ MsgSetCarbsEntry msg = new MsgSetCarbsEntry(injector, System.currentTimeMillis(), amount);
mSerialIOThread.sendMessage(msg);
return true;
}
@@ -397,12 +386,12 @@ public class DanaRExecutionService extends AbstractDanaRExecutionService {
public boolean updateBasalsInPump(final Profile profile) {
if (!isConnected()) return false;
rxBus.send(new EventPumpStatusChanged(resourceHelper.gs(R.string.updatingbasalrates)));
- Double[] basal = danaRPump.buildDanaRProfileRecord(profile);
- MsgSetBasalProfile msgSet = new MsgSetBasalProfile(aapsLogger, rxBus, resourceHelper, (byte) 0, basal);
+ Double[] basal = danaPump.buildDanaRProfileRecord(profile);
+ MsgSetBasalProfile msgSet = new MsgSetBasalProfile(injector, (byte) 0, basal);
mSerialIOThread.sendMessage(msgSet);
- MsgSetActivateBasalProfile msgActivate = new MsgSetActivateBasalProfile(aapsLogger, (byte) 0);
+ MsgSetActivateBasalProfile msgActivate = new MsgSetActivateBasalProfile(injector, (byte) 0);
mSerialIOThread.sendMessage(msgActivate);
- danaRPump.setLastSettingsRead(0); // force read full settings
+ danaPump.setLastSettingsRead(0); // force read full settings
getPumpStatus();
rxBus.send(new EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING));
return true;
@@ -412,7 +401,7 @@ public class DanaRExecutionService extends AbstractDanaRExecutionService {
if (!isConnected())
return new PumpEnactResult(injector).success(false);
SystemClock.sleep(300);
- MsgSetUserOptions msg = new MsgSetUserOptions(aapsLogger, danaRPump);
+ MsgSetUserOptions msg = new MsgSetUserOptions(injector);
mSerialIOThread.sendMessage(msg);
SystemClock.sleep(200);
return new PumpEnactResult(injector).success(!msg.failed);
diff --git a/app/src/main/res/xml/pref_danar.xml b/danar/src/main/res/xml/pref_danar.xml
similarity index 96%
rename from app/src/main/res/xml/pref_danar.xml
rename to danar/src/main/res/xml/pref_danar.xml
index 16ef4aa57d..64246a6544 100644
--- a/app/src/main/res/xml/pref_danar.xml
+++ b/danar/src/main/res/xml/pref_danar.xml
@@ -7,7 +7,7 @@
android:title="@string/danar_pump_settings"
app:initialExpandedChildrenCount="0">
-
diff --git a/app/src/main/res/xml/pref_danarkorean.xml b/danar/src/main/res/xml/pref_danarkorean.xml
similarity index 96%
rename from app/src/main/res/xml/pref_danarkorean.xml
rename to danar/src/main/res/xml/pref_danarkorean.xml
index 90b8ead439..c4de35face 100644
--- a/app/src/main/res/xml/pref_danarkorean.xml
+++ b/danar/src/main/res/xml/pref_danarkorean.xml
@@ -7,7 +7,7 @@
android:title="@string/danar_pump_settings"
app:initialExpandedChildrenCount="0">
-
diff --git a/app/src/main/res/xml/pref_danarv2.xml b/danar/src/main/res/xml/pref_danarv2.xml
similarity index 95%
rename from app/src/main/res/xml/pref_danarv2.xml
rename to danar/src/main/res/xml/pref_danarv2.xml
index 011490beec..d31b25f699 100644
--- a/app/src/main/res/xml/pref_danarv2.xml
+++ b/danar/src/main/res/xml/pref_danarv2.xml
@@ -7,7 +7,7 @@
android:title="@string/danar_pump_settings"
app:initialExpandedChildrenCount="0">
-
diff --git a/danars/.gitignore b/danars/.gitignore
new file mode 100644
index 0000000000..796b96d1c4
--- /dev/null
+++ b/danars/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/danars/build.gradle b/danars/build.gradle
new file mode 100644
index 0000000000..e27dc5df75
--- /dev/null
+++ b/danars/build.gradle
@@ -0,0 +1,76 @@
+apply plugin: 'com.android.library'
+apply plugin: 'kotlin-android'
+apply plugin: 'kotlin-android-extensions'
+apply plugin: 'kotlin-kapt'
+
+android {
+ compileSdkVersion 28
+
+ defaultConfig {
+ minSdkVersion 24
+ targetSdkVersion 28
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ 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
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+dependencies {
+ implementation project(':core')
+ implementation project(':dana')
+
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
+ implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
+ implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutinesVersion"
+ implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutinesVersion"
+
+ implementation 'androidx.appcompat:appcompat:1.1.0'
+ implementation "androidx.core:core-ktx:${coreVersion}"
+ implementation "androidx.preference:preference-ktx:1.1.1"
+ implementation "androidx.activity:activity-ktx:${activityVersion}"
+
+ // Graphview cannot be upgraded
+ implementation "com.jjoe64:graphview:4.0.1"
+
+ implementation 'net.danlew:android.joda:2.10.6'
+
+ implementation "com.google.dagger:dagger-android:$dagger_version"
+ implementation "com.google.dagger:dagger-android-support:$dagger_version"
+ 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"
+
+ //RxBus
+ implementation "io.reactivex.rxjava2:rxandroid:${rxandroid_version}"
+
+ testImplementation 'junit:junit:4.13'
+ androidTestImplementation 'androidx.test.ext:junit:1.1.1'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
+}
+
diff --git a/danars/consumer-rules.pro b/danars/consumer-rules.pro
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/danars/proguard-rules.pro b/danars/proguard-rules.pro
new file mode 100644
index 0000000000..f1b424510d
--- /dev/null
+++ b/danars/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
diff --git a/danars/src/main/AndroidManifest.xml b/danars/src/main/AndroidManifest.xml
new file mode 100644
index 0000000000..b560f7f9bd
--- /dev/null
+++ b/danars/src/main/AndroidManifest.xml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/DanaRSPlugin.kt b/danars/src/main/java/info/nightscout/androidaps/danars/DanaRSPlugin.kt
new file mode 100644
index 0000000000..291f2d3b9b
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/DanaRSPlugin.kt
@@ -0,0 +1,669 @@
+package info.nightscout.androidaps.danars
+
+import android.content.ComponentName
+import android.content.Context
+import android.content.Intent
+import android.content.ServiceConnection
+import android.os.IBinder
+import android.text.format.DateFormat
+import androidx.preference.Preference
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.dana.DanaPumpInterface
+import info.nightscout.androidaps.danars.events.EventDanaRSDeviceChange
+import info.nightscout.androidaps.danars.services.DanaRSService
+import info.nightscout.androidaps.data.DetailedBolusInfo
+import info.nightscout.androidaps.data.Profile
+import info.nightscout.androidaps.data.PumpEnactResult
+import info.nightscout.androidaps.db.Treatment
+import info.nightscout.androidaps.events.EventAppExit
+import info.nightscout.androidaps.events.EventConfigBuilderChange
+import info.nightscout.androidaps.interfaces.*
+import info.nightscout.androidaps.logging.AAPSLogger
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
+import info.nightscout.androidaps.plugins.common.ManufacturerType
+import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
+import info.nightscout.androidaps.plugins.general.actions.defs.CustomAction
+import info.nightscout.androidaps.plugins.general.actions.defs.CustomActionType
+import info.nightscout.androidaps.plugins.general.overview.events.EventDismissNotification
+import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification
+import info.nightscout.androidaps.plugins.general.overview.notifications.Notification
+import info.nightscout.androidaps.plugins.pump.common.bolusInfo.DetailedBolusInfoStorage
+import info.nightscout.androidaps.plugins.pump.common.defs.PumpType
+import info.nightscout.androidaps.utils.*
+import info.nightscout.androidaps.utils.resources.ResourceHelper
+import info.nightscout.androidaps.utils.sharedPreferences.SP
+import io.reactivex.disposables.CompositeDisposable
+import io.reactivex.schedulers.Schedulers
+import org.json.JSONException
+import org.json.JSONObject
+import javax.inject.Inject
+import javax.inject.Singleton
+import kotlin.math.abs
+import kotlin.math.max
+
+@Singleton
+class DanaRSPlugin @Inject constructor(
+ injector: HasAndroidInjector,
+ aapsLogger: AAPSLogger,
+ private val rxBus: RxBusWrapper,
+ private val context: Context,
+ resourceHelper: ResourceHelper,
+ private val constraintChecker: ConstraintChecker,
+ private val profileFunction: ProfileFunction,
+ private val activePluginProvider: ActivePluginProvider,
+ private val sp: SP,
+ commandQueue: CommandQueueProvider,
+ private val danaPump: DanaPump,
+ private val detailedBolusInfoStorage: DetailedBolusInfoStorage,
+ private val fabricPrivacy: FabricPrivacy,
+ private val dateUtil: DateUtil
+) : PumpPluginBase(PluginDescription()
+ .mainType(PluginType.PUMP)
+ .fragmentClass(info.nightscout.androidaps.dana.DanaFragment::class.java.name)
+ .pluginName(R.string.danarspump)
+ .shortName(R.string.danarspump_shortname)
+ .preferencesId(R.xml.pref_danars)
+ .description(R.string.description_pump_dana_rs),
+ injector, aapsLogger, resourceHelper, commandQueue
+), PumpInterface, DanaRInterface, ConstraintsInterface, DanaPumpInterface {
+
+ private val disposable = CompositeDisposable()
+ private var danaRSService: DanaRSService? = null
+ private var mDeviceAddress = ""
+ var mDeviceName = ""
+ private var pumpDesc = PumpDescription(PumpType.DanaRS)
+
+ override fun updatePreferenceSummary(pref: Preference) {
+ super.updatePreferenceSummary(pref)
+
+ if (pref.key == resourceHelper.gs(R.string.key_danars_name)) {
+ val value = sp.getStringOrNull(R.string.key_danars_name, null)
+ pref.summary = value
+ ?: resourceHelper.gs(R.string.not_set_short)
+ }
+ }
+
+ override fun onStart() {
+ super.onStart()
+ val intent = Intent(context, DanaRSService::class.java)
+ context.bindService(intent, mConnection, Context.BIND_AUTO_CREATE)
+ disposable.add(rxBus
+ .toObservable(EventAppExit::class.java)
+ .observeOn(Schedulers.io())
+ .subscribe({ context.unbindService(mConnection) }) { fabricPrivacy.logException(it) }
+ )
+ disposable.add(rxBus
+ .toObservable(EventConfigBuilderChange::class.java)
+ .observeOn(Schedulers.io())
+ .subscribe { danaPump.reset() }
+ )
+ disposable.add(rxBus
+ .toObservable(EventDanaRSDeviceChange::class.java)
+ .observeOn(Schedulers.io())
+ .subscribe({ changePump() }) { fabricPrivacy.logException(it) }
+ )
+ changePump() // load device name
+ }
+
+ override fun onStop() {
+ context.unbindService(mConnection)
+ disposable.clear()
+ super.onStop()
+ }
+
+ private val mConnection: ServiceConnection = object : ServiceConnection {
+ override fun onServiceDisconnected(name: ComponentName) {
+ aapsLogger.debug(LTag.PUMP, "Service is disconnected")
+ danaRSService = null
+ }
+
+ override fun onServiceConnected(name: ComponentName, service: IBinder) {
+ aapsLogger.debug(LTag.PUMP, "Service is connected")
+ val mLocalBinder = service as DanaRSService.LocalBinder
+ danaRSService = mLocalBinder.serviceInstance
+ }
+ }
+
+ fun changePump() {
+ mDeviceAddress = sp.getString(R.string.key_danars_address, "")
+ mDeviceName = sp.getString(R.string.key_danars_name, "")
+ danaPump.reset()
+ commandQueue.readStatus("DeviceChanged", null)
+ }
+
+ override fun connect(from: String) {
+ aapsLogger.debug(LTag.PUMP, "RS connect from: $from")
+ if (danaRSService != null && mDeviceAddress != "" && mDeviceName != "") {
+ val success = danaRSService?.connect(from, mDeviceAddress) ?: false
+ if (!success) ToastUtils.showToastInUiThread(context, resourceHelper.gs(R.string.ble_not_supported))
+ }
+ }
+
+ override fun isConnected(): Boolean {
+ return danaRSService?.isConnected ?: false
+ }
+
+ override fun isConnecting(): Boolean {
+ return danaRSService?.isConnecting ?: false
+ }
+
+ override fun isHandshakeInProgress(): Boolean {
+ return false
+ }
+
+ override fun finishHandshaking() {}
+ override fun disconnect(from: String) {
+ aapsLogger.debug(LTag.PUMP, "RS disconnect from: $from")
+ danaRSService?.disconnect(from)
+ }
+
+ override fun stopConnecting() {
+ danaRSService?.stopConnecting()
+ }
+
+ override fun getPumpStatus() {
+ danaRSService?.readPumpStatus()
+ pumpDesc.basalStep = danaPump.basalStep
+ pumpDesc.bolusStep = danaPump.bolusStep
+ }
+
+ // DanaR interface
+ override fun loadHistory(type: Byte): PumpEnactResult {
+ return danaRSService?.loadHistory(type) ?: PumpEnactResult(injector).success(false)
+ }
+
+ override fun loadEvents(): PumpEnactResult {
+ return danaRSService?.loadEvents() ?: PumpEnactResult(injector).success(false)
+ }
+
+ override fun setUserOptions(): PumpEnactResult {
+ return danaRSService?.setUserSettings() ?: PumpEnactResult(injector).success(false)
+ }
+
+ // Constraints interface
+ override fun applyBasalConstraints(absoluteRate: Constraint, profile: Profile): Constraint {
+ absoluteRate.setIfSmaller(aapsLogger, danaPump.maxBasal, resourceHelper.gs(R.string.limitingbasalratio, danaPump.maxBasal, resourceHelper.gs(R.string.pumplimit)), this)
+ return absoluteRate
+ }
+
+ override fun applyBasalPercentConstraints(percentRate: Constraint, profile: Profile): Constraint {
+ percentRate.setIfGreater(aapsLogger, 0, resourceHelper.gs(R.string.limitingpercentrate, 0, resourceHelper.gs(R.string.itmustbepositivevalue)), this)
+ percentRate.setIfSmaller(aapsLogger, pumpDescription.maxTempPercent, resourceHelper.gs(R.string.limitingpercentrate, pumpDescription.maxTempPercent, resourceHelper.gs(R.string.pumplimit)), this)
+ return percentRate
+ }
+
+ override fun applyBolusConstraints(insulin: Constraint): Constraint {
+ insulin.setIfSmaller(aapsLogger, danaPump.maxBolus, resourceHelper.gs(R.string.limitingbolus, danaPump.maxBolus, resourceHelper.gs(R.string.pumplimit)), this)
+ return insulin
+ }
+
+ override fun applyExtendedBolusConstraints(insulin: Constraint): Constraint {
+ return applyBolusConstraints(insulin)
+ }
+
+ // Pump interface
+ override fun isInitialized(): Boolean {
+ return danaPump.lastConnection > 0 && danaPump.maxBasal > 0 && danaPump.isRSPasswordOK
+ }
+
+ override fun isSuspended(): Boolean {
+ return danaPump.pumpSuspended
+ }
+
+ override fun isBusy(): Boolean {
+ return danaRSService?.isConnected ?: false || danaRSService?.isConnecting ?: false
+ }
+
+ override fun setNewBasalProfile(profile: Profile): PumpEnactResult {
+ val result = PumpEnactResult(injector)
+ if (!isInitialized) {
+ aapsLogger.error("setNewBasalProfile not initialized")
+ val notification = Notification(Notification.PROFILE_NOT_SET_NOT_INITIALIZED, resourceHelper.gs(R.string.pumpNotInitializedProfileNotSet), Notification.URGENT)
+ rxBus.send(EventNewNotification(notification))
+ result.comment = resourceHelper.gs(R.string.pumpNotInitializedProfileNotSet)
+ return result
+ } else {
+ rxBus.send(EventDismissNotification(Notification.PROFILE_NOT_SET_NOT_INITIALIZED))
+ }
+ return if (danaRSService?.updateBasalsInPump(profile) != true) {
+ val notification = Notification(Notification.FAILED_UDPATE_PROFILE, resourceHelper.gs(R.string.failedupdatebasalprofile), Notification.URGENT)
+ rxBus.send(EventNewNotification(notification))
+ result.comment = resourceHelper.gs(R.string.failedupdatebasalprofile)
+ result
+ } else {
+ rxBus.send(EventDismissNotification(Notification.PROFILE_NOT_SET_NOT_INITIALIZED))
+ rxBus.send(EventDismissNotification(Notification.FAILED_UDPATE_PROFILE))
+ val notification = Notification(Notification.PROFILE_SET_OK, resourceHelper.gs(R.string.profile_set_ok), Notification.INFO, 60)
+ rxBus.send(EventNewNotification(notification))
+ result.success = true
+ result.enacted = true
+ result.comment = "OK"
+ result
+ }
+ }
+
+ override fun isThisProfileSet(profile: Profile): Boolean {
+ if (!isInitialized) return true // TODO: not sure what's better. so far TRUE to prevent too many SMS
+ if (danaPump.pumpProfiles == null) return true // TODO: not sure what's better. so far TRUE to prevent too many SMS
+ val basalValues = if (danaPump.basal48Enable) 48 else 24
+ val basalIncrement = if (danaPump.basal48Enable) 30 * 60 else 60 * 60
+ for (h in 0 until basalValues) {
+ val pumpValue = danaPump.pumpProfiles!![danaPump.activeProfile][h]
+ val profileValue = profile.getBasalTimeFromMidnight(h * basalIncrement)
+ if (abs(pumpValue - profileValue) > pumpDescription.basalStep) {
+ aapsLogger.debug(LTag.PUMP, "Diff found. Hour: $h Pump: $pumpValue Profile: $profileValue")
+ return false
+ }
+ }
+ return true
+ }
+
+ override fun lastDataTime(): Long {
+ return danaPump.lastConnection
+ }
+
+ override fun getBaseBasalRate(): Double {
+ return danaPump.currentBasal
+ }
+
+ override fun getReservoirLevel(): Double {
+ return danaPump.reservoirRemainingUnits
+ }
+
+ override fun getBatteryLevel(): Int {
+ return danaPump.batteryRemaining
+ }
+
+ @Synchronized
+ override fun deliverTreatment(detailedBolusInfo: DetailedBolusInfo): PumpEnactResult {
+ detailedBolusInfo.insulin = constraintChecker.applyBolusConstraints(Constraint(detailedBolusInfo.insulin)).value()
+ return if (detailedBolusInfo.insulin > 0 || detailedBolusInfo.carbs > 0) {
+ val preferencesSpeed = sp.getInt(R.string.key_danars_bolusspeed, 0)
+ var speed = 12
+ when (preferencesSpeed) {
+ 0 -> speed = 12
+ 1 -> speed = 30
+ 2 -> speed = 60
+ }
+ // RS stores end time for bolus, we need to adjust time
+ // default delivery speed is 12 sec/U
+ detailedBolusInfo.date = DateUtil.now() + (speed * detailedBolusInfo.insulin * 1000).toLong()
+ // clean carbs to prevent counting them as twice because they will picked up as another record
+ // I don't think it's necessary to copy DetailedBolusInfo right now for carbs records
+ val carbs = detailedBolusInfo.carbs
+ detailedBolusInfo.carbs = 0.0
+ var carbTime = detailedBolusInfo.carbTime
+ if (carbTime == 0) carbTime-- // better set 1 min back to prevents clash with insulin
+ detailedBolusInfo.carbTime = 0
+ detailedBolusInfoStorage.add(detailedBolusInfo) // will be picked up on reading history
+ val t = Treatment()
+ t.isSMB = detailedBolusInfo.isSMB
+ var connectionOK = false
+ if (detailedBolusInfo.insulin > 0 || carbs > 0) connectionOK = danaRSService?.bolus(detailedBolusInfo.insulin, carbs.toInt(), DateUtil.now() + T.mins(carbTime.toLong()).msecs(), t)
+ ?: false
+ val result = PumpEnactResult(injector)
+ result.success = connectionOK && abs(detailedBolusInfo.insulin - t.insulin) < pumpDesc.bolusStep
+ result.bolusDelivered = t.insulin
+ result.carbsDelivered = detailedBolusInfo.carbs
+ if (!result.success) {
+ var error = "" + danaPump.bolusStartErrorCode
+ when (danaPump.bolusStartErrorCode) {
+ 0x10 -> error = resourceHelper.gs(R.string.maxbolusviolation)
+ 0x20 -> error = resourceHelper.gs(R.string.commanderror)
+ 0x40 -> error = resourceHelper.gs(R.string.speederror)
+ 0x80 -> error = resourceHelper.gs(R.string.insulinlimitviolation)
+ }
+ result.comment = String.format(resourceHelper.gs(R.string.boluserrorcode), detailedBolusInfo.insulin, t.insulin, error)
+ } else result.comment = resourceHelper.gs(R.string.ok)
+ aapsLogger.debug(LTag.PUMP, "deliverTreatment: OK. Asked: " + detailedBolusInfo.insulin + " Delivered: " + result.bolusDelivered)
+ result
+ } else {
+ val result = PumpEnactResult(injector)
+ result.success = false
+ result.bolusDelivered = 0.0
+ result.carbsDelivered = 0.0
+ result.comment = resourceHelper.gs(R.string.invalidinput)
+ aapsLogger.error("deliverTreatment: Invalid input")
+ result
+ }
+ }
+
+ override fun stopBolusDelivering() {
+ danaRSService?.bolusStop()
+ }
+
+ // This is called from APS
+ @Synchronized
+ override fun setTempBasalAbsolute(absoluteRate: Double, durationInMinutes: Int, profile: Profile, enforceNew: Boolean): PumpEnactResult {
+ var result = PumpEnactResult(injector)
+ val absoluteAfterConstrain = constraintChecker.applyBasalConstraints(Constraint(absoluteRate), profile).value()
+ val doTempOff = baseBasalRate - absoluteAfterConstrain == 0.0
+ val doLowTemp = absoluteAfterConstrain < baseBasalRate
+ val doHighTemp = absoluteAfterConstrain > baseBasalRate
+ if (doTempOff) {
+ // If temp in progress
+ if (activePluginProvider.activeTreatments.isTempBasalInProgress) {
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Stopping temp basal (doTempOff)")
+ return cancelTempBasal(false)
+ }
+ result.success = true
+ result.enacted = false
+ result.percent = 100
+ result.isPercent = true
+ result.isTempCancel = true
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: doTempOff OK")
+ return result
+ }
+ if (doLowTemp || doHighTemp) {
+ var percentRate = 0
+ // Any basal less than 0.10u/h will be dumped once per hour, not every 4 mins. So if it's less than .10u/h, set a zero temp.
+ if (absoluteAfterConstrain >= 0.10) {
+ percentRate = java.lang.Double.valueOf(absoluteAfterConstrain / baseBasalRate * 100).toInt()
+ } else {
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Requested basal < 0.10u/h. Setting 0u/h (doLowTemp || doHighTemp)")
+ }
+ percentRate = if (percentRate < 100) Round.ceilTo(percentRate.toDouble(), 10.0).toInt() else Round.floorTo(percentRate.toDouble(), 10.0).toInt()
+ if (percentRate > 500) // Special high temp 500/15min
+ percentRate = 500
+ // Check if some temp is already in progress
+ val activeTemp = activePluginProvider.activeTreatments.getTempBasalFromHistory(System.currentTimeMillis())
+ if (activeTemp != null) {
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: currently running: $activeTemp")
+ // Correct basal already set ?
+ if (activeTemp.percentRate == percentRate && activeTemp.plannedRemainingMinutes > 4) {
+ if (!enforceNew) {
+ result.success = true
+ result.percent = percentRate
+ result.enacted = false
+ result.duration = activeTemp.plannedRemainingMinutes
+ result.isPercent = true
+ result.isTempCancel = false
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Correct temp basal already set (doLowTemp || doHighTemp)")
+ return result
+ }
+ }
+ }
+ // Convert duration from minutes to hours
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: Setting temp basal $percentRate% for $durationInMinutes mins (doLowTemp || doHighTemp)")
+ result = if (percentRate == 0 && durationInMinutes > 30) {
+ setTempBasalPercent(percentRate, durationInMinutes, profile, enforceNew)
+ } else {
+ // use special APS temp basal call ... 100+/15min .... 100-/30min
+ setHighTempBasalPercent(percentRate)
+ }
+ if (!result.success) {
+ aapsLogger.error("setTempBasalAbsolute: Failed to set hightemp basal")
+ return result
+ }
+ aapsLogger.debug(LTag.PUMP, "setTempBasalAbsolute: hightemp basal set ok")
+ return result
+ }
+ // We should never end here
+ aapsLogger.error("setTempBasalAbsolute: Internal error")
+ result.success = false
+ result.comment = "Internal error"
+ return result
+ }
+
+ @Synchronized
+ override fun setTempBasalPercent(percent: Int, durationInMinutes: Int, profile: Profile, enforceNew: Boolean): PumpEnactResult {
+ val result = PumpEnactResult(injector)
+ var percentAfterConstraint = constraintChecker.applyBasalPercentConstraints(Constraint(percent), profile).value()
+ if (percentAfterConstraint < 0) {
+ result.isTempCancel = false
+ result.enacted = false
+ result.success = false
+ result.comment = resourceHelper.gs(R.string.invalidinput)
+ aapsLogger.error("setTempBasalPercent: Invalid input")
+ return result
+ }
+ if (percentAfterConstraint > pumpDescription.maxTempPercent) percentAfterConstraint = pumpDescription.maxTempPercent
+ val now = System.currentTimeMillis()
+ val activeTemp = activePluginProvider.activeTreatments.getTempBasalFromHistory(now)
+ if (activeTemp != null && activeTemp.percentRate == percentAfterConstraint && activeTemp.plannedRemainingMinutes > 4 && !enforceNew) {
+ result.enacted = false
+ result.success = true
+ result.isTempCancel = false
+ result.comment = resourceHelper.gs(R.string.ok)
+ result.duration = danaPump.tempBasalRemainingMin
+ result.percent = danaPump.tempBasalPercent
+ result.isPercent = true
+ aapsLogger.debug(LTag.PUMP, "setTempBasalPercent: Correct value already set")
+ return result
+ }
+ val connectionOK: Boolean
+ connectionOK = if (durationInMinutes == 15 || durationInMinutes == 30) {
+ danaRSService?.tempBasalShortDuration(percentAfterConstraint, durationInMinutes)
+ ?: false
+ } else {
+ val durationInHours = max(durationInMinutes / 60, 1)
+ danaRSService?.tempBasal(percentAfterConstraint, durationInHours) ?: false
+ }
+ if (connectionOK && danaPump.isTempBasalInProgress && danaPump.tempBasalPercent == percentAfterConstraint) {
+ result.enacted = true
+ result.success = true
+ result.comment = resourceHelper.gs(R.string.ok)
+ result.isTempCancel = false
+ result.duration = danaPump.tempBasalRemainingMin
+ result.percent = danaPump.tempBasalPercent
+ result.isPercent = true
+ aapsLogger.debug(LTag.PUMP, "setTempBasalPercent: OK")
+ return result
+ }
+ result.enacted = false
+ result.success = false
+ result.comment = resourceHelper.gs(R.string.tempbasaldeliveryerror)
+ aapsLogger.error("setTempBasalPercent: Failed to set temp basal")
+ return result
+ }
+
+ @Synchronized private fun setHighTempBasalPercent(percent: Int): PumpEnactResult {
+ val result = PumpEnactResult(injector)
+ val connectionOK = danaRSService?.highTempBasal(percent) ?: false
+ if (connectionOK && danaPump.isTempBasalInProgress && danaPump.tempBasalPercent == percent) {
+ result.enacted = true
+ result.success = true
+ result.comment = resourceHelper.gs(R.string.ok)
+ result.isTempCancel = false
+ result.duration = danaPump.tempBasalRemainingMin
+ result.percent = danaPump.tempBasalPercent
+ result.isPercent = true
+ aapsLogger.debug(LTag.PUMP, "setHighTempBasalPercent: OK")
+ return result
+ }
+ result.enacted = false
+ result.success = false
+ result.comment = resourceHelper.gs(R.string.danar_valuenotsetproperly)
+ aapsLogger.error("setHighTempBasalPercent: Failed to set temp basal")
+ return result
+ }
+
+ @Synchronized
+ override fun setExtendedBolus(insulin: Double, durationInMinutes: Int): PumpEnactResult {
+ var insulinAfterConstraint = constraintChecker.applyExtendedBolusConstraints(Constraint(insulin)).value()
+ // needs to be rounded
+ val durationInHalfHours = max(durationInMinutes / 30, 1)
+ insulinAfterConstraint = Round.roundTo(insulinAfterConstraint, pumpDescription.extendedBolusStep)
+ val result = PumpEnactResult(injector)
+ val runningEB = activePluginProvider.activeTreatments.getExtendedBolusFromHistory(System.currentTimeMillis())
+ if (runningEB != null && abs(runningEB.insulin - insulinAfterConstraint) < pumpDescription.extendedBolusStep) {
+ result.enacted = false
+ result.success = true
+ result.comment = resourceHelper.gs(R.string.ok)
+ result.duration = danaPump.extendedBolusRemainingMinutes
+ result.absolute = danaPump.extendedBolusAbsoluteRate
+ result.isPercent = false
+ result.isTempCancel = false
+ aapsLogger.debug(LTag.PUMP, "setExtendedBolus: Correct extended bolus already set. Current: " + danaPump.extendedBolusAmount + " Asked: " + insulinAfterConstraint)
+ return result
+ }
+ val connectionOK = danaRSService?.extendedBolus(insulinAfterConstraint, durationInHalfHours)
+ ?: false
+ if (connectionOK && danaPump.isExtendedInProgress && abs(danaPump.extendedBolusAbsoluteRate - insulinAfterConstraint) < pumpDescription.extendedBolusStep) {
+ result.enacted = true
+ result.success = true
+ result.comment = resourceHelper.gs(R.string.ok)
+ result.isTempCancel = false
+ result.duration = danaPump.extendedBolusRemainingMinutes
+ result.absolute = danaPump.extendedBolusAbsoluteRate
+ result.bolusDelivered = danaPump.extendedBolusAmount
+ result.isPercent = false
+ aapsLogger.debug(LTag.PUMP, "setExtendedBolus: OK")
+ return result
+ }
+ result.enacted = false
+ result.success = false
+ result.comment = resourceHelper.gs(R.string.danar_valuenotsetproperly)
+ aapsLogger.error("setExtendedBolus: Failed to extended bolus")
+ return result
+ }
+
+ @Synchronized
+ override fun cancelTempBasal(force: Boolean): PumpEnactResult {
+ val result = PumpEnactResult(injector)
+ val runningTB = activePluginProvider.activeTreatments.getTempBasalFromHistory(System.currentTimeMillis())
+ if (runningTB != null) {
+ danaRSService?.tempBasalStop()
+ result.enacted = true
+ result.isTempCancel = true
+ }
+ return if (!danaPump.isTempBasalInProgress) {
+ result.success = true
+ result.isTempCancel = true
+ result.comment = resourceHelper.gs(R.string.ok)
+ aapsLogger.debug(LTag.PUMP, "cancelRealTempBasal: OK")
+ result
+ } else {
+ result.success = false
+ result.comment = resourceHelper.gs(R.string.danar_valuenotsetproperly)
+ result.isTempCancel = true
+ aapsLogger.error("cancelRealTempBasal: Failed to cancel temp basal")
+ result
+ }
+ }
+
+ @Synchronized override fun cancelExtendedBolus(): PumpEnactResult {
+ val result = PumpEnactResult(injector)
+ val runningEB = activePluginProvider.activeTreatments.getExtendedBolusFromHistory(System.currentTimeMillis())
+ if (runningEB != null) {
+ danaRSService?.extendedBolusStop()
+ result.enacted = true
+ result.isTempCancel = true
+ }
+ return if (!danaPump.isExtendedInProgress) {
+ result.success = true
+ result.comment = resourceHelper.gs(R.string.ok)
+ aapsLogger.debug(LTag.PUMP, "cancelExtendedBolus: OK")
+ result
+ } else {
+ result.success = false
+ result.comment = resourceHelper.gs(R.string.danar_valuenotsetproperly)
+ aapsLogger.error("cancelExtendedBolus: Failed to cancel extended bolus")
+ result
+ }
+ }
+
+ override fun getJSONStatus(profile: Profile, profileName: String, version: String): JSONObject {
+ val now = System.currentTimeMillis()
+ if (danaPump.lastConnection + 60 * 60 * 1000L < System.currentTimeMillis()) {
+ return JSONObject()
+ }
+ val pumpJson = JSONObject()
+ val battery = JSONObject()
+ val status = JSONObject()
+ val extended = JSONObject()
+ try {
+ battery.put("percent", danaPump.batteryRemaining)
+ status.put("status", if (danaPump.pumpSuspended) "suspended" else "normal")
+ status.put("timestamp", DateUtil.toISOString(danaPump.lastConnection))
+ extended.put("Version", version)
+ if (danaPump.lastBolusTime != 0L) {
+ extended.put("LastBolus", dateUtil.dateAndTimeString(danaPump.lastBolusTime))
+ extended.put("LastBolusAmount", danaPump.lastBolusAmount)
+ }
+ val tb = activePluginProvider.activeTreatments.getTempBasalFromHistory(now)
+ if (tb != null) {
+ extended.put("TempBasalAbsoluteRate", tb.tempBasalConvertedToAbsolute(now, profile))
+ extended.put("TempBasalStart", dateUtil.dateAndTimeString(tb.date))
+ extended.put("TempBasalRemaining", tb.plannedRemainingMinutes)
+ }
+ val eb = activePluginProvider.activeTreatments.getExtendedBolusFromHistory(now)
+ if (eb != null) {
+ extended.put("ExtendedBolusAbsoluteRate", eb.absoluteRate())
+ extended.put("ExtendedBolusStart", dateUtil.dateAndTimeString(eb.date))
+ extended.put("ExtendedBolusRemaining", eb.plannedRemainingMinutes)
+ }
+ extended.put("BaseBasalRate", baseBasalRate)
+ try {
+ extended.put("ActiveProfile", profileFunction.getProfileName())
+ } catch (e: Exception) {
+ aapsLogger.error("Unhandled exception", e)
+ }
+ pumpJson.put("battery", battery)
+ pumpJson.put("status", status)
+ pumpJson.put("extended", extended)
+ pumpJson.put("reservoir", danaPump.reservoirRemainingUnits.toInt())
+ pumpJson.put("clock", DateUtil.toISOString(now))
+ } catch (e: JSONException) {
+ aapsLogger.error("Unhandled exception", e)
+ }
+ return pumpJson
+ }
+
+ override fun manufacturer(): ManufacturerType {
+ return ManufacturerType.Sooil
+ }
+
+ override fun model(): PumpType {
+ return PumpType.DanaRS
+ }
+
+ override fun serialNumber(): String {
+ return danaPump.serialNumber
+ }
+
+ override fun getPumpDescription(): PumpDescription {
+ return pumpDesc
+ }
+
+ override fun shortStatus(veryShort: Boolean): String {
+ var ret = ""
+ if (danaPump.lastConnection != 0L) {
+ val agoMillis = System.currentTimeMillis() - danaPump.lastConnection
+ val agoMin = (agoMillis / 60.0 / 1000.0).toInt()
+ ret += "LastConn: $agoMin minago\n"
+ }
+ if (danaPump.lastBolusTime != 0L)
+ ret += "LastBolus: ${DecimalFormatter.to2Decimal(danaPump.lastBolusAmount)}U @${DateFormat.format("HH:mm", danaPump.lastBolusTime)}"
+
+ val activeTemp = activePluginProvider.activeTreatments.getRealTempBasalFromHistory(System.currentTimeMillis())
+ if (activeTemp != null)
+ ret += "Temp: ${activeTemp.toStringFull()}"
+
+ val activeExtendedBolus = activePluginProvider.activeTreatments.getExtendedBolusFromHistory(System.currentTimeMillis())
+ if (activeExtendedBolus != null)
+ ret += "Extended: $activeExtendedBolus\n"
+
+ if (!veryShort) {
+ ret += "TDD: ${DecimalFormatter.to0Decimal(danaPump.dailyTotalUnits)} / ${danaPump.maxDailyTotalUnits} U"
+ }
+ ret += "Reserv: ${DecimalFormatter.to0Decimal(danaPump.reservoirRemainingUnits)} U"
+ ret += "Batt: ${danaPump.batteryRemaining}"
+ return ret
+ }
+
+ override fun isFakingTempsByExtendedBoluses(): Boolean = false
+ override fun loadTDDs(): PumpEnactResult = loadHistory(info.nightscout.androidaps.dana.comm.RecordTypes.RECORD_TYPE_DAILY)
+ override fun getCustomActions(): List? = null
+ override fun executeCustomAction(customActionType: CustomActionType) {}
+ override fun canHandleDST(): Boolean = false
+ override fun timezoneOrDSTChanged(timeChangeType: TimeChangeType?) {}
+ override fun clearPairing() {
+ sp.remove(resourceHelper.gs(R.string.key_danars_pairingkey) + mDeviceName)
+ sp.remove(resourceHelper.gs(R.string.key_danars_v3_randompairingkey) + mDeviceName)
+ sp.remove(resourceHelper.gs(R.string.key_danars_v3_pairingkey) + mDeviceName)
+ sp.remove(resourceHelper.gs(R.string.key_danars_v3_randomsynckey) + mDeviceName)
+ }
+}
\ No newline at end of file
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/activities/BLEScanActivity.kt b/danars/src/main/java/info/nightscout/androidaps/danars/activities/BLEScanActivity.kt
new file mode 100644
index 0000000000..f49ee80376
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/activities/BLEScanActivity.kt
@@ -0,0 +1,172 @@
+package info.nightscout.androidaps.danars.activities
+
+import android.annotation.SuppressLint
+import android.bluetooth.BluetoothAdapter
+import android.bluetooth.BluetoothDevice
+import android.bluetooth.le.BluetoothLeScanner
+import android.bluetooth.le.ScanCallback
+import android.bluetooth.le.ScanResult
+import android.content.pm.ActivityInfo
+import android.os.Bundle
+import android.os.Handler
+import android.view.View
+import android.view.ViewGroup
+import android.widget.BaseAdapter
+import android.widget.TextView
+import info.nightscout.androidaps.activities.NoSplashAppCompatActivity
+import info.nightscout.androidaps.danars.R
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
+import info.nightscout.androidaps.plugins.pump.common.ble.BlePreCheck
+import info.nightscout.androidaps.danars.events.EventDanaRSDeviceChange
+import info.nightscout.androidaps.utils.sharedPreferences.SP
+import kotlinx.android.synthetic.main.danars_blescanner_activity.*
+import java.util.*
+import java.util.regex.Pattern
+import javax.inject.Inject
+
+class BLEScanActivity : NoSplashAppCompatActivity() {
+
+ @Inject lateinit var sp: SP
+ @Inject lateinit var rxBus: RxBusWrapper
+ @Inject lateinit var blePreCheck: BlePreCheck
+
+ private var listAdapter: ListAdapter? = null
+ private val devices = ArrayList()
+ private var bluetoothLeScanner: BluetoothLeScanner? = null
+
+ @SuppressLint("SourceLockedOrientationActivity")
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.danars_blescanner_activity)
+ requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
+
+ blePreCheck.prerequisitesCheck(this)
+
+ listAdapter = ListAdapter()
+ danars_blescanner_listview.emptyView = findViewById(R.id.danars_blescanner_nodevice)
+ danars_blescanner_listview.adapter = listAdapter
+ listAdapter?.notifyDataSetChanged()
+ }
+
+ override fun onResume() {
+ super.onResume()
+
+ BluetoothAdapter.getDefaultAdapter()?.let { bluetoothAdapter ->
+ if (!bluetoothAdapter.isEnabled) bluetoothAdapter.enable()
+ bluetoothLeScanner = bluetoothAdapter.bluetoothLeScanner
+ startScan()
+ }
+ }
+
+ override fun onPause() {
+ super.onPause()
+ stopScan()
+ }
+
+ private fun startScan() {
+ if (bluetoothLeScanner != null) bluetoothLeScanner!!.startScan(mBleScanCallback)
+ }
+
+ private fun stopScan() {
+ if (bluetoothLeScanner != null) bluetoothLeScanner!!.stopScan(mBleScanCallback)
+ }
+
+ private fun addBleDevice(device: BluetoothDevice?) {
+ if (device == null || device.name == null || device.name == "") {
+ return
+ }
+ val item = BluetoothDeviceItem(device)
+ if (!isSNCheck(device.name) || devices.contains(item)) {
+ return
+ }
+ devices.add(item)
+ Handler().post { listAdapter!!.notifyDataSetChanged() }
+ }
+
+ private val mBleScanCallback: ScanCallback = object : ScanCallback() {
+ override fun onScanResult(callbackType: Int, result: ScanResult) {
+ addBleDevice(result.device)
+ }
+ }
+
+ internal inner class ListAdapter : BaseAdapter() {
+ override fun getCount(): Int = devices.size
+ override fun getItem(i: Int): BluetoothDeviceItem = devices[i]
+ override fun getItemId(i: Int): Long = 0
+
+ override fun getView(i: Int, convertView: View?, parent: ViewGroup?): View {
+ var v = convertView
+ val holder: ViewHolder
+ if (v == null) {
+ v = View.inflate(applicationContext, R.layout.danars_blescanner_item, null)
+ holder = ViewHolder(v)
+ v.tag = holder
+ } else {
+ // reuse view if already exists
+ holder = v.tag as ViewHolder
+ }
+ val item = getItem(i)
+ holder.setData(item)
+ return v!!
+ }
+
+ private inner class ViewHolder internal constructor(v: View) : View.OnClickListener {
+ private lateinit var item: BluetoothDeviceItem
+ private val name: TextView = v.findViewById(R.id.ble_name)
+ private val address: TextView = v.findViewById(R.id.ble_address)
+
+ init {
+ v.setOnClickListener(this@ViewHolder)
+ }
+
+ override fun onClick(v: View) {
+ sp.putString(R.string.key_danars_address, item.device.address)
+ sp.putString(R.string.key_danars_name, name.text.toString())
+ item.device.createBond()
+ rxBus.send(EventDanaRSDeviceChange())
+ finish()
+ }
+
+ fun setData(data: BluetoothDeviceItem) {
+ var tTitle = data.device.name
+ if (tTitle == null || tTitle == "") {
+ tTitle = "(unknown)"
+ } else if (tTitle.length > 10) {
+ tTitle = tTitle.substring(0, 10)
+ }
+ name.text = tTitle
+ address.text = data.device.address
+ item = data
+ }
+
+ }
+ }
+
+ //
+ inner class BluetoothDeviceItem internal constructor(val device: BluetoothDevice) {
+
+ override fun equals(other: Any?): Boolean {
+ if (other !is BluetoothDeviceItem) {
+ return false
+ }
+ return stringEquals(device.address, other.device.address)
+ }
+
+ private fun stringEquals(arg1: String, arg2: String): Boolean {
+ return try {
+ arg1 == arg2
+ } catch (e: Exception) {
+ false
+ }
+ }
+
+ override fun hashCode(): Int = device.hashCode()
+ }
+
+ private fun isSNCheck(sn: String?): Boolean {
+ val regex = "^([a-zA-Z]{3})([0-9]{5})([a-zA-Z]{2})$"
+ val p = Pattern.compile(regex)
+ val m = p.matcher(sn)
+ return m.matches()
+ }
+}
\ No newline at end of file
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/activities/EnterPinActivity.kt b/danars/src/main/java/info/nightscout/androidaps/danars/activities/EnterPinActivity.kt
new file mode 100644
index 0000000000..ac97ce50a3
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/activities/EnterPinActivity.kt
@@ -0,0 +1,99 @@
+package info.nightscout.androidaps.danars.activities
+
+import android.os.Bundle
+import android.util.Base64
+import info.nightscout.androidaps.activities.NoSplashAppCompatActivity
+import info.nightscout.androidaps.danars.R
+import info.nightscout.androidaps.events.EventPumpStatusChanged
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
+import info.nightscout.androidaps.danars.DanaRSPlugin
+import info.nightscout.androidaps.danars.services.BLEComm
+import info.nightscout.androidaps.utils.FabricPrivacy
+import info.nightscout.androidaps.utils.alertDialogs.OKDialog
+import info.nightscout.androidaps.utils.extensions.hexStringToByteArray
+import info.nightscout.androidaps.utils.resources.ResourceHelper
+import info.nightscout.androidaps.utils.sharedPreferences.SP
+import info.nightscout.androidaps.utils.textValidator.DefaultEditTextValidator
+import info.nightscout.androidaps.utils.textValidator.EditTextValidator
+import io.reactivex.android.schedulers.AndroidSchedulers
+import io.reactivex.disposables.CompositeDisposable
+import kotlinx.android.synthetic.main.danars_enter_pin_activity.*
+import kotlinx.android.synthetic.main.okcancel.*
+import javax.inject.Inject
+import kotlin.experimental.xor
+
+class EnterPinActivity : NoSplashAppCompatActivity() {
+
+ @Inject lateinit var rxBus: RxBusWrapper
+ @Inject lateinit var fabricPrivacy: FabricPrivacy
+ @Inject lateinit var resourceHelper: ResourceHelper
+ @Inject lateinit var danaRSPlugin: DanaRSPlugin
+ @Inject lateinit var sp: SP
+ @Inject lateinit var bleComm: BLEComm
+
+ private val disposable = CompositeDisposable()
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.danars_enter_pin_activity)
+
+ val p1 = DefaultEditTextValidator(rs_v3_pin1, this)
+ .setTestErrorString(resourceHelper.gs(R.string.error_mustbe12hexadidits), this)
+ .setCustomRegexp(resourceHelper.gs(R.string.twelvehexanumber), this)
+ .setTestType(EditTextValidator.TEST_REGEXP, this)
+ val p2 = DefaultEditTextValidator(rs_v3_pin2, this)
+ .setTestErrorString(resourceHelper.gs(R.string.error_mustbe8hexadidits), this)
+ .setCustomRegexp(resourceHelper.gs(R.string.eighthexanumber), this)
+ .setTestType(EditTextValidator.TEST_REGEXP, this)
+
+ ok.setOnClickListener {
+ if (p1.testValidity(false) && p2.testValidity(false)) {
+ val result = checkPairingCheckSum(
+ rs_v3_pin1.text.toString().hexStringToByteArray(),
+ rs_v3_pin2.text.toString().substring(0..5).hexStringToByteArray(),
+ rs_v3_pin2.text.toString().substring(6..7).hexStringToByteArray())
+ if (result) {
+ bleComm.finishV3Pairing()
+ finish()
+ }
+ else OKDialog.show(this, resourceHelper.gs(R.string.error), resourceHelper.gs(R.string.invalidinput))
+ }
+ }
+ cancel.setOnClickListener { finish() }
+ }
+
+ override fun onResume() {
+ super.onResume()
+ disposable.add(rxBus
+ .toObservable(EventPumpStatusChanged::class.java)
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({ if (it.status == EventPumpStatusChanged.Status.DISCONNECTED) finish() }) { fabricPrivacy.logException(it) }
+ )
+ }
+
+ override fun onPause() {
+ super.onPause()
+ disposable.clear()
+ }
+
+ private fun checkPairingCheckSum(pairingKey: ByteArray, randomPairingKey: ByteArray, checksum: ByteArray): Boolean {
+
+ // pairingKey ByteArray(6)
+ // randomPairingKey ByteArray(3)
+ // checksum ByteArray(1)
+
+ var pairingKeyCheckSum: Byte = 0
+ for (i in pairingKey.indices)
+ pairingKeyCheckSum = pairingKeyCheckSum xor pairingKey[i]
+
+ sp.putString(resourceHelper.gs(R.string.key_danars_v3_pairingkey) + danaRSPlugin.mDeviceName, Base64.encodeToString(pairingKey, Base64.DEFAULT))
+
+ for (i in randomPairingKey.indices)
+ pairingKeyCheckSum = pairingKeyCheckSum xor randomPairingKey[i]
+
+ sp.putString(resourceHelper.gs(R.string.key_danars_v3_randompairingkey) + danaRSPlugin.mDeviceName, Base64.encodeToString(randomPairingKey, Base64.DEFAULT))
+
+ return checksum[0] == pairingKeyCheckSum
+ }
+
+}
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/activities/PairingHelperActivity.kt b/danars/src/main/java/info/nightscout/androidaps/danars/activities/PairingHelperActivity.kt
new file mode 100644
index 0000000000..c7f5efc3a5
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/activities/PairingHelperActivity.kt
@@ -0,0 +1,32 @@
+package info.nightscout.androidaps.danars.activities
+
+import android.annotation.SuppressLint
+import android.content.Intent
+import android.content.pm.ActivityInfo
+import android.os.Bundle
+import info.nightscout.androidaps.activities.NoSplashAppCompatActivity
+import info.nightscout.androidaps.danars.dialogs.PairingProgressDialog
+
+class PairingHelperActivity : NoSplashAppCompatActivity() {
+ var dialog: PairingProgressDialog? = null
+
+ @SuppressLint("SourceLockedOrientationActivity")
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ dialog = PairingProgressDialog()
+ .setHelperActivity(this)
+ dialog?.show(supportFragmentManager, "PairingProgress")
+ requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ dialog = null
+ }
+
+ override fun onNewIntent(intent: Intent?) {
+ super.onNewIntent(intent)
+ dialog?.resetToNewPairing()
+ }
+
+}
\ No newline at end of file
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRSMessageHashTable.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRSMessageHashTable.kt
new file mode 100644
index 0000000000..84e0dffa09
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRSMessageHashTable.kt
@@ -0,0 +1,99 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.data.Profile
+import java.util.*
+import javax.inject.Inject
+import javax.inject.Singleton
+
+@Singleton
+class DanaRSMessageHashTable @Inject constructor(
+ val injector: HasAndroidInjector
+) {
+
+ var messages: HashMap = HashMap()
+
+ fun put(message: DanaRS_Packet) {
+ messages[message.command] = message
+ }
+
+ fun findMessage(command: Int): DanaRS_Packet {
+ return messages[command] ?: DanaRS_Packet(injector)
+ }
+
+ init {
+ put(DanaRS_Packet_Basal_Set_Cancel_Temporary_Basal(injector))
+ put(DanaRS_Packet_Basal_Get_Basal_Rate(injector))
+ put(DanaRS_Packet_Basal_Get_Profile_Basal_Rate(injector))
+ put(DanaRS_Packet_Basal_Get_Profile_Number(injector))
+ put(DanaRS_Packet_Basal_Set_Basal_Rate(injector, arrayOf()))
+ put(DanaRS_Packet_Basal_Set_Profile_Basal_Rate(injector, 0, arrayOf()))
+ put(DanaRS_Packet_Basal_Set_Profile_Number(injector))
+ put(DanaRS_Packet_Basal_Set_Suspend_Off(injector))
+ put(DanaRS_Packet_Basal_Set_Suspend_On(injector))
+ put(DanaRS_Packet_Basal_Set_Temporary_Basal(injector))
+ put(DanaRS_Packet_Basal_Get_Temporary_Basal_State(injector))
+ put(DanaRS_Packet_Bolus_Get_Bolus_Option(injector))
+ put(DanaRS_Packet_Bolus_Get_Initial_Bolus(injector))
+ put(DanaRS_Packet_Bolus_Get_Calculation_Information(injector))
+ put(DanaRS_Packet_Bolus_Get_Carbohydrate_Calculation_Information(injector))
+ put(DanaRS_Packet_Bolus_Get_CIR_CF_Array(injector))
+ put(DanaRS_Packet_Bolus_Get_24_CIR_CF_Array(injector))
+ put(DanaRS_Packet_Bolus_Get_Dual_Bolus(injector))
+ put(DanaRS_Packet_Bolus_Get_Extended_Bolus(injector))
+ put(DanaRS_Packet_Bolus_Get_Extended_Bolus_State(injector))
+ put(DanaRS_Packet_Bolus_Get_Extended_Menu_Option_State(injector))
+ put(DanaRS_Packet_Bolus_Get_Step_Bolus_Information(injector))
+ put(DanaRS_Packet_Bolus_Set_Bolus_Option(injector))
+ put(DanaRS_Packet_Bolus_Set_Initial_Bolus(injector))
+ put(DanaRS_Packet_Bolus_Set_CIR_CF_Array(injector))
+ put(DanaRS_Packet_Bolus_Set_24_CIR_CF_Array(injector, Profile(injector, null)))
+ put(DanaRS_Packet_Bolus_Set_Dual_Bolus(injector))
+ put(DanaRS_Packet_Bolus_Set_Extended_Bolus(injector))
+ put(DanaRS_Packet_Bolus_Set_Extended_Bolus_Cancel(injector))
+ put(DanaRS_Packet_Bolus_Set_Step_Bolus_Start(injector))
+ put(DanaRS_Packet_Bolus_Set_Step_Bolus_Stop(injector))
+ put(DanaRS_Packet_Etc_Keep_Connection(injector))
+ put(DanaRS_Packet_Etc_Set_History_Save(injector))
+ put(DanaRS_Packet_General_Delivery_Status(injector))
+ put(DanaRS_Packet_General_Get_Password(injector))
+ put(DanaRS_Packet_General_Initial_Screen_Information(injector))
+ put(DanaRS_Packet_Notify_Alarm(injector))
+ put(DanaRS_Packet_Notify_Delivery_Complete(injector))
+ put(DanaRS_Packet_Notify_Delivery_Rate_Display(injector))
+ put(DanaRS_Packet_Notify_Missed_Bolus_Alarm(injector))
+ put(DanaRS_Packet_Option_Get_Pump_Time(injector))
+ put(DanaRS_Packet_Option_Get_Pump_UTC_And_TimeZone(injector))
+ put(DanaRS_Packet_Option_Get_User_Option(injector))
+ put(DanaRS_Packet_Option_Set_Pump_Time(injector))
+ put(DanaRS_Packet_Option_Set_Pump_UTC_And_TimeZone(injector))
+ put(DanaRS_Packet_Option_Set_User_Option(injector))
+ //put(new DanaRS_Packet_History_(injector));
+ put(DanaRS_Packet_History_Alarm(injector))
+ put(DanaRS_Packet_History_All_History(injector))
+ put(DanaRS_Packet_History_Basal(injector))
+ put(DanaRS_Packet_History_Blood_Glucose(injector))
+ put(DanaRS_Packet_History_Bolus(injector))
+ put(DanaRS_Packet_Review_Bolus_Avg(injector))
+ put(DanaRS_Packet_History_Carbohydrate(injector))
+ put(DanaRS_Packet_History_Daily(injector))
+ put(DanaRS_Packet_General_Get_More_Information(injector))
+ put(DanaRS_Packet_General_Get_Pump_Check(injector))
+ put(DanaRS_Packet_General_Get_Shipping_Information(injector))
+ put(DanaRS_Packet_General_Get_Today_Delivery_Total(injector))
+ put(DanaRS_Packet_General_Get_User_Time_Change_Flag(injector))
+ put(DanaRS_Packet_History_Prime(injector))
+ put(DanaRS_Packet_History_Refill(injector))
+ put(DanaRS_Packet_General_Set_History_Upload_Mode(injector))
+ put(DanaRS_Packet_General_Set_User_Time_Change_Flag_Clear(injector))
+ put(DanaRS_Packet_History_Suspend(injector))
+ put(DanaRS_Packet_History_Temporary(injector))
+ // APS
+ put(DanaRS_Packet_APS_Basal_Set_Temporary_Basal(injector, 0))
+ put(DanaRS_Packet_APS_History_Events(injector, 0))
+ put(DanaRS_Packet_APS_Set_Event_History(injector, 0, 0, 0, 0))
+ // v3
+ put(DanaRS_Packet_General_Get_Shipping_Version(injector))
+ put(DanaRS_Packet_Review_Get_Pump_Dec_Ratio(injector))
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet.java b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet.java
similarity index 67%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet.java
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet.java
index 0e77d7588b..87ff77d0e6 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet.java
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet.java
@@ -1,32 +1,41 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm;
+package info.nightscout.androidaps.danars.comm;
import android.annotation.TargetApi;
import android.os.Build;
-import com.cozmo.danar.util.BleCommandUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.joda.time.DateTime;
import java.nio.charset.StandardCharsets;
-import java.util.Date;
-import info.nightscout.androidaps.logging.StacktraceLoggerWrapper;
+import javax.inject.Inject;
+
+import dagger.android.HasAndroidInjector;
+import info.nightscout.androidaps.danars.encryption.BleEncryption;
+import info.nightscout.androidaps.logging.AAPSLogger;
+import info.nightscout.androidaps.logging.LTag;
+import info.nightscout.androidaps.utils.DateUtil;
public class DanaRS_Packet {
- private static final Logger log = StacktraceLoggerWrapper.getLogger(DanaRS_Packet.class);
- protected static final int TYPE_START = 0;
- protected static final int OPCODE_START = 1;
+ @Inject AAPSLogger aapsLogger;
+ @Inject DateUtil dateUtil;
+
+ protected HasAndroidInjector injector;
+
+ private static final int TYPE_START = 0;
+ private static final int OPCODE_START = 1;
public static final int DATA_START = 2;
private boolean received;
public boolean failed;
- protected int type = BleCommandUtil.DANAR_PACKET__TYPE_RESPONSE; // most of the messages, should be changed for others
+ protected int type = BleEncryption.DANAR_PACKET__TYPE_RESPONSE; // most of the messages, should be changed for others
protected int opCode;
- public DanaRS_Packet() {
+ public DanaRS_Packet(HasAndroidInjector injector) {
received = false;
failed = false;
+ this.injector = injector;
+ injector.androidInjector().inject(this);
}
public void setReceived() {
@@ -55,7 +64,7 @@ public class DanaRS_Packet {
// STATIC FUNCTIONS
- public static int getCommand(byte[] data) {
+ public int getCommand(byte[] data) {
int type = byteArrayToInt(getBytes(data, TYPE_START, 1));
int opCode = byteArrayToInt(getBytes(data, OPCODE_START, 1));
return ((type & 0xFF) << 8) + (opCode & 0xFF);
@@ -71,7 +80,7 @@ public class DanaRS_Packet {
return "UNKNOWN_PACKET";
}
- protected static byte[] getBytes(byte[] data, int srcStart, int srcLength) {
+ protected byte[] getBytes(byte[] data, int srcStart, int srcLength) {
try {
byte[] ret = new byte[srcLength];
@@ -79,7 +88,7 @@ public class DanaRS_Packet {
return ret;
} catch (Exception e) {
- log.error("Unhandled exception", e);
+ aapsLogger.error(LTag.PUMPBTCOMM, "Unhandled exception", e);
}
return null;
}
@@ -109,14 +118,14 @@ public class DanaRS_Packet {
public static synchronized long dateTimeSecFromBuff(byte[] buff, int offset) {
return
- new Date(
- 100 + intFromBuff(buff, offset, 1),
- intFromBuff(buff, offset + 1, 1) - 1,
+ new DateTime(
+ 2000 + intFromBuff(buff, offset, 1),
+ intFromBuff(buff, offset + 1, 1),
intFromBuff(buff, offset + 2, 1),
intFromBuff(buff, offset + 3, 1),
intFromBuff(buff, offset + 4, 1),
intFromBuff(buff, offset + 5, 1)
- ).getTime();
+ ).getMillis();
}
protected static int intFromBuff(byte[] b, int srcStart, int srcLength) {
@@ -142,6 +151,29 @@ public class DanaRS_Packet {
return ret;
}
+ protected static int intFromBuffMsbLsb(byte[] b, int srcStart, int srcLength) {
+ int ret;
+
+ switch (srcLength) {
+ case 1:
+ ret = b[DATA_START + srcStart] & 0x000000FF;
+ break;
+ case 2:
+ ret = ((b[DATA_START + srcStart] & 0x000000FF) << 8) + (b[DATA_START + srcStart + 1] & 0x000000FF);
+ break;
+ case 3:
+ ret = ((b[DATA_START + srcStart] & 0x000000FF) << 16) + ((b[DATA_START + srcStart + 1] & 0x000000FF) << 8) + (b[DATA_START + srcStart + 2] & 0x000000FF);
+ break;
+ case 4:
+ ret = ((b[DATA_START + srcStart] & 0x000000FF) << 24) + ((b[DATA_START + srcStart + 1] & 0x000000FF) << 16) + ((b[DATA_START + srcStart + 2] & 0x000000FF) << 8) + (b[DATA_START + srcStart + 3] & 0x000000FF);
+ break;
+ default:
+ ret = -1;
+ break;
+ }
+ return ret;
+ }
+
@TargetApi(Build.VERSION_CODES.KITKAT)
public static String stringFromBuff(byte[] buff, int offset, int length) {
byte[] strbuff = new byte[length];
@@ -149,22 +181,22 @@ public class DanaRS_Packet {
return new String(strbuff, StandardCharsets.UTF_8);
}
- public static long dateFromBuff(byte[] buff, int offset) {
+ public long dateFromBuff(byte[] buff, int offset) {
return
- new Date(
- 100 + byteArrayToInt(getBytes(buff, offset, 1)),
- byteArrayToInt(getBytes(buff, offset + 1, 1)) - 1,
- byteArrayToInt(getBytes(buff, offset + 2, 1))
- ).getTime();
+ new DateTime(
+ 2000 + byteArrayToInt(getBytes(buff, offset, 1)),
+ byteArrayToInt(getBytes(buff, offset + 1, 1)),
+ byteArrayToInt(getBytes(buff, offset + 2, 1)),
+ 0,
+ 0
+ ).getMillis();
}
@TargetApi(Build.VERSION_CODES.KITKAT)
- public static String asciiStringFromBuff(byte[] buff, int offset, int length) {
+ public String asciiStringFromBuff(byte[] buff, int offset, int length) {
byte[] strbuff = new byte[length];
System.arraycopy(buff, offset, strbuff, 0, length);
- for (int pos = 0; pos < length; pos++)
- strbuff[pos] += 65; // "A"
return new String(strbuff, StandardCharsets.UTF_8);
}
@@ -172,7 +204,7 @@ public class DanaRS_Packet {
if (buff == null)
return "";
- StringBuffer sb = new StringBuffer();
+ StringBuilder sb = new StringBuilder();
int count = 0;
for (byte element : buff) {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_APS_Basal_Set_Temporary_Basal.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_APS_Basal_Set_Temporary_Basal.kt
similarity index 84%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_APS_Basal_Set_Temporary_Basal.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_APS_Basal_Set_Temporary_Basal.kt
index d223641bba..ab1649f380 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_APS_Basal_Set_Temporary_Basal.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_APS_Basal_Set_Temporary_Basal.kt
@@ -1,20 +1,20 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.danars.encryption.BleEncryption
class DanaRS_Packet_APS_Basal_Set_Temporary_Basal(
- private val aapsLogger: AAPSLogger,
+ injector: HasAndroidInjector,
private var percent: Int
-) : DanaRS_Packet() {
+) : DanaRS_Packet(injector) {
var temporaryBasalRatio = 0
var temporaryBasalDuration = 0
var error = 0
init {
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_BASAL__APS_SET_TEMPORARY_BASAL
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_BASAL__APS_SET_TEMPORARY_BASAL
aapsLogger.debug(LTag.PUMPCOMM, "New message: percent: $percent")
if (percent < 0) percent = 0
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_APS_History_Events.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_APS_History_Events.kt
new file mode 100644
index 0000000000..6c351210be
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_APS_History_Events.kt
@@ -0,0 +1,227 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.danars.R
+import info.nightscout.androidaps.data.DetailedBolusInfo
+import info.nightscout.androidaps.db.CareportalEvent
+import info.nightscout.androidaps.db.ExtendedBolus
+import info.nightscout.androidaps.db.Source
+import info.nightscout.androidaps.db.TemporaryBasal
+import info.nightscout.androidaps.events.EventPumpStatusChanged
+import info.nightscout.androidaps.interfaces.ActivePluginProvider
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
+import info.nightscout.androidaps.plugins.general.nsclient.NSUpload
+import info.nightscout.androidaps.plugins.pump.common.bolusInfo.DetailedBolusInfoStorage
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+import info.nightscout.androidaps.utils.DateUtil
+import info.nightscout.androidaps.utils.resources.ResourceHelper
+import info.nightscout.androidaps.utils.sharedPreferences.SP
+import org.joda.time.DateTime
+import org.joda.time.DateTimeZone
+import java.util.*
+import javax.inject.Inject
+
+open class DanaRS_Packet_APS_History_Events(
+ injector: HasAndroidInjector,
+ private var from: Long
+) : DanaRS_Packet(injector) {
+
+ @Inject lateinit var rxBus: RxBusWrapper
+ @Inject lateinit var resourceHelper: ResourceHelper
+ @Inject lateinit var activePlugin: ActivePluginProvider
+ @Inject lateinit var danaPump: DanaPump
+ @Inject lateinit var detailedBolusInfoStorage: DetailedBolusInfoStorage
+ @Inject lateinit var sp: SP
+ @Inject lateinit var nsUpload: NSUpload
+
+ init {
+ opCode = BleEncryption.DANAR_PACKET__OPCODE__APS_HISTORY_EVENTS
+ if (from > DateUtil.now()) {
+ aapsLogger.debug(LTag.PUMPCOMM, "Asked to load from the future")
+ from = 0
+ }
+ aapsLogger.debug(LTag.PUMPCOMM, "Loading event history from: " + dateUtil.dateAndTimeString(from))
+ danaPump.historyDoneReceived = false
+ }
+
+ override fun getRequestParams(): ByteArray {
+ val date =
+ if (danaPump.usingUTC) DateTime(from).withZone(DateTimeZone.UTC)
+ else DateTime(from)
+ val request = ByteArray(6)
+ if (from == 0L) {
+ request[0] = 0
+ request[1] = 1
+ request[2] = 1
+ request[3] = 0
+ request[4] = 0
+ request[5] = 0
+ } else {
+ request[0] = (date.year - 2000 and 0xff).toByte()
+ request[1] = (date.monthOfYear and 0xff).toByte()
+ request[2] = (date.dayOfMonth and 0xff).toByte()
+ request[3] = (date.hourOfDay and 0xff).toByte()
+ request[4] = (date.minuteOfHour and 0xff).toByte()
+ request[5] = (date.secondOfMinute and 0xff).toByte()
+ }
+ return request
+ }
+
+ override fun handleMessage(data: ByteArray) {
+ var recordCode = intFromBuff(data, 0, 1).toByte()
+ // Last record
+ if (recordCode == 0xFF.toByte()) {
+ danaPump.historyDoneReceived = true
+ aapsLogger.debug(LTag.PUMPCOMM, "Last record received")
+ return
+ }
+ val datetime: Long
+ val param1 = intFromBuffMsbLsb(data, 7, 2)
+ val param2 = intFromBuffMsbLsb(data, 9, 2)
+ val pumpId: Long
+ var id = 0
+ if (!danaPump.usingUTC) {
+ datetime = dateTimeSecFromBuff(data, 1) // 6 bytes
+ pumpId = datetime
+ } else {
+ datetime = intFromBuffMsbLsb(data, 3, 4) * 1000L
+ recordCode = intFromBuff(data, 2, 1).toByte()
+ id = intFromBuffMsbLsb(data, 0, 2) // range only 1-2000
+ pumpId = datetime shl 16 + id
+ }
+ val temporaryBasal = TemporaryBasal(injector).date(datetime).source(Source.PUMP).pumpId(pumpId)
+ val extendedBolus = ExtendedBolus(injector).date(datetime).source(Source.PUMP).pumpId(pumpId)
+ val status: String
+ when (recordCode.toInt()) {
+ DanaPump.TEMPSTART -> {
+ aapsLogger.debug(LTag.PUMPCOMM, "[" + id + "] " + "EVENT TEMPSTART (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Ratio: " + param1 + "% Duration: " + param2 + "min")
+ temporaryBasal.percentRate = param1
+ temporaryBasal.durationInMinutes = param2
+ activePlugin.activeTreatments.addToHistoryTempBasal(temporaryBasal)
+ status = "TEMPSTART " + dateUtil.timeString(datetime)
+ }
+
+ DanaPump.TEMPSTOP -> {
+ aapsLogger.debug(LTag.PUMPCOMM, "[" + id + "] " + "EVENT TEMPSTOP (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime))
+ activePlugin.activeTreatments.addToHistoryTempBasal(temporaryBasal)
+ status = "TEMPSTOP " + dateUtil.timeString(datetime)
+ }
+
+ DanaPump.EXTENDEDSTART -> {
+ aapsLogger.debug(LTag.PUMPCOMM, "[" + id + "] " + "EVENT EXTENDEDSTART (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Amount: " + param1 / 100.0 + "U Duration: " + param2 + "min")
+ extendedBolus.insulin = param1 / 100.0
+ extendedBolus.durationInMinutes = param2
+ activePlugin.activeTreatments.addToHistoryExtendedBolus(extendedBolus)
+ status = "EXTENDEDSTART " + dateUtil.timeString(datetime)
+ }
+
+ DanaPump.EXTENDEDSTOP -> {
+ aapsLogger.debug(LTag.PUMPCOMM, "[" + id + "] " + "EVENT EXTENDEDSTOP (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Delivered: " + param1 / 100.0 + "U RealDuration: " + param2 + "min")
+ activePlugin.activeTreatments.addToHistoryExtendedBolus(extendedBolus)
+ status = "EXTENDEDSTOP " + dateUtil.timeString(datetime)
+ }
+
+ DanaPump.BOLUS -> {
+ val detailedBolusInfo = detailedBolusInfoStorage.findDetailedBolusInfo(datetime, param1 / 100.0)
+ ?: DetailedBolusInfo()
+ detailedBolusInfo.date = datetime
+ detailedBolusInfo.source = Source.PUMP
+ detailedBolusInfo.pumpId = datetime
+ detailedBolusInfo.insulin = param1 / 100.0
+ val newRecord = activePlugin.activeTreatments.addToHistoryTreatment(detailedBolusInfo, false)
+ aapsLogger.debug(LTag.PUMPCOMM, "[" + id + "] " + (if (newRecord) "**NEW** " else "") + "EVENT BOLUS (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Bolus: " + param1 / 100.0 + "U Duration: " + param2 + "min")
+ status = "BOLUS " + dateUtil.timeString(datetime)
+ }
+
+ DanaPump.DUALBOLUS -> {
+ val detailedBolusInfo = detailedBolusInfoStorage.findDetailedBolusInfo(datetime, param1 / 100.0)
+ ?: DetailedBolusInfo()
+ detailedBolusInfo.date = datetime
+ detailedBolusInfo.source = Source.PUMP
+ detailedBolusInfo.pumpId = datetime
+ detailedBolusInfo.insulin = param1 / 100.0
+ val newRecord = activePlugin.activeTreatments.addToHistoryTreatment(detailedBolusInfo, false)
+ aapsLogger.debug(LTag.PUMPCOMM, "[" + id + "] " + (if (newRecord) "**NEW** " else "") + "EVENT DUALBOLUS (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Bolus: " + param1 / 100.0 + "U Duration: " + param2 + "min")
+ status = "DUALBOLUS " + dateUtil.timeString(datetime)
+ }
+
+ DanaPump.DUALEXTENDEDSTART -> {
+ aapsLogger.debug(LTag.PUMPCOMM, "[" + id + "] " + "EVENT DUALEXTENDEDSTART (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Amount: " + param1 / 100.0 + "U Duration: " + param2 + "min")
+ extendedBolus.insulin = param1 / 100.0
+ extendedBolus.durationInMinutes = param2
+ activePlugin.activeTreatments.addToHistoryExtendedBolus(extendedBolus)
+ status = "DUALEXTENDEDSTART " + dateUtil.timeString(datetime)
+ }
+
+ DanaPump.DUALEXTENDEDSTOP -> {
+ aapsLogger.debug(LTag.PUMPCOMM, "[" + id + "] " + "EVENT DUALEXTENDEDSTOP (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Delivered: " + param1 / 100.0 + "U RealDuration: " + param2 + "min")
+ activePlugin.activeTreatments.addToHistoryExtendedBolus(extendedBolus)
+ status = "DUALEXTENDEDSTOP " + dateUtil.timeString(datetime)
+ }
+
+ DanaPump.SUSPENDON -> {
+ aapsLogger.debug(LTag.PUMPCOMM, "[" + id + "] " + "EVENT SUSPENDON (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")")
+ status = "SUSPENDON " + dateUtil.timeString(datetime)
+ }
+
+ DanaPump.SUSPENDOFF -> {
+ aapsLogger.debug(LTag.PUMPCOMM, "[" + id + "] " + "EVENT SUSPENDOFF (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")")
+ status = "SUSPENDOFF " + dateUtil.timeString(datetime)
+ }
+
+ DanaPump.REFILL -> {
+ aapsLogger.debug(LTag.PUMPCOMM, "[" + id + "] " + "EVENT REFILL (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Amount: " + param1 / 100.0 + "U")
+ if (sp.getBoolean(R.string.key_rs_loginsulinchange, true))
+ nsUpload.generateCareportalEvent(CareportalEvent.INSULINCHANGE, datetime, resourceHelper.gs(R.string.danarspump))
+ status = "REFILL " + dateUtil.timeString(datetime)
+ }
+
+ DanaPump.PRIME -> {
+ aapsLogger.debug(LTag.PUMPCOMM, "[" + id + "] " + "EVENT PRIME (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Amount: " + param1 / 100.0 + "U")
+ if (sp.getBoolean(R.string.key_rs_logcanulachange, true))
+ nsUpload.generateCareportalEvent(CareportalEvent.SITECHANGE, datetime, resourceHelper.gs(R.string.danarspump))
+ status = "PRIME " + dateUtil.timeString(datetime)
+ }
+
+ DanaPump.PROFILECHANGE -> {
+ aapsLogger.debug(LTag.PUMPCOMM, "[" + id + "] " + "EVENT PROFILECHANGE (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " No: " + param1 + " CurrentRate: " + param2 / 100.0 + "U/h")
+ status = "PROFILECHANGE " + dateUtil.timeString(datetime)
+ }
+
+ DanaPump.CARBS -> {
+ val emptyCarbsInfo = DetailedBolusInfo()
+ emptyCarbsInfo.carbs = param1.toDouble()
+ emptyCarbsInfo.date = datetime
+ emptyCarbsInfo.source = Source.PUMP
+ emptyCarbsInfo.pumpId = datetime
+ val newRecord = activePlugin.activeTreatments.addToHistoryTreatment(emptyCarbsInfo, false)
+ aapsLogger.debug(LTag.PUMPCOMM, "[" + id + "] " + (if (newRecord) "**NEW** " else "") + "EVENT CARBS (" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Carbs: " + param1 + "g")
+ status = "CARBS " + dateUtil.timeString(datetime)
+ }
+
+ DanaPump.PRIMECANNULA -> {
+ aapsLogger.debug(LTag.PUMPCOMM, "[" + id + "] " + "EVENT PRIMECANNULA(" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Amount: " + param1 / 100.0 + "U")
+ status = "PRIMECANNULA " + dateUtil.timeString(datetime)
+ }
+
+ DanaPump.TIMECHANGE -> {
+ val oldDateTime = intFromBuffMsbLsb(data, 7, 4) * 1000L
+ aapsLogger.debug(LTag.PUMPCOMM, "[" + id + "] " + "EVENT TIMECHANGE(" + recordCode + ") " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Previous: " + dateUtil.dateAndTimeString(oldDateTime))
+ status = "TIMECHANGE " + dateUtil.timeString(datetime)
+ }
+
+ else -> {
+ aapsLogger.debug(LTag.PUMPCOMM, "[" + id + "] " + "Event: " + recordCode + " " + dateUtil.dateAndTimeString(datetime) + " (" + datetime + ")" + " Param1: " + param1 + " Param2: " + param2)
+ status = "UNKNOWN " + dateUtil.timeString(datetime)
+ }
+ }
+ if (datetime > danaPump.lastEventTimeLoaded) danaPump.lastEventTimeLoaded = datetime
+ rxBus.send(EventPumpStatusChanged(resourceHelper.gs(R.string.processinghistory) + ": " + status))
+ }
+
+ override fun getFriendlyName(): String {
+ return "APS_HISTORY_EVENTS"
+ }
+}
\ No newline at end of file
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_APS_Set_Event_History.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_APS_Set_Event_History.kt
new file mode 100644
index 0000000000..802eb09b56
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_APS_Set_Event_History.kt
@@ -0,0 +1,60 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+import info.nightscout.androidaps.logging.LTag
+import org.joda.time.DateTime
+import org.joda.time.DateTimeZone
+import javax.inject.Inject
+
+class DanaRS_Packet_APS_Set_Event_History(
+ injector: HasAndroidInjector,
+ private var packetType: Int,
+ private var time: Long,
+ private var param1: Int,
+ private var param2: Int
+) : DanaRS_Packet(injector) {
+
+ @Inject lateinit var danaPump: DanaPump
+
+ init {
+ opCode = BleEncryption.DANAR_PACKET__OPCODE__APS_SET_EVENT_HISTORY
+ if ((packetType == DanaPump.CARBS || packetType == DanaPump.BOLUS) && param1 <= 0) this.param1 = 0
+ aapsLogger.debug(LTag.PUMPCOMM, "Set history entry: " + dateUtil.dateAndTimeString(time) + " type: " + packetType + " param1: " + param1 + " param2: " + param2)
+ }
+
+ override fun getRequestParams(): ByteArray {
+ val date =
+ if (danaPump.usingUTC) DateTime(time).withZone(DateTimeZone.UTC)
+ else DateTime(time)
+ val request = ByteArray(11)
+ request[0] = (packetType and 0xff).toByte()
+ request[1] = (date.year - 2000 and 0xff).toByte()
+ request[2] = (date.monthOfYear and 0xff).toByte()
+ request[3] = (date.dayOfMonth and 0xff).toByte()
+ request[4] = (date.hourOfDay and 0xff).toByte()
+ request[5] = (date.minuteOfHour and 0xff).toByte()
+ request[6] = (date.secondOfMinute and 0xff).toByte()
+ request[7] = (param1 ushr 8 and 0xff).toByte()
+ request[8] = (param1 and 0xff).toByte()
+ request[9] = (param2 ushr 8 and 0xff).toByte()
+ request[10] = (param2 and 0xff).toByte()
+ return request
+ }
+
+ override fun handleMessage(data: ByteArray) {
+ val result = intFromBuff(data, 0, 1)
+ if (result != 0) {
+ failed = true
+ aapsLogger.error(LTag.PUMPCOMM, "Set history entry result: $result FAILED!!!")
+ } else {
+ failed = false
+ aapsLogger.debug(LTag.PUMPCOMM, "Set history entry result: $result")
+ }
+ }
+
+ override fun getFriendlyName(): String {
+ return "APS_SET_EVENT_HISTORY"
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Get_Basal_Rate.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Get_Basal_Rate.kt
similarity index 53%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Get_Basal_Rate.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Get_Basal_Rate.kt
index aa0a74e97c..01390d85cd 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Get_Basal_Rate.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Get_Basal_Rate.kt
@@ -1,50 +1,52 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.R
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.danars.R
import info.nightscout.androidaps.logging.LTag
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
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danars.encryption.BleEncryption
import info.nightscout.androidaps.utils.resources.ResourceHelper
import java.util.*
+import javax.inject.Inject
class DanaRS_Packet_Basal_Get_Basal_Rate(
- private val aapsLogger: AAPSLogger,
- private val rxBus: RxBusWrapper,
- private val resourceHelper: ResourceHelper,
- private val danaRPump: DanaRPump
-) : DanaRS_Packet() {
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
+
+ @Inject lateinit var rxBus: RxBusWrapper
+ @Inject lateinit var resourceHelper: ResourceHelper
+ @Inject lateinit var danaPump: DanaPump
init {
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_BASAL__GET_BASAL_RATE
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_BASAL__GET_BASAL_RATE
aapsLogger.debug(LTag.PUMPCOMM, "Requesting basal rates")
}
override fun handleMessage(data: ByteArray) {
var dataIndex = DATA_START
var dataSize = 2
- danaRPump.maxBasal = byteArrayToInt(getBytes(data, DATA_START, dataSize)) / 100.0
+ danaPump.maxBasal = byteArrayToInt(getBytes(data, DATA_START, dataSize)) / 100.0
dataIndex += dataSize
dataSize = 1
- danaRPump.basalStep = byteArrayToInt(getBytes(data, dataIndex, dataSize)) / 100.0
- danaRPump.pumpProfiles = Array(4) {Array(48) {0.0} }
+ danaPump.basalStep = byteArrayToInt(getBytes(data, dataIndex, dataSize)) / 100.0
+ danaPump.pumpProfiles = Array(4) { Array(48) { 0.0 } }
var i = 0
val size = 24
while (i < size) {
dataIndex += dataSize
dataSize = 2
- danaRPump.pumpProfiles!![danaRPump.activeProfile][i] = byteArrayToInt(getBytes(data, dataIndex, dataSize)) / 100.0
+ danaPump.pumpProfiles!![danaPump.activeProfile][i] = byteArrayToInt(getBytes(data, dataIndex, dataSize)) / 100.0
i++
}
- aapsLogger.debug(LTag.PUMPCOMM, "Max basal: " + danaRPump.maxBasal + " U")
- aapsLogger.debug(LTag.PUMPCOMM, "Basal step: " + danaRPump.basalStep + " U")
+ aapsLogger.debug(LTag.PUMPCOMM, "Max basal: " + danaPump.maxBasal + " U")
+ aapsLogger.debug(LTag.PUMPCOMM, "Basal step: " + danaPump.basalStep + " U")
for (index in 0..23)
- aapsLogger.debug(LTag.PUMPCOMM, "Basal " + String.format(Locale.ENGLISH, "%02d", index) + "h: " + danaRPump.pumpProfiles!![danaRPump.activeProfile][index])
- if (danaRPump.basalStep != 0.01) {
+ aapsLogger.debug(LTag.PUMPCOMM, "Basal " + String.format(Locale.ENGLISH, "%02d", index) + "h: " + danaPump.pumpProfiles!![danaPump.activeProfile][index])
+ if (danaPump.basalStep != 0.01) {
failed = true
val notification = Notification(Notification.WRONGBASALSTEP, resourceHelper.gs(R.string.danar_setbasalstep001), Notification.URGENT)
rxBus.send(EventNewNotification(notification))
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Get_Profile_Basal_Rate.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Get_Profile_Basal_Rate.kt
similarity index 56%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Get_Profile_Basal_Rate.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Get_Profile_Basal_Rate.kt
index 54793b555d..721479198c 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Get_Profile_Basal_Rate.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Get_Profile_Basal_Rate.kt
@@ -1,19 +1,21 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danars.encryption.BleEncryption
import java.util.*
+import javax.inject.Inject
open class DanaRS_Packet_Basal_Get_Profile_Basal_Rate(
- private val aapsLogger: AAPSLogger,
- private val danaRPump: DanaRPump,
+ injector: HasAndroidInjector,
private val profileNumber: Int = 0
-) : DanaRS_Packet() {
+) : DanaRS_Packet(injector) {
+
+ @Inject lateinit var danaPump: DanaPump
init {
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_BASAL__GET_PROFILE_BASAL_RATE
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_BASAL__GET_PROFILE_BASAL_RATE
aapsLogger.debug(LTag.PUMPCOMM, "Requesting basal rates for profile $profileNumber")
}
@@ -26,17 +28,17 @@ open class DanaRS_Packet_Basal_Get_Profile_Basal_Rate(
override fun handleMessage(data: ByteArray) {
var dataIndex = DATA_START
var dataSize = 2
- danaRPump.pumpProfiles = Array(4) {Array(48) {0.0} }
+ danaPump.pumpProfiles = Array(4) { Array(48) { 0.0 } }
var i = 0
val size = 24
while (i < size) {
- danaRPump.pumpProfiles!![profileNumber][i] = byteArrayToInt(getBytes(data, dataIndex, dataSize)) / 100.0
+ danaPump.pumpProfiles!![profileNumber][i] = byteArrayToInt(getBytes(data, dataIndex, dataSize)) / 100.0
dataIndex += dataSize
dataSize = 2
i++
}
for (index in 0..23)
- aapsLogger.debug(LTag.PUMPCOMM, "Basal " + String.format(Locale.ENGLISH, "%02d", index) + "h: " + danaRPump.pumpProfiles!![profileNumber][index])
+ aapsLogger.debug(LTag.PUMPCOMM, "Basal " + String.format(Locale.ENGLISH, "%02d", index) + "h: " + danaPump.pumpProfiles!![profileNumber][index])
}
override fun getFriendlyName(): String {
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Get_Profile_Number.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Get_Profile_Number.kt
new file mode 100644
index 0000000000..399555e09d
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Get_Profile_Number.kt
@@ -0,0 +1,29 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+import javax.inject.Inject
+
+class DanaRS_Packet_Basal_Get_Profile_Number(
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
+
+ @Inject lateinit var danaPump: DanaPump
+
+ init {
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_BASAL__GET_PROFILE_NUMBER
+ aapsLogger.debug(LTag.PUMPCOMM, "Requesting active profile")
+ }
+
+ override fun handleMessage(data: ByteArray) {
+ danaPump.activeProfile = byteArrayToInt(getBytes(data, DATA_START, 1))
+ aapsLogger.debug(LTag.PUMPCOMM, "Active profile: " + danaPump.activeProfile)
+ }
+
+ override fun getFriendlyName(): String {
+ return "BASAL__GET_PROFILE_NUMBER"
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Get_Temporary_Basal_State.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Get_Temporary_Basal_State.kt
similarity index 51%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Get_Temporary_Basal_State.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Get_Temporary_Basal_State.kt
index fdc5c16480..1471af5478 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Get_Temporary_Basal_State.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Get_Temporary_Basal_State.kt
@@ -1,41 +1,42 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
-import info.nightscout.androidaps.utils.DateUtil
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+import javax.inject.Inject
import kotlin.math.ceil
class DanaRS_Packet_Basal_Get_Temporary_Basal_State(
- private val aapsLogger: AAPSLogger,
- private val danaRPump: DanaRPump
-) : DanaRS_Packet() {
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
+
+ @Inject lateinit var danaPump: DanaPump
init {
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_BASAL__TEMPORARY_BASAL_STATE
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_BASAL__TEMPORARY_BASAL_STATE
aapsLogger.debug(LTag.PUMPCOMM, "Requesting temporary basal status")
}
override fun handleMessage(data: ByteArray) {
val error = byteArrayToInt(getBytes(data, DATA_START, 1))
- danaRPump.isTempBasalInProgress = byteArrayToInt(getBytes(data, DATA_START + 1, 1)) == 0x01
+ danaPump.isTempBasalInProgress = byteArrayToInt(getBytes(data, DATA_START + 1, 1)) == 0x01
val isAPSTempBasalInProgress = byteArrayToInt(getBytes(data, DATA_START + 1, 1)) == 0x02
- danaRPump.tempBasalPercent = byteArrayToInt(getBytes(data, DATA_START + 2, 1))
- if (danaRPump.tempBasalPercent > 200) danaRPump.tempBasalPercent = (danaRPump.tempBasalPercent - 200) * 10
+ danaPump.tempBasalPercent = byteArrayToInt(getBytes(data, DATA_START + 2, 1))
+ if (danaPump.tempBasalPercent > 200) danaPump.tempBasalPercent = (danaPump.tempBasalPercent - 200) * 10
val durationHour = byteArrayToInt(getBytes(data, DATA_START + 3, 1))
- if (durationHour == 150) danaRPump.tempBasalTotalSec = 15 * 60 else if (durationHour == 160) danaRPump.tempBasalTotalSec = 30 * 60 else danaRPump.tempBasalTotalSec = durationHour * 60 * 60
+ if (durationHour == 150) danaPump.tempBasalTotalSec = 15 * 60 else if (durationHour == 160) danaPump.tempBasalTotalSec = 30 * 60 else danaPump.tempBasalTotalSec = durationHour * 60 * 60
val runningMin = byteArrayToInt(getBytes(data, DATA_START + 4, 2))
if (error != 0) failed = true
- val tempBasalRemainingMin = (danaRPump.tempBasalTotalSec - runningMin * 60) / 60
- val tempBasalStart = if (danaRPump.isTempBasalInProgress) getDateFromTempBasalSecAgo(runningMin * 60) else 0
+ val tempBasalRemainingMin = (danaPump.tempBasalTotalSec - runningMin * 60) / 60
+ val tempBasalStart = if (danaPump.isTempBasalInProgress) getDateFromTempBasalSecAgo(runningMin * 60) else 0
aapsLogger.debug(LTag.PUMPCOMM, "Error code: $error")
- aapsLogger.debug(LTag.PUMPCOMM, "Is temp basal running: " + danaRPump.isTempBasalInProgress)
+ aapsLogger.debug(LTag.PUMPCOMM, "Is temp basal running: " + danaPump.isTempBasalInProgress)
aapsLogger.debug(LTag.PUMPCOMM, "Is APS temp basal running: $isAPSTempBasalInProgress")
- aapsLogger.debug(LTag.PUMPCOMM, "Current temp basal percent: " + danaRPump.tempBasalPercent)
+ aapsLogger.debug(LTag.PUMPCOMM, "Current temp basal percent: " + danaPump.tempBasalPercent)
aapsLogger.debug(LTag.PUMPCOMM, "Current temp basal remaining min: $tempBasalRemainingMin")
- aapsLogger.debug(LTag.PUMPCOMM, "Current temp basal total sec: " + danaRPump.tempBasalTotalSec)
- aapsLogger.debug(LTag.PUMPCOMM, "Current temp basal start: " + DateUtil.dateAndTimeString(tempBasalStart))
+ aapsLogger.debug(LTag.PUMPCOMM, "Current temp basal total sec: " + danaPump.tempBasalTotalSec)
+ aapsLogger.debug(LTag.PUMPCOMM, "Current temp basal start: " + dateUtil.dateAndTimeString(tempBasalStart))
}
override fun getFriendlyName(): String {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Basal_Rate.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Basal_Rate.kt
similarity index 77%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Basal_Rate.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Basal_Rate.kt
index ea5dd4ee29..de96fb2c4d 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Basal_Rate.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Basal_Rate.kt
@@ -1,17 +1,17 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.danars.encryption.BleEncryption
class DanaRS_Packet_Basal_Set_Basal_Rate(
- private val aapsLogger: AAPSLogger,
+ injector: HasAndroidInjector,
private var profileBasalRate: Array
-) : DanaRS_Packet() {
+) : DanaRS_Packet(injector) {
init {
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_BASAL__SET_BASAL_RATE
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_BASAL__SET_BASAL_RATE
aapsLogger.debug(LTag.PUMPCOMM, "Setting new basal rates")
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Cancel_Temporary_Basal.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Cancel_Temporary_Basal.kt
similarity index 66%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Cancel_Temporary_Basal.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Cancel_Temporary_Basal.kt
index 1d67a20a89..e20f2ba80e 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Cancel_Temporary_Basal.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Cancel_Temporary_Basal.kt
@@ -1,15 +1,15 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.danars.encryption.BleEncryption
class DanaRS_Packet_Basal_Set_Cancel_Temporary_Basal(
- private val aapsLogger: AAPSLogger
-) : DanaRS_Packet() {
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
init {
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_BASAL__CANCEL_TEMPORARY_BASAL
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_BASAL__CANCEL_TEMPORARY_BASAL
aapsLogger.debug(LTag.PUMPCOMM, "Canceling temp basal")
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Profile_Basal_Rate.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Profile_Basal_Rate.kt
similarity index 79%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Profile_Basal_Rate.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Profile_Basal_Rate.kt
index a65746f8e8..6d397ca86f 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Profile_Basal_Rate.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Profile_Basal_Rate.kt
@@ -1,17 +1,17 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.danars.encryption.BleEncryption
class DanaRS_Packet_Basal_Set_Profile_Basal_Rate(
- private val aapsLogger: AAPSLogger,
+ injector: HasAndroidInjector,
private var profileNumber: Int,
private var profileBasalRate: Array
-) : DanaRS_Packet() {
+) : DanaRS_Packet(injector) {
init {
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_BASAL__SET_PROFILE_BASAL_RATE
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_BASAL__SET_PROFILE_BASAL_RATE
aapsLogger.debug(LTag.PUMPCOMM, "Setting new basal rates for profile $profileNumber")
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Profile_Number.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Profile_Number.kt
similarity index 73%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Profile_Number.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Profile_Number.kt
index b61c046682..2f88623296 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Profile_Number.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Profile_Number.kt
@@ -1,16 +1,16 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.danars.encryption.BleEncryption
class DanaRS_Packet_Basal_Set_Profile_Number(
- private val aapsLogger: AAPSLogger,
+ injector: HasAndroidInjector,
private var profileNumber: Int = 0
-) : DanaRS_Packet() {
+) : DanaRS_Packet(injector) {
init {
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_BASAL__SET_PROFILE_NUMBER
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_BASAL__SET_PROFILE_NUMBER
aapsLogger.debug(LTag.PUMPCOMM, "Setting profile number $profileNumber")
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Suspend_Off.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Suspend_Off.kt
similarity index 66%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Suspend_Off.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Suspend_Off.kt
index 85e2f70456..cdd3b83f2c 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Suspend_Off.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Suspend_Off.kt
@@ -1,15 +1,15 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.danars.encryption.BleEncryption
class DanaRS_Packet_Basal_Set_Suspend_Off(
- private val aapsLogger: AAPSLogger
- ) : DanaRS_Packet() {
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
init {
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_BASAL__SET_SUSPEND_OFF
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_BASAL__SET_SUSPEND_OFF
aapsLogger.debug(LTag.PUMPCOMM, "Turning off suspend")
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Suspend_On.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Suspend_On.kt
similarity index 66%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Suspend_On.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Suspend_On.kt
index c603549d91..6d0cb88052 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Suspend_On.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Suspend_On.kt
@@ -1,15 +1,15 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.danars.encryption.BleEncryption
class DanaRS_Packet_Basal_Set_Suspend_On(
- private val aapsLogger: AAPSLogger
-) : DanaRS_Packet() {
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
init {
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_BASAL__SET_SUSPEND_ON
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_BASAL__SET_SUSPEND_ON
aapsLogger.debug(LTag.PUMPCOMM, "Turning on suspend")
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Temporary_Basal.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Temporary_Basal.kt
similarity index 76%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Temporary_Basal.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Temporary_Basal.kt
index cde564fbc0..3e5725694f 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Basal_Set_Temporary_Basal.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Basal_Set_Temporary_Basal.kt
@@ -1,17 +1,17 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.danars.encryption.BleEncryption
open class DanaRS_Packet_Basal_Set_Temporary_Basal(
- private val aapsLogger: AAPSLogger,
+ injector: HasAndroidInjector,
private var temporaryBasalRatio: Int = 0,
private var temporaryBasalDuration: Int = 0
-) : DanaRS_Packet() {
+) : DanaRS_Packet(injector) {
init {
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_BASAL__SET_TEMPORARY_BASAL
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_BASAL__SET_TEMPORARY_BASAL
aapsLogger.debug(LTag.PUMPCOMM, "Setting temporary basal of $temporaryBasalRatio% for $temporaryBasalDuration hours")
}
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_24_CIR_CF_Array.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_24_CIR_CF_Array.kt
new file mode 100644
index 0000000000..5f8be76b2e
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_24_CIR_CF_Array.kt
@@ -0,0 +1,39 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+import javax.inject.Inject
+
+class DanaRS_Packet_Bolus_Get_24_CIR_CF_Array(
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
+
+ @Inject lateinit var danaPump: DanaPump
+
+ init {
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_BOLUS__GET_24_CIR_CF_ARRAY
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun handleMessage(data: ByteArray) {
+ danaPump.units = byteArrayToInt(getBytes(data, DATA_START, 1))
+ for (i in 0 .. 23) {
+ val cf = byteArrayToInt(getBytes(data, DATA_START + 1 + 2 * i, 2)).toDouble()
+ val cir = if (danaPump.units == DanaPump.UNITS_MGDL)
+ byteArrayToInt(getBytes(data, DATA_START + 1 + 48 + 2 * i, 2)).toDouble()
+ else
+ byteArrayToInt(getBytes(data, DATA_START + 1 + 48 + 2 * i, 2)) / 100.0
+ danaPump.cir24[i] = cir
+ danaPump.cf24[i] = cf
+ aapsLogger.debug(LTag.PUMPCOMM, "$i: CIR: $cir CF: $cf")
+ }
+ if (danaPump.units < 0 || danaPump.units > 1) failed = true
+ aapsLogger.debug(LTag.PUMPCOMM, "Pump units: " + if (danaPump.units == DanaPump.UNITS_MGDL) "MGDL" else "MMOL")
+ }
+
+ override fun getFriendlyName(): String {
+ return "BOLUS__GET_24_ CIR_CF_ARRAY"
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Bolus_Option.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Bolus_Option.kt
similarity index 83%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Bolus_Option.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Bolus_Option.kt
index 36512ccec1..433f782730 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Bolus_Option.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Bolus_Option.kt
@@ -1,39 +1,40 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.R
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.danars.R
import info.nightscout.androidaps.logging.LTag
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
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danars.encryption.BleEncryption
import info.nightscout.androidaps.utils.resources.ResourceHelper
+import javax.inject.Inject
class DanaRS_Packet_Bolus_Get_Bolus_Option(
- private val aapsLogger: AAPSLogger,
- private val rxBus: RxBusWrapper,
- private val resourceHelper: ResourceHelper,
- private val danaRPump: DanaRPump
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
-) : DanaRS_Packet() {
+ @Inject lateinit var rxBus: RxBusWrapper
+ @Inject lateinit var resourceHelper: ResourceHelper
+ @Inject lateinit var danaPump: DanaPump
init {
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_BOLUS__GET_BOLUS_OPTION
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_BOLUS__GET_BOLUS_OPTION
aapsLogger.debug(LTag.PUMPCOMM, "New message")
}
override fun handleMessage(data: ByteArray) {
var dataIndex = DATA_START
var dataSize = 1
- danaRPump.isExtendedBolusEnabled = byteArrayToInt(getBytes(data, dataIndex, dataSize)) == 1
+ danaPump.isExtendedBolusEnabled = byteArrayToInt(getBytes(data, dataIndex, dataSize)) == 1
dataIndex += dataSize
dataSize = 1
- danaRPump.bolusCalculationOption = byteArrayToInt(getBytes(data, dataIndex, dataSize))
+ danaPump.bolusCalculationOption = byteArrayToInt(getBytes(data, dataIndex, dataSize))
dataIndex += dataSize
dataSize = 1
- danaRPump.missedBolusConfig = byteArrayToInt(getBytes(data, dataIndex, dataSize))
+ danaPump.missedBolusConfig = byteArrayToInt(getBytes(data, dataIndex, dataSize))
dataIndex += dataSize
dataSize = 1
val missedBolus01StartHour = byteArrayToInt(getBytes(data, dataIndex, dataSize))
@@ -82,15 +83,15 @@ class DanaRS_Packet_Bolus_Get_Bolus_Option(
dataIndex += dataSize
dataSize = 1
val missedBolus04EndMin = byteArrayToInt(getBytes(data, dataIndex, dataSize))
- if (!danaRPump.isExtendedBolusEnabled) {
+ if (!danaPump.isExtendedBolusEnabled) {
val notification = Notification(Notification.EXTENDED_BOLUS_DISABLED, resourceHelper.gs(R.string.danar_enableextendedbolus), Notification.URGENT)
rxBus.send(EventNewNotification(notification))
failed = true
} else {
rxBus.send(EventDismissNotification(Notification.EXTENDED_BOLUS_DISABLED))
}
- aapsLogger.debug(LTag.PUMPCOMM, "Extended bolus enabled: " + danaRPump.isExtendedBolusEnabled)
- aapsLogger.debug(LTag.PUMPCOMM, "Missed bolus config: " + danaRPump.missedBolusConfig)
+ aapsLogger.debug(LTag.PUMPCOMM, "Extended bolus enabled: " + danaPump.isExtendedBolusEnabled)
+ aapsLogger.debug(LTag.PUMPCOMM, "Missed bolus config: " + danaPump.missedBolusConfig)
aapsLogger.debug(LTag.PUMPCOMM, "missedBolus01StartHour: $missedBolus01StartHour")
aapsLogger.debug(LTag.PUMPCOMM, "missedBolus01StartMin: $missedBolus01StartMin")
aapsLogger.debug(LTag.PUMPCOMM, "missedBolus01EndHour: $missedBolus01EndHour")
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_CIR_CF_Array.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_CIR_CF_Array.kt
similarity index 63%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_CIR_CF_Array.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_CIR_CF_Array.kt
index b157ad9978..d476115d63 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_CIR_CF_Array.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_CIR_CF_Array.kt
@@ -1,17 +1,19 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+import javax.inject.Inject
class DanaRS_Packet_Bolus_Get_CIR_CF_Array(
- private val aapsLogger: AAPSLogger,
- private val danaRPump: DanaRPump
-) : DanaRS_Packet() {
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
+
+ @Inject lateinit var danaPump: DanaPump
init {
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_BOLUS__GET_CIR_CF_ARRAY
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_BOLUS__GET_CIR_CF_ARRAY
aapsLogger.debug(LTag.PUMPCOMM, "New message")
}
@@ -21,87 +23,87 @@ class DanaRS_Packet_Bolus_Get_CIR_CF_Array(
val language = byteArrayToInt(getBytes(data, dataIndex, dataSize))
dataIndex += dataSize
dataSize = 1
- danaRPump.units = byteArrayToInt(getBytes(data, dataIndex, dataSize))
+ danaPump.units = byteArrayToInt(getBytes(data, dataIndex, dataSize))
dataIndex += dataSize
dataSize = 2
- danaRPump.morningCIR = byteArrayToInt(getBytes(data, dataIndex, dataSize))
+ danaPump.morningCIR = byteArrayToInt(getBytes(data, dataIndex, dataSize))
dataIndex += dataSize
dataSize = 2
val cir02 = byteArrayToInt(getBytes(data, dataIndex, dataSize))
dataIndex += dataSize
dataSize = 2
- danaRPump.afternoonCIR = byteArrayToInt(getBytes(data, dataIndex, dataSize))
+ danaPump.afternoonCIR = byteArrayToInt(getBytes(data, dataIndex, dataSize))
dataIndex += dataSize
dataSize = 2
val cir04 = byteArrayToInt(getBytes(data, dataIndex, dataSize))
dataIndex += dataSize
dataSize = 2
- danaRPump.eveningCIR = byteArrayToInt(getBytes(data, dataIndex, dataSize))
+ danaPump.eveningCIR = byteArrayToInt(getBytes(data, dataIndex, dataSize))
dataIndex += dataSize
dataSize = 2
val cir06 = byteArrayToInt(getBytes(data, dataIndex, dataSize))
dataIndex += dataSize
dataSize = 2
- danaRPump.nightCIR = byteArrayToInt(getBytes(data, dataIndex, dataSize))
+ danaPump.nightCIR = byteArrayToInt(getBytes(data, dataIndex, dataSize))
val cf02: Double
val cf04: Double
val cf06: Double
- if (danaRPump.units == DanaRPump.UNITS_MGDL) {
+ if (danaPump.units == DanaPump.UNITS_MGDL) {
dataIndex += dataSize
dataSize = 2
- danaRPump.morningCF = byteArrayToInt(getBytes(data, dataIndex, dataSize)).toDouble()
+ danaPump.morningCF = byteArrayToInt(getBytes(data, dataIndex, dataSize)).toDouble()
dataIndex += dataSize
dataSize = 2
cf02 = byteArrayToInt(getBytes(data, dataIndex, dataSize)).toDouble()
dataIndex += dataSize
dataSize = 2
- danaRPump.afternoonCF = byteArrayToInt(getBytes(data, dataIndex, dataSize)).toDouble()
+ danaPump.afternoonCF = byteArrayToInt(getBytes(data, dataIndex, dataSize)).toDouble()
dataIndex += dataSize
dataSize = 2
cf04 = byteArrayToInt(getBytes(data, dataIndex, dataSize)).toDouble()
dataIndex += dataSize
dataSize = 2
- danaRPump.eveningCF = byteArrayToInt(getBytes(data, dataIndex, dataSize)).toDouble()
+ danaPump.eveningCF = byteArrayToInt(getBytes(data, dataIndex, dataSize)).toDouble()
dataIndex += dataSize
dataSize = 2
cf06 = byteArrayToInt(getBytes(data, dataIndex, dataSize)).toDouble()
dataIndex += dataSize
dataSize = 2
- danaRPump.nightCF = byteArrayToInt(getBytes(data, dataIndex, dataSize)).toDouble()
+ danaPump.nightCF = byteArrayToInt(getBytes(data, dataIndex, dataSize)).toDouble()
} else {
dataIndex += dataSize
dataSize = 2
- danaRPump.morningCF = byteArrayToInt(getBytes(data, dataIndex, dataSize)) / 100.0
+ danaPump.morningCF = byteArrayToInt(getBytes(data, dataIndex, dataSize)) / 100.0
dataIndex += dataSize
dataSize = 2
cf02 = byteArrayToInt(getBytes(data, dataIndex, dataSize)) / 100.0
dataIndex += dataSize
dataSize = 2
- danaRPump.afternoonCF = byteArrayToInt(getBytes(data, dataIndex, dataSize)) / 100.0
+ danaPump.afternoonCF = byteArrayToInt(getBytes(data, dataIndex, dataSize)) / 100.0
dataIndex += dataSize
dataSize = 2
cf04 = byteArrayToInt(getBytes(data, dataIndex, dataSize)) / 100.0
dataIndex += dataSize
dataSize = 2
- danaRPump.eveningCF = byteArrayToInt(getBytes(data, dataIndex, dataSize)) / 100.0
+ danaPump.eveningCF = byteArrayToInt(getBytes(data, dataIndex, dataSize)) / 100.0
dataIndex += dataSize
dataSize = 2
cf06 = byteArrayToInt(getBytes(data, dataIndex, dataSize)) / 100.0
dataIndex += dataSize
dataSize = 2
- danaRPump.nightCF = byteArrayToInt(getBytes(data, dataIndex, dataSize)) / 100.0
+ danaPump.nightCF = byteArrayToInt(getBytes(data, dataIndex, dataSize)) / 100.0
}
- if (danaRPump.units < 0 || danaRPump.units > 1) failed = true
+ if (danaPump.units < 0 || danaPump.units > 1) failed = true
aapsLogger.debug(LTag.PUMPCOMM, "Language: $language")
- aapsLogger.debug(LTag.PUMPCOMM, "Pump units: " + if (danaRPump.units == DanaRPump.UNITS_MGDL) "MGDL" else "MMOL")
- aapsLogger.debug(LTag.PUMPCOMM, "Current pump morning CIR: " + danaRPump.morningCIR)
- aapsLogger.debug(LTag.PUMPCOMM, "Current pump morning CF: " + danaRPump.morningCF)
- aapsLogger.debug(LTag.PUMPCOMM, "Current pump afternoon CIR: " + danaRPump.afternoonCIR)
- aapsLogger.debug(LTag.PUMPCOMM, "Current pump afternoon CF: " + danaRPump.afternoonCF)
- aapsLogger.debug(LTag.PUMPCOMM, "Current pump evening CIR: " + danaRPump.eveningCIR)
- aapsLogger.debug(LTag.PUMPCOMM, "Current pump evening CF: " + danaRPump.eveningCF)
- aapsLogger.debug(LTag.PUMPCOMM, "Current pump night CIR: " + danaRPump.nightCIR)
- aapsLogger.debug(LTag.PUMPCOMM, "Current pump night CF: " + danaRPump.nightCF)
+ aapsLogger.debug(LTag.PUMPCOMM, "Pump units: " + if (danaPump.units == DanaPump.UNITS_MGDL) "MGDL" else "MMOL")
+ aapsLogger.debug(LTag.PUMPCOMM, "Current pump morning CIR: " + danaPump.morningCIR)
+ aapsLogger.debug(LTag.PUMPCOMM, "Current pump morning CF: " + danaPump.morningCF)
+ aapsLogger.debug(LTag.PUMPCOMM, "Current pump afternoon CIR: " + danaPump.afternoonCIR)
+ aapsLogger.debug(LTag.PUMPCOMM, "Current pump afternoon CF: " + danaPump.afternoonCF)
+ aapsLogger.debug(LTag.PUMPCOMM, "Current pump evening CIR: " + danaPump.eveningCIR)
+ aapsLogger.debug(LTag.PUMPCOMM, "Current pump evening CF: " + danaPump.eveningCF)
+ aapsLogger.debug(LTag.PUMPCOMM, "Current pump night CIR: " + danaPump.nightCIR)
+ aapsLogger.debug(LTag.PUMPCOMM, "Current pump night CF: " + danaPump.nightCF)
aapsLogger.debug(LTag.PUMPCOMM, "cir02: $cir02")
aapsLogger.debug(LTag.PUMPCOMM, "cir04: $cir04")
aapsLogger.debug(LTag.PUMPCOMM, "cir06: $cir06")
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Calculation_Information.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Calculation_Information.kt
similarity index 51%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Calculation_Information.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Calculation_Information.kt
index 7dacd08599..fff895b239 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Calculation_Information.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Calculation_Information.kt
@@ -1,18 +1,19 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+import javax.inject.Inject
class DanaRS_Packet_Bolus_Get_Calculation_Information(
- private val aapsLogger: AAPSLogger,
- private val danaRPump: DanaRPump
-) : DanaRS_Packet() {
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
+ @Inject lateinit var danaPump: DanaPump
init {
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_BOLUS__GET_CALCULATION_INFORMATION
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_BOLUS__GET_CALCULATION_INFORMATION
aapsLogger.debug(LTag.PUMPCOMM, "New message")
}
@@ -28,33 +29,33 @@ class DanaRS_Packet_Bolus_Get_Calculation_Information(
val carbohydrate = byteArrayToInt(getBytes(data, dataIndex, dataSize))
dataIndex += dataSize
dataSize = 2
- danaRPump.currentTarget = byteArrayToInt(getBytes(data, dataIndex, dataSize)).toDouble()
+ danaPump.currentTarget = byteArrayToInt(getBytes(data, dataIndex, dataSize)).toDouble()
dataIndex += dataSize
dataSize = 2
- danaRPump.currentCIR = byteArrayToInt(getBytes(data, dataIndex, dataSize))
+ danaPump.currentCIR = byteArrayToInt(getBytes(data, dataIndex, dataSize))
dataIndex += dataSize
dataSize = 2
- danaRPump.currentCF = byteArrayToInt(getBytes(data, dataIndex, dataSize)).toDouble()
+ danaPump.currentCF = byteArrayToInt(getBytes(data, dataIndex, dataSize)).toDouble()
dataIndex += dataSize
dataSize = 2
- danaRPump.iob = byteArrayToInt(getBytes(data, dataIndex, dataSize)) / 100.0
+ danaPump.iob = byteArrayToInt(getBytes(data, dataIndex, dataSize)) / 100.0
dataIndex += dataSize
dataSize = 1
- danaRPump.units = byteArrayToInt(getBytes(data, dataIndex, dataSize))
- if (danaRPump.units == DanaRPump.UNITS_MMOL) {
- danaRPump.currentCF = danaRPump.currentCF / 100.0
- danaRPump.currentTarget = danaRPump.currentTarget / 100.0
+ danaPump.units = byteArrayToInt(getBytes(data, dataIndex, dataSize))
+ if (danaPump.units == DanaPump.UNITS_MMOL) {
+ danaPump.currentCF = danaPump.currentCF / 100.0
+ danaPump.currentTarget = danaPump.currentTarget / 100.0
currentBG = currentBG / 100.0
}
if (error != 0) failed = true
aapsLogger.debug(LTag.PUMPCOMM, "Result: $error")
- aapsLogger.debug(LTag.PUMPCOMM, "Pump units: " + if (danaRPump.units == DanaRPump.UNITS_MGDL) "MGDL" else "MMOL")
+ aapsLogger.debug(LTag.PUMPCOMM, "Pump units: " + if (danaPump.units == DanaPump.UNITS_MGDL) "MGDL" else "MMOL")
aapsLogger.debug(LTag.PUMPCOMM, "Current BG: $currentBG")
aapsLogger.debug(LTag.PUMPCOMM, "Carbs: $carbohydrate")
- aapsLogger.debug(LTag.PUMPCOMM, "Current target: " + danaRPump.currentTarget)
- aapsLogger.debug(LTag.PUMPCOMM, "Current CIR: " + danaRPump.currentCIR)
- aapsLogger.debug(LTag.PUMPCOMM, "Current CF: " + danaRPump.currentCF)
- aapsLogger.debug(LTag.PUMPCOMM, "Pump IOB: " + danaRPump.iob)
+ aapsLogger.debug(LTag.PUMPCOMM, "Current target: " + danaPump.currentTarget)
+ aapsLogger.debug(LTag.PUMPCOMM, "Current CIR: " + danaPump.currentCIR)
+ aapsLogger.debug(LTag.PUMPCOMM, "Current CF: " + danaPump.currentCF)
+ aapsLogger.debug(LTag.PUMPCOMM, "Pump IOB: " + danaPump.iob)
}
override fun getFriendlyName(): String {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Carbohydrate_Calculation_Information.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Carbohydrate_Calculation_Information.kt
similarity index 57%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Carbohydrate_Calculation_Information.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Carbohydrate_Calculation_Information.kt
index ba69221673..e51a25967d 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Carbohydrate_Calculation_Information.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Carbohydrate_Calculation_Information.kt
@@ -1,17 +1,19 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+import javax.inject.Inject
class DanaRS_Packet_Bolus_Get_Carbohydrate_Calculation_Information(
- private val aapsLogger: AAPSLogger,
- private val danaRPump: DanaRPump
-) : DanaRS_Packet() {
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
+
+ @Inject lateinit var danaPump: DanaPump
init {
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_BOLUS__GET_CARBOHYDRATE_CALCULATION_INFORMATION
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_BOLUS__GET_CARBOHYDRATE_CALCULATION_INFORMATION
aapsLogger.debug(LTag.PUMPCOMM, "New message")
}
@@ -24,11 +26,11 @@ class DanaRS_Packet_Bolus_Get_Carbohydrate_Calculation_Information(
val carbs = byteArrayToInt(getBytes(data, dataIndex, dataSize))
dataIndex += dataSize
dataSize = 2
- danaRPump.currentCIR = byteArrayToInt(getBytes(data, dataIndex, dataSize))
+ danaPump.currentCIR = byteArrayToInt(getBytes(data, dataIndex, dataSize))
if (error != 0) failed = true
aapsLogger.debug(LTag.PUMPCOMM, "Result: $error")
aapsLogger.debug(LTag.PUMPCOMM, "Carbs: $carbs")
- aapsLogger.debug(LTag.PUMPCOMM, "Current CIR: " + danaRPump.currentCIR)
+ aapsLogger.debug(LTag.PUMPCOMM, "Current CIR: " + danaPump.currentCIR)
}
override fun getFriendlyName(): String {
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Dual_Bolus.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Dual_Bolus.kt
new file mode 100644
index 0000000000..babe627091
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Dual_Bolus.kt
@@ -0,0 +1,37 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+import javax.inject.Inject
+
+class DanaRS_Packet_Bolus_Get_Dual_Bolus(
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
+
+ @Inject lateinit var danaPump: DanaPump
+
+ init {
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_BOLUS__GET_DUAL_BOLUS
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun handleMessage(data: ByteArray) {
+ val error = byteArrayToInt(getBytes(data, DATA_START, 1))
+ danaPump.bolusStep = byteArrayToInt(getBytes(data, DATA_START + 1, 2)) / 100.0
+ danaPump.extendedBolusAbsoluteRate = byteArrayToInt(getBytes(data, DATA_START + 3, 2)) / 100.0
+ danaPump.maxBolus = byteArrayToInt(getBytes(data, DATA_START + 5, 2)) / 100.0
+ val bolusIncrement = byteArrayToInt(getBytes(data, DATA_START + 7, 1)) / 100.0
+ failed = error != 0
+ aapsLogger.debug(LTag.PUMPCOMM, "Result: $error")
+ aapsLogger.debug(LTag.PUMPCOMM, "Bolus step: ${danaPump.bolusStep} U")
+ aapsLogger.debug(LTag.PUMPCOMM, "Extended bolus running: ${danaPump.extendedBolusAbsoluteRate} U/h")
+ aapsLogger.debug(LTag.PUMPCOMM, "Max bolus: " + danaPump.maxBolus + " U")
+ aapsLogger.debug(LTag.PUMPCOMM, "bolusIncrement: $bolusIncrement U")
+ }
+
+ override fun getFriendlyName(): String {
+ return "BOLUS__GET_DUAL_BOLUS"
+ }
+}
\ No newline at end of file
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Extended_Bolus.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Extended_Bolus.kt
new file mode 100644
index 0000000000..8aae55b413
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Extended_Bolus.kt
@@ -0,0 +1,43 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+import javax.inject.Inject
+
+class DanaRS_Packet_Bolus_Get_Extended_Bolus(
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
+
+ @Inject lateinit var danaPump: DanaPump
+
+ init {
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_BOLUS__GET_EXTENDED_BOLUS
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun handleMessage(data: ByteArray) {
+ var dataIndex = DATA_START
+ var dataSize = 1
+ val error = byteArrayToInt(getBytes(data, dataIndex, dataSize))
+ dataIndex += dataSize
+ dataSize = 2
+ danaPump.extendedBolusAbsoluteRate = byteArrayToInt(getBytes(data, dataIndex, dataSize)) / 100.0
+ dataIndex += dataSize
+ dataSize = 2
+ danaPump.maxBolus = byteArrayToInt(getBytes(data, dataIndex, dataSize)) / 100.0
+ dataIndex += dataSize
+ dataSize = 1
+ danaPump.bolusStep = byteArrayToInt(getBytes(data, dataIndex, dataSize)) / 100.0
+ failed = error != 0
+ aapsLogger.debug(LTag.PUMPCOMM, "Result: $error")
+ aapsLogger.debug(LTag.PUMPCOMM, "Extended bolus running: " + danaPump.extendedBolusAbsoluteRate + " U/h")
+ aapsLogger.debug(LTag.PUMPCOMM, "Max bolus: " + danaPump.maxBolus + " U")
+ aapsLogger.debug(LTag.PUMPCOMM, "Bolus step: " + danaPump.bolusStep + " U")
+ }
+
+ override fun getFriendlyName(): String {
+ return "BOLUS__GET_EXTENDED_BOLUS"
+ }
+}
\ No newline at end of file
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Extended_Bolus_State.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Extended_Bolus_State.kt
new file mode 100644
index 0000000000..7c859ed743
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Extended_Bolus_State.kt
@@ -0,0 +1,51 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+import javax.inject.Inject
+
+class DanaRS_Packet_Bolus_Get_Extended_Bolus_State(
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
+
+ @Inject lateinit var danaPump: DanaPump
+
+ init {
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_BOLUS__GET_EXTENDED_BOLUS_STATE
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun handleMessage(data: ByteArray) {
+ var dataIndex = DATA_START
+ var dataSize = 1
+ val error = byteArrayToInt(getBytes(data, dataIndex, dataSize))
+ dataIndex += dataSize
+ dataSize = 1
+ danaPump.isExtendedInProgress = byteArrayToInt(getBytes(data, dataIndex, dataSize)) == 0x01
+ dataIndex += dataSize
+ dataSize = 1
+ danaPump.extendedBolusMinutes = byteArrayToInt(getBytes(data, dataIndex, dataSize)) * 30
+ dataIndex += dataSize
+ dataSize = 2
+ danaPump.extendedBolusAbsoluteRate = byteArrayToInt(getBytes(data, dataIndex, dataSize)) / 100.0
+ dataIndex += dataSize
+ dataSize = 2
+ danaPump.extendedBolusSoFarInMinutes = byteArrayToInt(getBytes(data, dataIndex, dataSize))
+ dataIndex += dataSize
+ dataSize = 2
+ danaPump.extendedBolusDeliveredSoFar = byteArrayToInt(getBytes(data, dataIndex, dataSize)) / 100.0
+ failed = error != 0
+ aapsLogger.debug(LTag.PUMPCOMM, "Result: $error")
+ aapsLogger.debug(LTag.PUMPCOMM, "Is extended bolus running: " + danaPump.isExtendedInProgress)
+ aapsLogger.debug(LTag.PUMPCOMM, "Extended bolus running: " + danaPump.extendedBolusAbsoluteRate + " U/h")
+ aapsLogger.debug(LTag.PUMPCOMM, "Extended bolus duration: " + danaPump.extendedBolusMinutes + " min")
+ aapsLogger.debug(LTag.PUMPCOMM, "Extended bolus so far: " + danaPump.extendedBolusSoFarInMinutes + " min")
+ aapsLogger.debug(LTag.PUMPCOMM, "Extended bolus delivered so far: " + danaPump.extendedBolusDeliveredSoFar + " U")
+ }
+
+ override fun getFriendlyName(): String {
+ return "BOLUS__GET_EXTENDED_BOLUS_STATE"
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Extended_Menu_Option_State.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Extended_Menu_Option_State.kt
similarity index 54%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Extended_Menu_Option_State.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Extended_Menu_Option_State.kt
index 44bcaea4c6..3757188d4a 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Extended_Menu_Option_State.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Extended_Menu_Option_State.kt
@@ -1,17 +1,19 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+import javax.inject.Inject
class DanaRS_Packet_Bolus_Get_Extended_Menu_Option_State(
- private val aapsLogger: AAPSLogger,
- private val danaRPump: DanaRPump
-) : DanaRS_Packet() {
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
+
+ @Inject lateinit var danaPump: DanaPump
init {
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_BOLUS__GET_EXTENDED_MENU_OPTION_STATE
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_BOLUS__GET_EXTENDED_MENU_OPTION_STATE
aapsLogger.debug(LTag.PUMPCOMM, "New message")
}
@@ -21,7 +23,7 @@ class DanaRS_Packet_Bolus_Get_Extended_Menu_Option_State(
val extendedMenuOption = byteArrayToInt(getBytes(data, dataIndex, dataSize))
dataIndex += dataSize
dataSize = 1
- danaRPump.isExtendedInProgress = byteArrayToInt(getBytes(data, dataIndex, dataSize)) == 0x01
+ danaPump.isExtendedInProgress = byteArrayToInt(getBytes(data, dataIndex, dataSize)) == 0x01
aapsLogger.debug(LTag.PUMPCOMM, "extendedMenuOption: $extendedMenuOption")
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Initial_Bolus.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Initial_Bolus.kt
similarity index 84%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Initial_Bolus.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Initial_Bolus.kt
index 5b3fe17f1f..3c58bc5175 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Get_Initial_Bolus.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Initial_Bolus.kt
@@ -1,15 +1,15 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.danars.encryption.BleEncryption
class DanaRS_Packet_Bolus_Get_Initial_Bolus(
- private val aapsLogger: AAPSLogger
-) : DanaRS_Packet() {
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
init {
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_BOLUS__GET_BOLUS_RATE
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_BOLUS__GET_BOLUS_RATE
aapsLogger.debug(LTag.PUMPCOMM, "New message")
}
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Step_Bolus_Information.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Step_Bolus_Information.kt
new file mode 100644
index 0000000000..7cc2d3aa65
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Get_Step_Bolus_Information.kt
@@ -0,0 +1,46 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+import info.nightscout.androidaps.logging.LTag
+import org.joda.time.DateTime
+import org.joda.time.DateTimeZone
+import javax.inject.Inject
+
+class DanaRS_Packet_Bolus_Get_Step_Bolus_Information(
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
+
+ @Inject lateinit var danaPump: DanaPump
+
+ init {
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_BOLUS__GET_STEP_BOLUS_INFORMATION
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun handleMessage(data: ByteArray) {
+ val error = intFromBuff(data, 0, 1)
+ val bolusType = intFromBuff(data, 1, 1)
+ danaPump.initialBolusAmount = intFromBuff(data, 2, 2) / 100.0
+ val hours = intFromBuff(data, 4, 1)
+ val minutes = intFromBuff(data, 5, 1)
+ if (danaPump.usingUTC) danaPump.lastBolusTime = DateTime.now().withZone(DateTimeZone.UTC).withHourOfDay(hours).withMinuteOfHour(minutes).millis
+ else danaPump.lastBolusTime = DateTime.now().withHourOfDay(hours).withMinuteOfHour(minutes).millis
+ danaPump.lastBolusAmount = intFromBuff(data, 6, 2) / 100.0
+ danaPump.maxBolus = intFromBuff(data, 8, 2) / 100.0
+ danaPump.bolusStep = intFromBuff(data, 10, 1) / 100.0
+ failed = error != 0
+ aapsLogger.debug(LTag.PUMPCOMM, "Result: $error")
+ aapsLogger.debug(LTag.PUMPCOMM, "BolusType: $bolusType")
+ aapsLogger.debug(LTag.PUMPCOMM, "Initial bolus amount: " + danaPump.initialBolusAmount + " U")
+ aapsLogger.debug(LTag.PUMPCOMM, "Last bolus time: " + dateUtil.dateAndTimeString(danaPump.lastBolusTime))
+ aapsLogger.debug(LTag.PUMPCOMM, "Last bolus amount: " + danaPump.lastBolusAmount)
+ aapsLogger.debug(LTag.PUMPCOMM, "Max bolus: " + danaPump.maxBolus + " U")
+ aapsLogger.debug(LTag.PUMPCOMM, "Bolus step: " + danaPump.bolusStep + " U")
+ }
+
+ override fun getFriendlyName(): String {
+ return "BOLUS__GET_STEP_BOLUS_INFORMATION"
+ }
+}
\ No newline at end of file
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_24_CIR_CF_Array.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_24_CIR_CF_Array.kt
new file mode 100644
index 0000000000..7a0e925ab6
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_24_CIR_CF_Array.kt
@@ -0,0 +1,52 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+import info.nightscout.androidaps.data.Profile
+import info.nightscout.androidaps.logging.LTag
+import javax.inject.Inject
+
+class DanaRS_Packet_Bolus_Set_24_CIR_CF_Array(
+ injector: HasAndroidInjector,
+ private val profile: Profile?
+) : DanaRS_Packet(injector) {
+
+ @Inject lateinit var danaPump: DanaPump
+
+ init {
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_BOLUS__SET_24_CIR_CF_ARRAY
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun getRequestParams(): ByteArray {
+ val request = ByteArray(96)
+ profile ?: return request // profile is null only in hash table
+ val cfStart = 24 * 2
+ for (i in 0..23) {
+ var isf = profile.getIsfMgdlTimeFromMidnight(i * 3600)
+ if (danaPump.units == DanaPump.UNITS_MMOL) isf *= 10
+ val ic = profile.getIcTimeFromMidnight(i * 3600) * 100
+ request[2 * i] = (isf.toInt() and 0xff).toByte()
+ request[2 * i] = (isf.toInt() ushr 8 and 0xff).toByte()
+ request[cfStart + 2 * i] = (ic.toInt() and 0xff).toByte()
+ request[cfStart + 2 * i] = (ic.toInt() ushr 8 and 0xff).toByte()
+ }
+ return request
+ }
+
+ override fun handleMessage(data: ByteArray) {
+ val result = intFromBuff(data, 0, 1)
+ if (result == 0) {
+ aapsLogger.debug(LTag.PUMPCOMM, "Result OK")
+ failed = false
+ } else {
+ aapsLogger.error("Result Error: $result")
+ failed = true
+ }
+ }
+
+ override fun getFriendlyName(): String {
+ return "BOLUS__SET_24_CIR_CF_ARRAY"
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Bolus_Option.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Bolus_Option.kt
similarity index 90%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Bolus_Option.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Bolus_Option.kt
index 34f3967351..ac40d4ef56 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Bolus_Option.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Bolus_Option.kt
@@ -1,11 +1,11 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.danars.encryption.BleEncryption
class DanaRS_Packet_Bolus_Set_Bolus_Option(
- private val aapsLogger: AAPSLogger,
+ injector: HasAndroidInjector,
private var extendedBolusOptionOnOff: Int = 0,
private var bolusCalculationOption: Int = 0,
private var missedBolusConfig: Int = 0,
@@ -26,10 +26,10 @@ class DanaRS_Packet_Bolus_Set_Bolus_Option(
private var missedBolus04EndHour: Int = 0,
private var missedBolus04EndMin: Int = 0
-) : DanaRS_Packet() {
+) : DanaRS_Packet(injector) {
init {
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_BOLUS__SET_BOLUS_OPTION
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_BOLUS__SET_BOLUS_OPTION
aapsLogger.debug(LTag.PUMPCOMM, "Setting bolus options")
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_CIR_CF_Array.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_CIR_CF_Array.kt
similarity index 89%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_CIR_CF_Array.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_CIR_CF_Array.kt
index e31a770db7..783b874f4a 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_CIR_CF_Array.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_CIR_CF_Array.kt
@@ -1,11 +1,11 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.danars.encryption.BleEncryption
class DanaRS_Packet_Bolus_Set_CIR_CF_Array(
- private val aapsLogger: AAPSLogger,
+ injector: HasAndroidInjector,
private var cir01: Int = 0,
private var cir02: Int = 0,
private var cir03: Int = 0,
@@ -20,10 +20,10 @@ class DanaRS_Packet_Bolus_Set_CIR_CF_Array(
private var cf05: Int = 0,
private var cf06: Int = 0,
private var cf07: Int = 0
-) : DanaRS_Packet() {
+) : DanaRS_Packet(injector) {
init {
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_BOLUS__SET_CIR_CF_ARRAY
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_BOLUS__SET_CIR_CF_ARRAY
aapsLogger.debug(LTag.PUMPCOMM, "New message")
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Dual_Bolus.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Dual_Bolus.kt
similarity index 82%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Dual_Bolus.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Dual_Bolus.kt
index d0fef47f82..0f93dbf349 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Dual_Bolus.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Dual_Bolus.kt
@@ -1,19 +1,18 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.danars.encryption.BleEncryption
class DanaRS_Packet_Bolus_Set_Dual_Bolus(
- private val aapsLogger: AAPSLogger,
+ injector: HasAndroidInjector,
private var amount: Double = 0.0,
private var extendedAmount: Double = 0.0,
private var extendedBolusDurationInHalfHours: Int = 0
-) : DanaRS_Packet() {
-
+) : DanaRS_Packet(injector) {
init {
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_BOLUS__SET_DUAL_BOLUS
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_BOLUS__SET_DUAL_BOLUS
aapsLogger.debug(LTag.PUMPCOMM, "Dual bolus start : $amount U extended: $extendedAmount U halfhours: $extendedBolusDurationInHalfHours")
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Extended_Bolus.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Extended_Bolus.kt
similarity index 79%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Extended_Bolus.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Extended_Bolus.kt
index 620a4722ab..749b72206c 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Extended_Bolus.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Extended_Bolus.kt
@@ -1,18 +1,17 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.danars.encryption.BleEncryption
class DanaRS_Packet_Bolus_Set_Extended_Bolus(
- private val aapsLogger: AAPSLogger,
+ injector: HasAndroidInjector,
private var extendedAmount: Double = 0.0,
private var extendedBolusDurationInHalfHours: Int = 0
-) : DanaRS_Packet() {
-
+) : DanaRS_Packet(injector) {
init {
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_BOLUS__SET_EXTENDED_BOLUS
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_BOLUS__SET_EXTENDED_BOLUS
aapsLogger.debug(LTag.PUMPCOMM, "Extended bolus start : $extendedAmount U halfhours: $extendedBolusDurationInHalfHours")
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Extended_Bolus_Cancel.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Extended_Bolus_Cancel.kt
similarity index 66%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Extended_Bolus_Cancel.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Extended_Bolus_Cancel.kt
index 8596219ba4..7bc1cea154 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Extended_Bolus_Cancel.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Extended_Bolus_Cancel.kt
@@ -1,15 +1,15 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.danars.encryption.BleEncryption
class DanaRS_Packet_Bolus_Set_Extended_Bolus_Cancel(
- private val aapsLogger: AAPSLogger
-) : DanaRS_Packet() {
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
init {
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_BOLUS__SET_EXTENDED_BOLUS_CANCEL
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_BOLUS__SET_EXTENDED_BOLUS_CANCEL
aapsLogger.debug(LTag.PUMPCOMM, "Cancel extended bolus")
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Initial_Bolus.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Initial_Bolus.kt
similarity index 81%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Initial_Bolus.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Initial_Bolus.kt
index fb1154c43f..6b8278ac29 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Initial_Bolus.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Initial_Bolus.kt
@@ -1,19 +1,19 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.danars.encryption.BleEncryption
class DanaRS_Packet_Bolus_Set_Initial_Bolus(
- private val aapsLogger: AAPSLogger,
+ injector: HasAndroidInjector,
private var bolusRate01: Int = 0,
private var bolusRate02: Int = 0,
private var bolusRate03: Int = 0,
private var bolusRate04: Int = 0
-) : DanaRS_Packet() {
+) : DanaRS_Packet(injector) {
init {
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_BOLUS__SET_BOLUS_RATE
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_BOLUS__SET_BOLUS_RATE
aapsLogger.debug(LTag.PUMPCOMM, "New message")
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Step_Bolus_Start.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Step_Bolus_Start.kt
similarity index 64%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Step_Bolus_Start.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Step_Bolus_Start.kt
index ce9aaf9e1b..319e294895 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Step_Bolus_Start.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Step_Bolus_Start.kt
@@ -1,23 +1,24 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.interfaces.Constraint
-import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
-import info.nightscout.androidaps.plugins.pump.danaRS.DanaRSPlugin
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+import javax.inject.Inject
class DanaRS_Packet_Bolus_Set_Step_Bolus_Start(
- private val aapsLogger: AAPSLogger,
- private val danaRSPlugin: DanaRSPlugin,
- constraintChecker: ConstraintChecker,
+ injector: HasAndroidInjector,
private var amount: Double = 0.0,
private var speed: Int = 0
-) : DanaRS_Packet() {
+) : DanaRS_Packet(injector) {
+ @Inject lateinit var danaPump: DanaPump
+ @Inject lateinit var constraintChecker: ConstraintChecker
init {
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_BOLUS__SET_STEP_BOLUS_START
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_BOLUS__SET_STEP_BOLUS_START
// Speed 0 => 12 sec/U, 1 => 30 sec/U, 2 => 60 sec/U
// HARDCODED LIMIT - if there is one that could be created
amount = constraintChecker.applyBolusConstraints(Constraint(amount)).value()
@@ -34,12 +35,12 @@ class DanaRS_Packet_Bolus_Set_Step_Bolus_Start(
}
override fun handleMessage(data: ByteArray) {
- danaRSPlugin.bolusStartErrorCode = intFromBuff(data, 0, 1)
- if (danaRSPlugin.bolusStartErrorCode == 0) {
+ danaPump.bolusStartErrorCode = intFromBuff(data, 0, 1)
+ if (danaPump.bolusStartErrorCode == 0) {
failed = false
aapsLogger.debug(LTag.PUMPCOMM, "Result OK")
} else {
- aapsLogger.error("Result Error: ${danaRSPlugin.bolusStartErrorCode}")
+ aapsLogger.error("Result Error: ${danaPump.bolusStartErrorCode}")
failed = true
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Step_Bolus_Stop.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Step_Bolus_Stop.kt
similarity index 61%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Step_Bolus_Stop.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Step_Bolus_Stop.kt
index f84becafc5..a8f1bc0084 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Bolus_Set_Step_Bolus_Stop.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Bolus_Set_Step_Bolus_Stop.kt
@@ -1,24 +1,25 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.R
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.danars.R
import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.overview.events.EventOverviewBolusProgress
-import info.nightscout.androidaps.plugins.pump.danaRS.DanaRSPlugin
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danars.encryption.BleEncryption
import info.nightscout.androidaps.utils.resources.ResourceHelper
+import javax.inject.Inject
open class DanaRS_Packet_Bolus_Set_Step_Bolus_Stop(
- private val aapsLogger: AAPSLogger,
- private val rxBus: RxBusWrapper,
- private val resourceHelper: ResourceHelper,
- private val danaRSPlugin: DanaRSPlugin
-) : DanaRS_Packet() {
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
+ @Inject lateinit var rxBus: RxBusWrapper
+ @Inject lateinit var resourceHelper: ResourceHelper
+ @Inject lateinit var danaPump: DanaPump
init {
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_BOLUS__SET_STEP_BOLUS_STOP
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_BOLUS__SET_STEP_BOLUS_STOP
}
override fun handleMessage(data: ByteArray) {
@@ -31,10 +32,10 @@ open class DanaRS_Packet_Bolus_Set_Step_Bolus_Stop(
failed = true
}
val bolusingEvent = EventOverviewBolusProgress
- danaRSPlugin.bolusStopped = true
- if (!danaRSPlugin.bolusStopForced) {
+ danaPump.bolusStopped = true
+ if (!danaPump.bolusStopForced) {
// delivery ended without user intervention
- danaRSPlugin.bolusingTreatment.insulin = danaRSPlugin.bolusAmountToBeDelivered
+ danaPump.bolusingTreatment?.insulin = danaPump.bolusAmountToBeDelivered
bolusingEvent.status = resourceHelper.gs(R.string.overview_bolusprogress_delivered)
bolusingEvent.percent = 100
} else {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Etc_Keep_Connection.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Etc_Keep_Connection.kt
similarity index 66%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Etc_Keep_Connection.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Etc_Keep_Connection.kt
index dd29887ef0..0a5f5f10b4 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Etc_Keep_Connection.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Etc_Keep_Connection.kt
@@ -1,15 +1,15 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.danars.encryption.BleEncryption
class DanaRS_Packet_Etc_Keep_Connection(
- private val aapsLogger: AAPSLogger
-) : DanaRS_Packet() {
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
init {
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_ETC__KEEP_CONNECTION
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_ETC__KEEP_CONNECTION
aapsLogger.debug(LTag.PUMPCOMM, "New message")
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Etc_Set_History_Save.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Etc_Set_History_Save.kt
similarity index 84%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Etc_Set_History_Save.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Etc_Set_History_Save.kt
index 99fe5da588..aa812ca588 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Etc_Set_History_Save.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Etc_Set_History_Save.kt
@@ -1,11 +1,11 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.danars.encryption.BleEncryption
class DanaRS_Packet_Etc_Set_History_Save(
- private val aapsLogger: AAPSLogger,
+ injector: HasAndroidInjector,
private var historyType: Int = 0,
private var historyYear: Int = 0,
private var historyMonth: Int = 0,
@@ -15,11 +15,10 @@ class DanaRS_Packet_Etc_Set_History_Save(
private var historySecond: Int = 0,
private var historyCode: Int = 0,
private var historyValue: Int = 0
-) : DanaRS_Packet() {
-
+) : DanaRS_Packet(injector) {
init {
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_ETC__SET_HISTORY_SAVE
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_ETC__SET_HISTORY_SAVE
aapsLogger.debug(LTag.PUMPCOMM, "New message")
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Delivery_Status.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Delivery_Status.kt
similarity index 66%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Delivery_Status.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Delivery_Status.kt
index 524b8e13c8..9ff3884a57 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Delivery_Status.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Delivery_Status.kt
@@ -1,15 +1,15 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.danars.encryption.BleEncryption
class DanaRS_Packet_General_Delivery_Status(
- private val aapsLogger: AAPSLogger
-) : DanaRS_Packet() {
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
init {
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_REVIEW__DELIVERY_STATUS
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_REVIEW__DELIVERY_STATUS
aapsLogger.debug(LTag.PUMPCOMM, "New message")
}
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_More_Information.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_More_Information.kt
new file mode 100644
index 0000000000..0d110deb71
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_More_Information.kt
@@ -0,0 +1,49 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+import org.joda.time.DateTime
+import org.joda.time.DateTimeZone
+import javax.inject.Inject
+
+class DanaRS_Packet_General_Get_More_Information(
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
+
+ @Inject lateinit var danaPump: DanaPump
+
+ init {
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_REVIEW__GET_MORE_INFORMATION
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun handleMessage(data: ByteArray) {
+ if (data.size < 15) {
+ failed = true
+ return
+ }
+ danaPump.iob = intFromBuff(data, 0, 2) / 100.0
+ danaPump.dailyTotalUnits = intFromBuff(data, 2, 2) / 100.0
+ danaPump.isExtendedInProgress = intFromBuff(data, 4, 1) == 0x01
+ danaPump.extendedBolusRemainingMinutes = intFromBuff(data, 5, 2)
+ // val remainRate = intFromBuff(data, 7, 2) / 100.0
+ val hours = intFromBuff(data, 9, 1)
+ val minutes = intFromBuff(data, 10, 1)
+ if (danaPump.usingUTC) danaPump.lastBolusTime = DateTime.now().withZone(DateTimeZone.UTC).withHourOfDay(hours).withMinuteOfHour(minutes).millis
+ else danaPump.lastBolusTime = DateTime.now().withHourOfDay(hours).withMinuteOfHour(minutes).millis
+ danaPump.lastBolusAmount = intFromBuff(data, 11, 2) / 100.0
+ // On DanaRS DailyUnits can't be more than 160
+ if (danaPump.dailyTotalUnits > 160) failed = true
+ aapsLogger.debug(LTag.PUMPCOMM, "Daily total units: " + danaPump.dailyTotalUnits.toString() + " U")
+ aapsLogger.debug(LTag.PUMPCOMM, "Is extended in progress: " + danaPump.isExtendedInProgress)
+ aapsLogger.debug(LTag.PUMPCOMM, "Extended bolus remaining minutes: " + danaPump.extendedBolusRemainingMinutes)
+ aapsLogger.debug(LTag.PUMPCOMM, "Last bolus time: " + dateUtil.dateAndTimeAndSecondsString(danaPump.lastBolusTime))
+ aapsLogger.debug(LTag.PUMPCOMM, "Last bolus amount: " + danaPump.lastBolusAmount)
+ }
+
+ override fun getFriendlyName(): String {
+ return "REVIEW__GET_MORE_INFORMATION"
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Get_Password.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_Password.kt
similarity index 58%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Get_Password.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_Password.kt
index 5a1358c38b..34d9ce1238 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Get_Password.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_Password.kt
@@ -1,17 +1,19 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+import javax.inject.Inject
class DanaRS_Packet_General_Get_Password(
- private val aapsLogger: AAPSLogger,
- private val danaRPump: DanaRPump
-) : DanaRS_Packet() {
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
+
+ @Inject lateinit var danaPump: DanaPump
init {
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_REVIEW__GET_PASSWORD
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_REVIEW__GET_PASSWORD
aapsLogger.debug(LTag.PUMPCOMM, "New message")
}
@@ -24,8 +26,8 @@ class DanaRS_Packet_General_Get_Password(
}
var pass: Int = (data[DATA_START + 1].toInt() and 0x000000FF shl 8) + (data[DATA_START + 0].toInt() and 0x000000FF)
pass = pass xor 3463
- danaRPump.rsPassword = Integer.toHexString(pass)
- aapsLogger.debug(LTag.PUMPCOMM, "Pump password: " + danaRPump.rsPassword)
+ danaPump.rsPassword = Integer.toHexString(pass)
+ aapsLogger.debug(LTag.PUMPCOMM, "Pump password: " + danaPump.rsPassword)
}
override fun getFriendlyName(): String {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Get_Pump_Check.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_Pump_Check.kt
similarity index 57%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Get_Pump_Check.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_Pump_Check.kt
index 7c6f2fab5c..6c55bcee19 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Get_Pump_Check.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_Pump_Check.kt
@@ -1,24 +1,26 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.R
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.danars.R
import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danars.encryption.BleEncryption
import info.nightscout.androidaps.utils.resources.ResourceHelper
+import javax.inject.Inject
class DanaRS_Packet_General_Get_Pump_Check(
- private val aapsLogger: AAPSLogger,
- private val danaRPump: DanaRPump,
- private val rxBus: RxBusWrapper,
- private val resourceHelper: ResourceHelper
-) : DanaRS_Packet() {
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
+
+ @Inject lateinit var rxBus: RxBusWrapper
+ @Inject lateinit var resourceHelper: ResourceHelper
+ @Inject lateinit var danaPump: DanaPump
init {
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_REVIEW__GET_PUMP_CHECK
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_REVIEW__GET_PUMP_CHECK
aapsLogger.debug(LTag.PUMPCOMM, "New message")
}
@@ -30,17 +32,17 @@ class DanaRS_Packet_General_Get_Pump_Check(
failed = false
var dataIndex = DATA_START
var dataSize = 1
- danaRPump.model = byteArrayToInt(getBytes(data, dataIndex, dataSize))
+ danaPump.hwModel = byteArrayToInt(getBytes(data, dataIndex, dataSize))
dataIndex += dataSize
dataSize = 1
- danaRPump.protocol = byteArrayToInt(getBytes(data, dataIndex, dataSize))
+ danaPump.protocol = byteArrayToInt(getBytes(data, dataIndex, dataSize))
dataIndex += dataSize
dataSize = 1
- danaRPump.productCode = byteArrayToInt(getBytes(data, dataIndex, dataSize))
- aapsLogger.debug(LTag.PUMPCOMM, "Model: " + String.format("%02X ", danaRPump.model))
- aapsLogger.debug(LTag.PUMPCOMM, "Protocol: " + String.format("%02X ", danaRPump.protocol))
- aapsLogger.debug(LTag.PUMPCOMM, "Product Code: " + String.format("%02X ", danaRPump.productCode))
- if (danaRPump.productCode < 2) {
+ danaPump.productCode = byteArrayToInt(getBytes(data, dataIndex, dataSize))
+ aapsLogger.debug(LTag.PUMPCOMM, "Model: " + String.format("%02X ", danaPump.hwModel))
+ aapsLogger.debug(LTag.PUMPCOMM, "Protocol: " + String.format("%02X ", danaPump.protocol))
+ aapsLogger.debug(LTag.PUMPCOMM, "Product Code: " + String.format("%02X ", danaPump.productCode))
+ if (danaPump.productCode < 2) {
rxBus.send(EventNewNotification(Notification(Notification.UNSUPPORTED_FIRMWARE, resourceHelper.gs(R.string.unsupportedfirmware), Notification.URGENT)))
}
}
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_Shipping_Information.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_Shipping_Information.kt
new file mode 100644
index 0000000000..edcb565f6c
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_Shipping_Information.kt
@@ -0,0 +1,36 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+import javax.inject.Inject
+
+class DanaRS_Packet_General_Get_Shipping_Information(
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
+
+ @Inject lateinit var danaPump: DanaPump
+
+ init {
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_REVIEW__GET_SHIPPING_INFORMATION
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun handleMessage(data: ByteArray) {
+ if (data.size < 18) {
+ failed = true
+ return
+ } else failed = false
+ danaPump.serialNumber = stringFromBuff(data, DATA_START, 10)
+ danaPump.shippingCountry = asciiStringFromBuff(data, DATA_START + 10, 3)
+ danaPump.shippingDate = dateFromBuff(data, DATA_START + 13)
+ aapsLogger.debug(LTag.PUMPCOMM, "Serial number: " + danaPump.serialNumber)
+ aapsLogger.debug(LTag.PUMPCOMM, "Shipping date: " + dateUtil.dateAndTimeString(danaPump.shippingDate))
+ aapsLogger.debug(LTag.PUMPCOMM, "Shipping country: " + danaPump.shippingCountry)
+ }
+
+ override fun getFriendlyName(): String {
+ return "REVIEW__GET_SHIPPING_INFORMATION"
+ }
+}
\ No newline at end of file
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_Shipping_Version.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_Shipping_Version.kt
new file mode 100644
index 0000000000..4a83192d39
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_Shipping_Version.kt
@@ -0,0 +1,30 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+import java.nio.charset.Charset
+import javax.inject.Inject
+
+class DanaRS_Packet_General_Get_Shipping_Version(
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
+
+ @Inject lateinit var danaPump: DanaPump
+
+ init {
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_GENERAL__GET_SHIPPING_VERSION
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun handleMessage(data: ByteArray) {
+ danaPump.bleModel = data.copyOfRange(DATA_START, data.size).toString(Charset.forName("US-ASCII"))
+ failed = false
+ aapsLogger.debug(LTag.PUMPCOMM, "BLE Model: " + danaPump.bleModel)
+ }
+
+ override fun getFriendlyName(): String {
+ return "GENERAL__GET_SHIPPING_VERSION"
+ }
+}
\ No newline at end of file
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_Today_Delivery_Total.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_Today_Delivery_Total.kt
new file mode 100644
index 0000000000..4eece3e5fe
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_Today_Delivery_Total.kt
@@ -0,0 +1,42 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+import javax.inject.Inject
+
+class DanaRS_Packet_General_Get_Today_Delivery_Total(
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
+
+ @Inject lateinit var danaPump: DanaPump
+
+ init {
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_REVIEW__GET_TODAY_DELIVERY_TOTAL
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun handleMessage(data: ByteArray) {
+ if (data.size < 8) {
+ failed = true
+ return
+ } else failed = false
+ var dataIndex = DATA_START
+ var dataSize = 2
+ danaPump.dailyTotalUnits = byteArrayToInt(getBytes(data, dataIndex, dataSize)) / 100.0
+ dataIndex += dataSize
+ dataSize = 2
+ danaPump.dailyTotalBasalUnits = byteArrayToInt(getBytes(data, dataIndex, dataSize)) / 100.0
+ dataIndex += dataSize
+ dataSize = 2
+ danaPump.dailyTotalBolusUnits = byteArrayToInt(getBytes(data, dataIndex, dataSize)) / 100.0
+ aapsLogger.debug(LTag.PUMPCOMM, "Daily total: " + danaPump.dailyTotalUnits + " U")
+ aapsLogger.debug(LTag.PUMPCOMM, "Daily total bolus: " + danaPump.dailyTotalBolusUnits + " U")
+ aapsLogger.debug(LTag.PUMPCOMM, "Daily total basal: " + danaPump.dailyTotalBasalUnits + " U")
+ }
+
+ override fun getFriendlyName(): String {
+ return "REVIEW__GET_TODAY_DELIVERY_TOTAL"
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Get_User_Time_Change_Flag.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_User_Time_Change_Flag.kt
similarity index 68%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Get_User_Time_Change_Flag.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_User_Time_Change_Flag.kt
index 99c0cc2879..eaaecf7f03 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Get_User_Time_Change_Flag.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Get_User_Time_Change_Flag.kt
@@ -1,15 +1,15 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.danars.encryption.BleEncryption
class DanaRS_Packet_General_Get_User_Time_Change_Flag(
- private val aapsLogger: AAPSLogger
-) : DanaRS_Packet() {
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
init {
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_REVIEW__GET_USER_TIME_CHANGE_FLAG
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_REVIEW__GET_USER_TIME_CHANGE_FLAG
aapsLogger.debug(LTag.PUMPCOMM, "New message")
}
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Initial_Screen_Information.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Initial_Screen_Information.kt
new file mode 100644
index 0000000000..e077e30fe9
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Initial_Screen_Information.kt
@@ -0,0 +1,80 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+import javax.inject.Inject
+
+class DanaRS_Packet_General_Initial_Screen_Information(
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
+
+ @Inject lateinit var danaPump: DanaPump
+
+ init {
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_REVIEW__INITIAL_SCREEN_INFORMATION
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun handleMessage(data: ByteArray) {
+ if (data.size < 17) {
+ failed = true
+ return
+ } else failed = false
+ var dataIndex = DATA_START
+ var dataSize = 1
+ val status = byteArrayToInt(getBytes(data, dataIndex, dataSize))
+ danaPump.pumpSuspended = status and 0x01 == 0x01
+ danaPump.isTempBasalInProgress = status and 0x10 == 0x10
+ danaPump.isExtendedInProgress = status and 0x04 == 0x04
+ danaPump.isDualBolusInProgress = status and 0x08 == 0x08
+ dataIndex += dataSize
+ dataSize = 2
+ danaPump.dailyTotalUnits = byteArrayToInt(getBytes(data, dataIndex, dataSize)) / 100.0
+ dataIndex += dataSize
+ dataSize = 2
+ danaPump.maxDailyTotalUnits = (byteArrayToInt(getBytes(data, dataIndex, dataSize)) / 100.0).toInt()
+ dataIndex += dataSize
+ dataSize = 2
+ danaPump.reservoirRemainingUnits = byteArrayToInt(getBytes(data, dataIndex, dataSize)) / 100.0
+ dataIndex += dataSize
+ dataSize = 2
+ danaPump.currentBasal = byteArrayToInt(getBytes(data, dataIndex, dataSize)) / 100.0
+ dataIndex += dataSize
+ dataSize = 1
+ danaPump.tempBasalPercent = byteArrayToInt(getBytes(data, dataIndex, dataSize))
+ dataIndex += dataSize
+ dataSize = 1
+ danaPump.batteryRemaining = byteArrayToInt(getBytes(data, dataIndex, dataSize))
+ dataIndex += dataSize
+ dataSize = 2
+ danaPump.extendedBolusAbsoluteRate = byteArrayToInt(getBytes(data, dataIndex, dataSize)) / 100.0
+ dataIndex += dataSize
+ dataSize = 2
+ danaPump.iob = byteArrayToInt(getBytes(data, dataIndex, dataSize)) / 100.0
+ if (data.size >= 18) {
+ //protocol 10+
+ dataIndex += dataSize
+ dataSize = 1
+ danaPump.errorState = info.nightscout.androidaps.dana.DanaPump.ErrorState[byteArrayToInt(getBytes(data, dataIndex, dataSize))]
+ ?: info.nightscout.androidaps.dana.DanaPump.ErrorState.NONE
+ aapsLogger.debug(LTag.PUMPCOMM, "ErrorState: " + danaPump.errorState.name)
+ }
+ aapsLogger.debug(LTag.PUMPCOMM, "Pump suspended: " + danaPump.pumpSuspended)
+ aapsLogger.debug(LTag.PUMPCOMM, "Temp basal in progress: " + danaPump.isTempBasalInProgress)
+ aapsLogger.debug(LTag.PUMPCOMM, "Extended in progress: " + danaPump.isExtendedInProgress)
+ aapsLogger.debug(LTag.PUMPCOMM, "Dual in progress: " + danaPump.isDualBolusInProgress)
+ aapsLogger.debug(LTag.PUMPCOMM, "Daily units: " + danaPump.dailyTotalUnits)
+ aapsLogger.debug(LTag.PUMPCOMM, "Max daily units: " + danaPump.maxDailyTotalUnits)
+ aapsLogger.debug(LTag.PUMPCOMM, "Reservoir remaining units: " + danaPump.reservoirRemainingUnits)
+ aapsLogger.debug(LTag.PUMPCOMM, "Battery: " + danaPump.batteryRemaining)
+ aapsLogger.debug(LTag.PUMPCOMM, "Current basal: " + danaPump.currentBasal)
+ aapsLogger.debug(LTag.PUMPCOMM, "Temp basal percent: " + danaPump.tempBasalPercent)
+ aapsLogger.debug(LTag.PUMPCOMM, "Extended absolute rate: " + danaPump.extendedBolusAbsoluteRate)
+ }
+
+ override fun getFriendlyName(): String {
+ return "REVIEW__INITIAL_SCREEN_INFORMATION"
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Set_History_Upload_Mode.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Set_History_Upload_Mode.kt
similarity index 72%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Set_History_Upload_Mode.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Set_History_Upload_Mode.kt
index b6b884f27d..c695632177 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Set_History_Upload_Mode.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Set_History_Upload_Mode.kt
@@ -1,16 +1,16 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.danars.encryption.BleEncryption
class DanaRS_Packet_General_Set_History_Upload_Mode(
- private val aapsLogger: AAPSLogger,
+ injector: HasAndroidInjector,
private var mode: Int = 0
-) : DanaRS_Packet() {
+) : DanaRS_Packet(injector) {
init {
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_REVIEW__SET_HISTORY_UPLOAD_MODE
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_REVIEW__SET_HISTORY_UPLOAD_MODE
aapsLogger.debug(LTag.PUMPCOMM, "New message: mode: $mode")
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Set_User_Time_Change_Flag_Clear.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Set_User_Time_Change_Flag_Clear.kt
similarity index 66%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Set_User_Time_Change_Flag_Clear.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Set_User_Time_Change_Flag_Clear.kt
index f5be92ecd2..45a5d01962 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_General_Set_User_Time_Change_Flag_Clear.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_General_Set_User_Time_Change_Flag_Clear.kt
@@ -1,15 +1,15 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.danars.encryption.BleEncryption
class DanaRS_Packet_General_Set_User_Time_Change_Flag_Clear(
- private val aapsLogger: AAPSLogger
-) : DanaRS_Packet() {
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
init {
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_REVIEW__SET_USER_TIME_CHANGE_FLAG_CLEAR
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_REVIEW__SET_USER_TIME_CHANGE_FLAG_CLEAR
aapsLogger.debug(LTag.PUMPCOMM, "New message")
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_.kt
similarity index 61%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_.kt
index e8da961028..538d9b0bf7 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_History_.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_.kt
@@ -1,20 +1,23 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import info.nightscout.androidaps.MainApp
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.dana.comm.RecordTypes
import info.nightscout.androidaps.db.DanaRHistoryRecord
-import info.nightscout.androidaps.logging.AAPSLogger
+import info.nightscout.androidaps.events.EventDanaRSyncStatus
+import info.nightscout.androidaps.interfaces.DatabaseHelperInterface
import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
-import info.nightscout.androidaps.plugins.pump.danaR.comm.RecordTypes
-import info.nightscout.androidaps.plugins.pump.danaR.events.EventDanaRSyncStatus
-import info.nightscout.androidaps.utils.DateUtil
+import org.joda.time.DateTime
import java.util.*
+import javax.inject.Inject
abstract class DanaRS_Packet_History_(
- protected val aapsLogger: AAPSLogger,
- protected val rxBus: RxBusWrapper,
+ injector: HasAndroidInjector,
protected val from: Long
-) : DanaRS_Packet() {
+) : DanaRS_Packet(injector) {
+
+ @Inject lateinit var rxBus: RxBusWrapper
+ @Inject lateinit var databaseHelper: DatabaseHelperInterface
protected var year = 0
protected var month = 0
@@ -25,6 +28,7 @@ abstract class DanaRS_Packet_History_(
var done = false
var totalCount = 0
+ val danaRHistoryRecord = DanaRHistoryRecord()
init {
val cal = GregorianCalendar()
@@ -36,7 +40,7 @@ abstract class DanaRS_Packet_History_(
hour = cal[Calendar.HOUR_OF_DAY]
min = cal[Calendar.MINUTE]
sec = cal[Calendar.SECOND]
- aapsLogger.debug(LTag.PUMPCOMM, "Loading event history from: " + DateUtil.dateAndTimeString(cal.timeInMillis))
+ aapsLogger.debug(LTag.PUMPCOMM, "Loading event history from: " + dateUtil.dateAndTimeString(cal.timeInMillis))
}
override fun getRequestParams(): ByteArray {
@@ -79,22 +83,18 @@ abstract class DanaRS_Packet_History_(
val historySecond = byteArrayToInt(getBytes(data, DATA_START + 6, 1))
val paramByte7 = historySecond.toByte()
val dailyBolus: Double = ((data[DATA_START + 6].toInt() and 0xFF shl 8) + (data[DATA_START + 7].toInt() and 0xFF)) * 0.01
- val date = Date(100 + historyYear, historyMonth - 1, historyDay)
- val datetime = Date(100 + historyYear, historyMonth - 1, historyDay, historyHour, historyMinute)
- val datetimewihtsec = Date(100 + historyYear, historyMonth - 1, historyDay, historyHour, historyMinute, historySecond)
val historyCode = byteArrayToInt(getBytes(data, DATA_START + 7, 1))
val paramByte8 = historyCode.toByte()
val value: Int = (data[DATA_START + 8].toInt() and 0xFF shl 8) + (data[DATA_START + 9].toInt() and 0xFF)
- aapsLogger.debug(LTag.PUMPCOMM, "History packet: " + recordCode + " Date: " + DateUtil.dateAndTimeString(datetimewihtsec) + " Code: " + historyCode + " Value: " + value)
- val danaRHistoryRecord = DanaRHistoryRecord()
danaRHistoryRecord.setBytes(data)
// danaRHistoryRecord.recordCode is different from DanaR codes
-// set in switch for every type
+ // set in switch for every type
var messageType = ""
when (recordCode) {
0x02 -> {
danaRHistoryRecord.recordCode = RecordTypes.RECORD_TYPE_BOLUS
- danaRHistoryRecord.recordDate = datetime.time
+ val datetime = DateTime(2000 + historyYear, historyMonth, historyDay, historyHour, historyMinute)
+ danaRHistoryRecord.recordDate = datetime.millis
when (0xF0 and paramByte8.toInt()) {
0xA0 -> {
danaRHistoryRecord.bolusType = "DS"
@@ -120,84 +120,107 @@ abstract class DanaRS_Packet_History_(
}
danaRHistoryRecord.recordDuration = (paramByte8.toInt() and 0x0F) * 60 + paramByte7.toInt()
danaRHistoryRecord.recordValue = value * 0.01
+ aapsLogger.debug(LTag.PUMPCOMM, "History packet: " + recordCode + " Date: " + dateUtil.dateAndTimeString(datetime.millis) + " Code: " + historyCode + " Value: " + value)
}
0x03 -> {
danaRHistoryRecord.recordCode = RecordTypes.RECORD_TYPE_DAILY
messageType += "dailyinsulin"
- danaRHistoryRecord.recordDate = date.time
+ val date = DateTime(2000 + historyYear, historyMonth, historyDay, 0, 0)
+ danaRHistoryRecord.recordDate = date.millis
danaRHistoryRecord.recordDailyBasal = dailyBasal
danaRHistoryRecord.recordDailyBolus = dailyBolus
+ aapsLogger.debug(LTag.PUMPCOMM, "History packet: " + recordCode + " Date: " + dateUtil.dateAndTimeString(date.millis) + " Code: " + historyCode + " Value: " + value)
}
0x04 -> {
danaRHistoryRecord.recordCode = RecordTypes.RECORD_TYPE_PRIME
messageType += "prime"
- danaRHistoryRecord.recordDate = datetimewihtsec.time
+ val datetimewihtsec = DateTime(2000 + historyYear, historyMonth, historyDay, historyHour, historyMinute, historySecond)
+ danaRHistoryRecord.recordDate = datetimewihtsec.millis
danaRHistoryRecord.recordValue = value * 0.01
+ aapsLogger.debug(LTag.PUMPCOMM, "History packet: " + recordCode + " Date: " + dateUtil.dateAndTimeString(datetimewihtsec.millis) + " Code: " + historyCode + " Value: " + value)
}
0x05 -> {
danaRHistoryRecord.recordCode = RecordTypes.RECORD_TYPE_REFILL
messageType += "refill"
- danaRHistoryRecord.recordDate = datetimewihtsec.time
+ val datetimewihtsec = DateTime(2000 + historyYear, historyMonth, historyDay, historyHour, historyMinute, historySecond)
+ danaRHistoryRecord.recordDate = datetimewihtsec.millis
danaRHistoryRecord.recordValue = value * 0.01
+ aapsLogger.debug(LTag.PUMPCOMM, "History packet: " + recordCode + " Date: " + dateUtil.dateAndTimeString(datetimewihtsec.millis) + " Code: " + historyCode + " Value: " + value)
}
0x0b -> {
danaRHistoryRecord.recordCode = RecordTypes.RECORD_TYPE_BASALHOUR
messageType += "basal hour"
- danaRHistoryRecord.recordDate = datetimewihtsec.time
+ val datetimewihtsec = DateTime(2000 + historyYear, historyMonth, historyDay, historyHour, historyMinute, historySecond)
+ danaRHistoryRecord.recordDate = datetimewihtsec.millis
danaRHistoryRecord.recordValue = value * 0.01
+ aapsLogger.debug(LTag.PUMPCOMM, "History packet: " + recordCode + " Date: " + dateUtil.dateAndTimeString(datetimewihtsec.millis) + " Code: " + historyCode + " Value: " + value)
}
0x99 -> {
danaRHistoryRecord.recordCode = RecordTypes.RECORD_TYPE_TEMP_BASAL
messageType += "tb"
- danaRHistoryRecord.recordDate = datetimewihtsec.time
+ val datetimewihtsec = DateTime(2000 + historyYear, historyMonth, historyDay, historyHour, historyMinute, historySecond)
+ danaRHistoryRecord.recordDate = datetimewihtsec.millis
danaRHistoryRecord.recordValue = value * 0.01
+ aapsLogger.debug(LTag.PUMPCOMM, "History packet: " + recordCode + " Date: " + dateUtil.dateAndTimeString(datetimewihtsec.millis) + " Code: " + historyCode + " Value: " + value)
}
0x06 -> {
danaRHistoryRecord.recordCode = RecordTypes.RECORD_TYPE_GLUCOSE
messageType += "glucose"
- danaRHistoryRecord.recordDate = datetimewihtsec.time
+ val datetimewihtsec = DateTime(2000 + historyYear, historyMonth, historyDay, historyHour, historyMinute, historySecond)
+ danaRHistoryRecord.recordDate = datetimewihtsec.millis
danaRHistoryRecord.recordValue = value.toDouble()
+ aapsLogger.debug(LTag.PUMPCOMM, "History packet: " + recordCode + " Date: " + dateUtil.dateAndTimeString(datetimewihtsec.millis) + " Code: " + historyCode + " Value: " + value)
}
0x07 -> {
danaRHistoryRecord.recordCode = RecordTypes.RECORD_TYPE_CARBO
messageType += "carbo"
- danaRHistoryRecord.recordDate = datetimewihtsec.time
+ val datetimewihtsec = DateTime(2000 + historyYear, historyMonth, historyDay, historyHour, historyMinute, historySecond)
+ danaRHistoryRecord.recordDate = datetimewihtsec.millis
danaRHistoryRecord.recordValue = value.toDouble()
+ aapsLogger.debug(LTag.PUMPCOMM, "History packet: " + recordCode + " Date: " + dateUtil.dateAndTimeString(datetimewihtsec.millis) + " Code: " + historyCode + " Value: " + value)
}
0x0a -> {
danaRHistoryRecord.recordCode = RecordTypes.RECORD_TYPE_ALARM
messageType += "alarm"
- danaRHistoryRecord.recordDate = datetimewihtsec.time
+ val datetimewihtsec = DateTime(2000 + historyYear, historyMonth, historyDay, historyHour, historyMinute, historySecond)
+ danaRHistoryRecord.recordDate = datetimewihtsec.millis
var strAlarm = "None"
- when (paramByte8.toInt()) {
- 67 -> strAlarm = "Check"
- 79 -> strAlarm = "Occlusion"
- 66 -> strAlarm = "Low Battery"
- 83 -> strAlarm = "Shutdown"
+ when (paramByte8) {
+ 'P'.toByte() -> strAlarm = "Basal Compare"
+ 'R'.toByte() -> strAlarm = "Empty Reservoir"
+ 'C'.toByte() -> strAlarm = "Check"
+ 'O'.toByte() -> strAlarm = "Occlusion"
+ 'M'.toByte() -> strAlarm = "Basal max"
+ 'D'.toByte() -> strAlarm = "Daily max"
+ 'B'.toByte() -> strAlarm = "Low Battery"
+ 'S'.toByte() -> strAlarm = "Shutdown"
}
danaRHistoryRecord.recordAlarm = strAlarm
danaRHistoryRecord.recordValue = value * 0.01
+ aapsLogger.debug(LTag.PUMPCOMM, "History packet: " + recordCode + " Date: " + dateUtil.dateAndTimeString(datetimewihtsec.millis) + " Code: " + historyCode + " Value: " + value)
}
0x09 -> {
danaRHistoryRecord.recordCode = RecordTypes.RECORD_TYPE_SUSPEND
messageType += "suspend"
- danaRHistoryRecord.recordDate = datetimewihtsec.time
+ val datetimewihtsec = DateTime(2000 + historyYear, historyMonth, historyDay, historyHour, historyMinute, historySecond)
+ danaRHistoryRecord.recordDate = datetimewihtsec.millis
var strRecordValue = "Off"
if (paramByte8.toInt() == 79) strRecordValue = "On"
danaRHistoryRecord.stringRecordValue = strRecordValue
+ aapsLogger.debug(LTag.PUMPCOMM, "History packet: " + recordCode + " Date: " + dateUtil.dateAndTimeString(datetimewihtsec.millis) + " Code: " + historyCode + " Value: " + value)
}
}
- MainApp.getDbHelper().createOrUpdate(danaRHistoryRecord)
- rxBus.send(EventDanaRSyncStatus(DateUtil.dateAndTimeString(danaRHistoryRecord.recordDate) + " " + messageType))
+ databaseHelper.createOrUpdate(danaRHistoryRecord)
+ rxBus.send(EventDanaRSyncStatus(dateUtil.dateAndTimeString(danaRHistoryRecord.recordDate) + " " + messageType))
}
}
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_Alarm.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_Alarm.kt
new file mode 100644
index 0000000000..23430fab80
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_Alarm.kt
@@ -0,0 +1,20 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+
+class DanaRS_Packet_History_Alarm @JvmOverloads constructor(
+ injector: HasAndroidInjector,
+ from: Long = 0
+) : DanaRS_Packet_History_(injector, from) {
+
+ init {
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_REVIEW__ALARM
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun getFriendlyName(): String {
+ return "REVIEW__ALARM"
+ }
+}
\ No newline at end of file
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_All_History.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_All_History.kt
new file mode 100644
index 0000000000..c8cbc8e39e
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_All_History.kt
@@ -0,0 +1,20 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+
+class DanaRS_Packet_History_All_History(
+ injector: HasAndroidInjector,
+ from: Long = 0
+) : DanaRS_Packet_History_(injector, from) {
+
+ init {
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_REVIEW__ALL_HISTORY
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun getFriendlyName(): String {
+ return "REVIEW__ALL_HISTORY"
+ }
+}
\ No newline at end of file
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_Basal.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_Basal.kt
new file mode 100644
index 0000000000..5166d9de0c
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_Basal.kt
@@ -0,0 +1,20 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+
+class DanaRS_Packet_History_Basal @JvmOverloads constructor(
+ injector: HasAndroidInjector,
+ from: Long = 0
+) : DanaRS_Packet_History_(injector, from) {
+
+ init {
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_REVIEW__BASAL
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun getFriendlyName(): String {
+ return "REVIEW__BASAL"
+ }
+}
\ No newline at end of file
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_Blood_Glucose.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_Blood_Glucose.kt
new file mode 100644
index 0000000000..237006ef4a
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_Blood_Glucose.kt
@@ -0,0 +1,20 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+
+class DanaRS_Packet_History_Blood_Glucose @JvmOverloads constructor(
+ injector: HasAndroidInjector,
+ from: Long = 0
+) : DanaRS_Packet_History_(injector, from) {
+
+ init {
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_REVIEW__BLOOD_GLUCOSE
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun getFriendlyName(): String {
+ return "REVIEW__BLOOD_GLUCOSE"
+ }
+}
\ No newline at end of file
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_Bolus.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_Bolus.kt
new file mode 100644
index 0000000000..3b8cec0a6f
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_Bolus.kt
@@ -0,0 +1,20 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+
+class DanaRS_Packet_History_Bolus @JvmOverloads constructor(
+ injector: HasAndroidInjector,
+ from: Long = 0
+) : DanaRS_Packet_History_(injector, from) {
+
+ init {
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_REVIEW__BOLUS
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun getFriendlyName(): String {
+ return "REVIEW__BOLUS"
+ }
+}
\ No newline at end of file
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_Carbohydrate.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_Carbohydrate.kt
new file mode 100644
index 0000000000..6ac0f18b17
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_Carbohydrate.kt
@@ -0,0 +1,20 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+
+class DanaRS_Packet_History_Carbohydrate @JvmOverloads constructor(
+ injector: HasAndroidInjector,
+ from: Long = 0
+) : DanaRS_Packet_History_(injector, from) {
+
+ init {
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_REVIEW__CARBOHYDRATE
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun getFriendlyName(): String {
+ return "REVIEW__CARBOHYDRATE"
+ }
+}
\ No newline at end of file
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_Daily.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_Daily.kt
new file mode 100644
index 0000000000..d0b3625e6a
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_Daily.kt
@@ -0,0 +1,20 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+
+class DanaRS_Packet_History_Daily @JvmOverloads constructor(
+ injector: HasAndroidInjector,
+ from: Long = 0
+) : DanaRS_Packet_History_(injector, from) {
+
+ init {
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_REVIEW__DAILY
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun getFriendlyName(): String {
+ return "REVIEW__DAILY"
+ }
+}
\ No newline at end of file
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_Prime.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_Prime.kt
new file mode 100644
index 0000000000..4069f9be0b
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_Prime.kt
@@ -0,0 +1,20 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+
+class DanaRS_Packet_History_Prime @JvmOverloads constructor(
+ injector: HasAndroidInjector,
+ from: Long = 0
+) : DanaRS_Packet_History_(injector, from) {
+
+ init {
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_REVIEW__PRIME
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun getFriendlyName(): String {
+ return "REVIEW__PRIME"
+ }
+}
\ No newline at end of file
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_Refill.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_Refill.kt
new file mode 100644
index 0000000000..ba83640f5b
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_Refill.kt
@@ -0,0 +1,20 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+
+class DanaRS_Packet_History_Refill @JvmOverloads constructor(
+ injector: HasAndroidInjector,
+ from: Long = 0
+) : DanaRS_Packet_History_(injector, from) {
+
+ init {
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_REVIEW__REFILL
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun getFriendlyName(): String {
+ return "REVIEW__REFILL"
+ }
+}
\ No newline at end of file
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_Suspend.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_Suspend.kt
new file mode 100644
index 0000000000..fdc4bb7086
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_Suspend.kt
@@ -0,0 +1,20 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+
+class DanaRS_Packet_History_Suspend @JvmOverloads constructor(
+ injector: HasAndroidInjector,
+ from: Long = 0
+) : DanaRS_Packet_History_(injector, from) {
+
+ init {
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_REVIEW__SUSPEND
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun getFriendlyName(): String {
+ return "REVIEW__SUSPEND"
+ }
+}
\ No newline at end of file
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_Temporary.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_Temporary.kt
new file mode 100644
index 0000000000..534a0f0667
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_History_Temporary.kt
@@ -0,0 +1,20 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+
+class DanaRS_Packet_History_Temporary(
+ injector: HasAndroidInjector,
+ from: Long = 0
+) : DanaRS_Packet_History_(injector, from) {
+
+ init {
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_REVIEW__TEMPORARY
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun getFriendlyName(): String {
+ return "REVIEW__TEMPORARY"
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Notify_Alarm.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Notify_Alarm.kt
similarity index 54%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Notify_Alarm.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Notify_Alarm.kt
index 5cc82d93a5..f397179185 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Notify_Alarm.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Notify_Alarm.kt
@@ -1,20 +1,27 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.R
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.danars.R
import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
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.Notification
+import info.nightscout.androidaps.danars.encryption.BleEncryption
import info.nightscout.androidaps.utils.resources.ResourceHelper
+import javax.inject.Inject
class DanaRS_Packet_Notify_Alarm(
- private val aapsLogger: AAPSLogger,
- private val resourceHelper: ResourceHelper
-) : DanaRS_Packet() {
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
+
+ @Inject lateinit var rxBus: RxBusWrapper
+ @Inject lateinit var resourceHelper: ResourceHelper
+ @Inject lateinit var nsUpload: NSUpload
init {
- type = BleCommandUtil.DANAR_PACKET__TYPE_NOTIFY
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_NOTIFY__ALARM
+ type = BleEncryption.DANAR_PACKET__TYPE_NOTIFY
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_NOTIFY__ALARM
aapsLogger.debug(LTag.PUMPCOMM, "New message")
}
@@ -29,19 +36,25 @@ class DanaRS_Packet_Notify_Alarm(
0x03 -> // Occlusion
errorString = resourceHelper.gs(R.string.occlusion)
0x04 -> // LOW BATTERY
- errorString = resourceHelper.gs(R.string.lowbattery)
+ errorString = resourceHelper.gs(R.string.pumpshutdown)
0x05 -> // Shutdown
errorString = resourceHelper.gs(R.string.lowbattery)
0x06 -> // Basal Compare
- errorString = "BasalCompare ????"
- 0x09 -> // Empty Reservoir
- errorString = resourceHelper.gs(R.string.emptyreservoir)
+ errorString = resourceHelper.gs(R.string.basalcompare)
0x07, 0xFF -> // Blood sugar measurement alert
errorString = resourceHelper.gs(R.string.bloodsugarmeasurementalert)
0x08, 0xFE -> // Remaining insulin level
errorString = resourceHelper.gs(R.string.remaininsulinalert)
+ 0x09 -> // Empty Reservoir
+ errorString = resourceHelper.gs(R.string.emptyreservoir)
+ 0x0A -> // Check shaft
+ errorString = resourceHelper.gs(R.string.checkshaft)
+ 0x0B -> // Basal MAX
+ errorString = resourceHelper.gs(R.string.basalmax)
+ 0x0C -> // Daily MAX
+ errorString = resourceHelper.gs(R.string.dailymax)
0xFD -> // Blood sugar check miss alarm
- errorString = "Blood sugar check miss alarm ???"
+ errorString = resourceHelper.gs(R.string.missedbolus)
}
// No error no need to upload anything
if (errorString == "") {
@@ -49,7 +62,9 @@ class DanaRS_Packet_Notify_Alarm(
aapsLogger.debug(LTag.PUMPCOMM, "Error detected: $errorString")
return
}
- NSUpload.uploadError(errorString)
+ val notification = Notification(Notification.USERMESSAGE, errorString, Notification.URGENT)
+ rxBus.send(EventNewNotification(notification))
+ nsUpload.uploadError(errorString)
}
override fun getFriendlyName(): String {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Notify_Delivery_Complete.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Notify_Delivery_Complete.kt
similarity index 51%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Notify_Delivery_Complete.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Notify_Delivery_Complete.kt
index 246f2c7fe5..fd245226d3 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Notify_Delivery_Complete.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Notify_Delivery_Complete.kt
@@ -1,36 +1,38 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.R
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.danars.R
import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.overview.events.EventOverviewBolusProgress
-import info.nightscout.androidaps.plugins.pump.danaRS.DanaRSPlugin
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danars.encryption.BleEncryption
import info.nightscout.androidaps.utils.resources.ResourceHelper
+import javax.inject.Inject
import kotlin.math.min
class DanaRS_Packet_Notify_Delivery_Complete(
- private val aapsLogger: AAPSLogger,
- private val rxBus: RxBusWrapper,
- private val resourceHelper: ResourceHelper,
- private val danaRSPlugin: DanaRSPlugin
-) : DanaRS_Packet() {
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
+
+ @Inject lateinit var rxBus: RxBusWrapper
+ @Inject lateinit var resourceHelper: ResourceHelper
+ @Inject lateinit var danaPump: DanaPump
init {
- type = BleCommandUtil.DANAR_PACKET__TYPE_NOTIFY
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_NOTIFY__DELIVERY_COMPLETE
+ type = BleEncryption.DANAR_PACKET__TYPE_NOTIFY
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_NOTIFY__DELIVERY_COMPLETE
aapsLogger.debug(LTag.PUMPCOMM, "New message")
}
override fun handleMessage(data: ByteArray) {
val deliveredInsulin = byteArrayToInt(getBytes(data, DATA_START, 2)) / 100.0
- danaRSPlugin.bolusingTreatment.insulin = deliveredInsulin
+ danaPump.bolusingTreatment?.insulin = deliveredInsulin
val bolusingEvent = EventOverviewBolusProgress
bolusingEvent.status = resourceHelper.gs(R.string.bolusdelivering, deliveredInsulin)
- bolusingEvent.t = danaRSPlugin.bolusingTreatment
- bolusingEvent.percent = min((deliveredInsulin / danaRSPlugin.bolusAmountToBeDelivered * 100).toInt(), 100)
- danaRSPlugin.bolusDone = true
+ bolusingEvent.t = danaPump.bolusingTreatment
+ bolusingEvent.percent = min((deliveredInsulin / danaPump.bolusAmountToBeDelivered * 100).toInt(), 100)
+ danaPump.bolusDone = true
rxBus.send(bolusingEvent)
aapsLogger.debug(LTag.PUMPCOMM, "Delivered insulin: $deliveredInsulin")
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Notify_Delivery_Rate_Display.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Notify_Delivery_Rate_Display.kt
similarity index 50%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Notify_Delivery_Rate_Display.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Notify_Delivery_Rate_Display.kt
index 9705c53669..8c54865d4a 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Notify_Delivery_Rate_Display.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Notify_Delivery_Rate_Display.kt
@@ -1,36 +1,37 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.R
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.danars.R
import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
import info.nightscout.androidaps.plugins.general.overview.events.EventOverviewBolusProgress
-import info.nightscout.androidaps.plugins.pump.danaRS.DanaRSPlugin
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danars.encryption.BleEncryption
import info.nightscout.androidaps.utils.resources.ResourceHelper
+import javax.inject.Inject
import kotlin.math.min
class DanaRS_Packet_Notify_Delivery_Rate_Display(
- private val aapsLogger: AAPSLogger,
- private val rxBus: RxBusWrapper,
- private val resourceHelper: ResourceHelper,
- private val danaRSPlugin: DanaRSPlugin
-) : DanaRS_Packet() {
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
+ @Inject lateinit var rxBus: RxBusWrapper
+ @Inject lateinit var resourceHelper: ResourceHelper
+ @Inject lateinit var danaPump: DanaPump
init {
- type = BleCommandUtil.DANAR_PACKET__TYPE_NOTIFY
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_NOTIFY__DELIVERY_RATE_DISPLAY
+ type = BleEncryption.DANAR_PACKET__TYPE_NOTIFY
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_NOTIFY__DELIVERY_RATE_DISPLAY
}
override fun handleMessage(data: ByteArray) {
val deliveredInsulin = byteArrayToInt(getBytes(data, DATA_START, 2)) / 100.0
- danaRSPlugin.bolusProgressLastTimeStamp = System.currentTimeMillis()
- danaRSPlugin.bolusingTreatment.insulin = deliveredInsulin
+ danaPump.bolusProgressLastTimeStamp = System.currentTimeMillis()
+ danaPump.bolusingTreatment?.insulin = deliveredInsulin
val bolusingEvent = EventOverviewBolusProgress
bolusingEvent.status = resourceHelper.gs(R.string.bolusdelivering, deliveredInsulin)
- bolusingEvent.t = danaRSPlugin.bolusingTreatment
- bolusingEvent.percent = min((deliveredInsulin / danaRSPlugin.bolusAmountToBeDelivered * 100).toInt(), 100)
+ bolusingEvent.t = danaPump.bolusingTreatment
+ bolusingEvent.percent = min((deliveredInsulin / danaPump.bolusAmountToBeDelivered * 100).toInt(), 100)
failed = bolusingEvent.percent < 100
rxBus.send(bolusingEvent)
aapsLogger.debug(LTag.PUMPCOMM, "Delivered insulin so far: $deliveredInsulin")
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Notify_Missed_Bolus_Alarm.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Notify_Missed_Bolus_Alarm.kt
similarity index 78%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Notify_Missed_Bolus_Alarm.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Notify_Missed_Bolus_Alarm.kt
index ad5fdbdef6..8e5fcdfeaf 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Notify_Missed_Bolus_Alarm.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Notify_Missed_Bolus_Alarm.kt
@@ -1,16 +1,16 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.danars.encryption.BleEncryption
class DanaRS_Packet_Notify_Missed_Bolus_Alarm(
- private val aapsLogger: AAPSLogger
-) : DanaRS_Packet() {
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
init {
- type = BleCommandUtil.DANAR_PACKET__TYPE_NOTIFY
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_NOTIFY__MISSED_BOLUS_ALARM
+ type = BleEncryption.DANAR_PACKET__TYPE_NOTIFY
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_NOTIFY__MISSED_BOLUS_ALARM
aapsLogger.debug(LTag.PUMPCOMM, "New message")
}
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Option_Get_Pump_Time.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Option_Get_Pump_Time.kt
new file mode 100644
index 0000000000..11659879e3
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Option_Get_Pump_Time.kt
@@ -0,0 +1,40 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+import org.joda.time.DateTime
+import javax.inject.Inject
+
+class DanaRS_Packet_Option_Get_Pump_Time(
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
+
+ @Inject lateinit var danaPump: DanaPump
+
+ init {
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_OPTION__GET_PUMP_TIME
+ aapsLogger.debug(LTag.PUMPCOMM, "Requesting pump time")
+ }
+
+ override fun handleMessage(data: ByteArray) {
+ val year = byteArrayToInt(getBytes(data, DATA_START, 1))
+ val month = byteArrayToInt(getBytes(data, DATA_START + 1, 1))
+ val day = byteArrayToInt(getBytes(data, DATA_START + 2, 1))
+ val hour = byteArrayToInt(getBytes(data, DATA_START + 3, 1))
+ val min = byteArrayToInt(getBytes(data, DATA_START + 4, 1))
+ val sec = byteArrayToInt(getBytes(data, DATA_START + 5, 1))
+ val time = DateTime(2000 + year, month, day, hour, min, sec)
+ danaPump.setPumpTime(time.millis)
+ aapsLogger.debug(LTag.PUMPCOMM, "Pump time " + dateUtil.dateAndTimeString(time.millis))
+ }
+
+ override fun handleMessageNotReceived() {
+ danaPump.resetPumpTime()
+ }
+
+ override fun getFriendlyName(): String {
+ return "OPTION__GET_PUMP_TIME"
+ }
+}
\ No newline at end of file
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Option_Get_Pump_UTC_And_TimeZone.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Option_Get_Pump_UTC_And_TimeZone.kt
new file mode 100644
index 0000000000..9f35fcb82c
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Option_Get_Pump_UTC_And_TimeZone.kt
@@ -0,0 +1,41 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+import org.joda.time.DateTime
+import javax.inject.Inject
+
+class DanaRS_Packet_Option_Get_Pump_UTC_And_TimeZone(
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
+
+ @Inject lateinit var danaPump: DanaPump
+
+ init {
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_OPTION__GET_PUMP_UTC_AND_TIME_ZONE
+ aapsLogger.debug(LTag.PUMPCOMM, "Requesting pump UTC time")
+ }
+
+ override fun handleMessage(data: ByteArray) {
+ val year = byteArrayToInt(getBytes(data, DATA_START, 1))
+ val month = byteArrayToInt(getBytes(data, DATA_START + 1, 1))
+ val day = byteArrayToInt(getBytes(data, DATA_START + 2, 1))
+ val hour = byteArrayToInt(getBytes(data, DATA_START + 3, 1))
+ val min = byteArrayToInt(getBytes(data, DATA_START + 4, 1))
+ val sec = byteArrayToInt(getBytes(data, DATA_START + 5, 1))
+ val zoneOffset = getBytes(data, DATA_START + 6, 1)[0].toInt()
+ val time = DateTime(2000 + year, month, day, hour, min, sec)
+ danaPump.setPumpTime(time.millis, zoneOffset)
+ aapsLogger.debug(LTag.PUMPCOMM, "Pump time ${dateUtil.dateAndTimeString(danaPump.getPumpTime())} ZoneOffset: $zoneOffset")
+ }
+
+ override fun handleMessageNotReceived() {
+ danaPump.resetPumpTime()
+ }
+
+ override fun getFriendlyName(): String {
+ return "OPTION__GET_PUMP_UTC_AND_TIMEZONE"
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Option_Get_User_Option.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Option_Get_User_Option.kt
similarity index 57%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Option_Get_User_Option.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Option_Get_User_Option.kt
index 07694f6380..c9fe481da8 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Option_Get_User_Option.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Option_Get_User_Option.kt
@@ -1,54 +1,56 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
-import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+import javax.inject.Inject
class DanaRS_Packet_Option_Get_User_Option(
- private val aapsLogger: AAPSLogger,
- private val danaRPump: DanaRPump
-) : DanaRS_Packet() {
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
+
+ @Inject lateinit var danaPump: DanaPump
init {
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_OPTION__GET_USER_OPTION
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_OPTION__GET_USER_OPTION
aapsLogger.debug(LTag.PUMPCOMM, "Requesting user settings")
}
override fun handleMessage(data: ByteArray) {
var dataIndex = DATA_START
var dataSize = 1
- danaRPump.timeDisplayType = byteArrayToInt(getBytes(data, dataIndex, dataSize))
+ danaPump.timeDisplayType = byteArrayToInt(getBytes(data, dataIndex, dataSize))
dataIndex += dataSize
dataSize = 1
- danaRPump.buttonScrollOnOff = byteArrayToInt(getBytes(data, dataIndex, dataSize))
+ danaPump.buttonScrollOnOff = byteArrayToInt(getBytes(data, dataIndex, dataSize))
dataIndex += dataSize
dataSize = 1
- danaRPump.beepAndAlarm = byteArrayToInt(getBytes(data, dataIndex, dataSize))
+ danaPump.beepAndAlarm = byteArrayToInt(getBytes(data, dataIndex, dataSize))
dataIndex += dataSize
dataSize = 1
- danaRPump.lcdOnTimeSec = byteArrayToInt(getBytes(data, dataIndex, dataSize))
+ danaPump.lcdOnTimeSec = byteArrayToInt(getBytes(data, dataIndex, dataSize))
dataIndex += dataSize
dataSize = 1
- danaRPump.backlightOnTimeSec = byteArrayToInt(getBytes(data, dataIndex, dataSize))
+ danaPump.backlightOnTimeSec = byteArrayToInt(getBytes(data, dataIndex, dataSize))
dataIndex += dataSize
dataSize = 1
- danaRPump.selectedLanguage = byteArrayToInt(getBytes(data, dataIndex, dataSize))
+ danaPump.selectedLanguage = byteArrayToInt(getBytes(data, dataIndex, dataSize))
dataIndex += dataSize
dataSize = 1
- danaRPump.units = byteArrayToInt(getBytes(data, dataIndex, dataSize))
+ danaPump.units = byteArrayToInt(getBytes(data, dataIndex, dataSize))
dataIndex += dataSize
dataSize = 1
- danaRPump.shutdownHour = byteArrayToInt(getBytes(data, dataIndex, dataSize))
+ danaPump.shutdownHour = byteArrayToInt(getBytes(data, dataIndex, dataSize))
dataIndex += dataSize
dataSize = 1
- danaRPump.lowReservoirRate = byteArrayToInt(getBytes(data, dataIndex, dataSize))
+ danaPump.lowReservoirRate = byteArrayToInt(getBytes(data, dataIndex, dataSize))
dataIndex += dataSize
dataSize = 2
- danaRPump.cannulaVolume = byteArrayToInt(getBytes(data, dataIndex, dataSize))
+ danaPump.cannulaVolume = byteArrayToInt(getBytes(data, dataIndex, dataSize))
dataIndex += dataSize
dataSize = 2
- danaRPump.refillAmount = byteArrayToInt(getBytes(data, dataIndex, dataSize))
+ danaPump.refillAmount = byteArrayToInt(getBytes(data, dataIndex, dataSize))
dataIndex += dataSize
dataSize = 1
val selectableLanguage1 = byteArrayToInt(getBytes(data, dataIndex, dataSize))
@@ -65,17 +67,17 @@ class DanaRS_Packet_Option_Get_User_Option(
dataSize = 1
val selectableLanguage5 = byteArrayToInt(getBytes(data, dataIndex, dataSize))
// Pump's screen on time can't be less than 5
- failed = if (danaRPump.lcdOnTimeSec < 5) true else false
- aapsLogger.debug(LTag.PUMPCOMM, "timeDisplayType: " + danaRPump.timeDisplayType)
- aapsLogger.debug(LTag.PUMPCOMM, "buttonScrollOnOff: " + danaRPump.buttonScrollOnOff)
- aapsLogger.debug(LTag.PUMPCOMM, "beepAndAlarm: " + danaRPump.beepAndAlarm)
- aapsLogger.debug(LTag.PUMPCOMM, "lcdOnTimeSec: " + danaRPump.lcdOnTimeSec)
- aapsLogger.debug(LTag.PUMPCOMM, "backlightOnTimeSec: " + danaRPump.backlightOnTimeSec)
- aapsLogger.debug(LTag.PUMPCOMM, "selectedLanguage: " + danaRPump.selectedLanguage)
- aapsLogger.debug(LTag.PUMPCOMM, "Pump units: " + if (danaRPump.units == DanaRPump.UNITS_MGDL) "MGDL" else "MMOL")
- aapsLogger.debug(LTag.PUMPCOMM, "shutdownHour: " + danaRPump.shutdownHour)
- aapsLogger.debug(LTag.PUMPCOMM, "lowReservoirRate: " + danaRPump.lowReservoirRate)
- aapsLogger.debug(LTag.PUMPCOMM, "refillAmount: " + danaRPump.refillAmount)
+ failed = if (danaPump.lcdOnTimeSec < 5) true else false
+ aapsLogger.debug(LTag.PUMPCOMM, "timeDisplayType: " + danaPump.timeDisplayType)
+ aapsLogger.debug(LTag.PUMPCOMM, "buttonScrollOnOff: " + danaPump.buttonScrollOnOff)
+ aapsLogger.debug(LTag.PUMPCOMM, "beepAndAlarm: " + danaPump.beepAndAlarm)
+ aapsLogger.debug(LTag.PUMPCOMM, "lcdOnTimeSec: " + danaPump.lcdOnTimeSec)
+ aapsLogger.debug(LTag.PUMPCOMM, "backlightOnTimeSec: " + danaPump.backlightOnTimeSec)
+ aapsLogger.debug(LTag.PUMPCOMM, "selectedLanguage: " + danaPump.selectedLanguage)
+ aapsLogger.debug(LTag.PUMPCOMM, "Pump units: " + if (danaPump.units == DanaPump.UNITS_MGDL) "MGDL" else "MMOL")
+ aapsLogger.debug(LTag.PUMPCOMM, "shutdownHour: " + danaPump.shutdownHour)
+ aapsLogger.debug(LTag.PUMPCOMM, "lowReservoirRate: " + danaPump.lowReservoirRate)
+ aapsLogger.debug(LTag.PUMPCOMM, "refillAmount: " + danaPump.refillAmount)
aapsLogger.debug(LTag.PUMPCOMM, "selectableLanguage1: $selectableLanguage1")
aapsLogger.debug(LTag.PUMPCOMM, "selectableLanguage2: $selectableLanguage2")
aapsLogger.debug(LTag.PUMPCOMM, "selectableLanguage3: $selectableLanguage3")
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Option_Set_Pump_Time.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Option_Set_Pump_Time.kt
new file mode 100644
index 0000000000..dc4b6b0efe
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Option_Set_Pump_Time.kt
@@ -0,0 +1,46 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+import org.joda.time.DateTime
+
+class DanaRS_Packet_Option_Set_Pump_Time(
+ injector: HasAndroidInjector,
+ private var time: Long = 0
+) : DanaRS_Packet(injector) {
+
+ var error = 0
+
+ init {
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_OPTION__SET_PUMP_TIME
+ aapsLogger.debug(LTag.PUMPCOMM, "Setting pump time " + dateUtil.dateAndTimeString(time))
+ }
+
+ override fun getRequestParams(): ByteArray {
+ val date = DateTime(time)
+ val request = ByteArray(6)
+ request[0] = (date.year - 2000 and 0xff).toByte()
+ request[1] = (date.monthOfYear and 0xff).toByte()
+ request[2] = (date.dayOfMonth and 0xff).toByte()
+ request[3] = (date.hourOfDay and 0xff).toByte()
+ request[4] = (date.minuteOfHour and 0xff).toByte()
+ request[5] = (date.secondOfMinute and 0xff).toByte()
+ return request
+ }
+
+ override fun handleMessage(data: ByteArray) {
+ val result = intFromBuff(data, 0, 1)
+ if (result == 0) {
+ aapsLogger.debug(LTag.PUMPCOMM, "Result OK")
+ failed = false
+ } else {
+ aapsLogger.error("Result Error: $result")
+ failed = true
+ }
+ }
+
+ override fun getFriendlyName(): String {
+ return "OPTION__SET_PUMP_TIME"
+ }
+}
\ No newline at end of file
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Option_Set_Pump_UTC_And_TimeZone.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Option_Set_Pump_UTC_And_TimeZone.kt
new file mode 100644
index 0000000000..3fbf79a388
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Option_Set_Pump_UTC_And_TimeZone.kt
@@ -0,0 +1,49 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+import org.joda.time.DateTime
+import org.joda.time.DateTimeZone
+
+class DanaRS_Packet_Option_Set_Pump_UTC_And_TimeZone(
+ injector: HasAndroidInjector,
+ private var time: Long = 0,
+ private var zoneOffset: Int = 0
+) : DanaRS_Packet(injector) {
+
+ var error = 0
+
+ init {
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_OPTION__SET_PUMP_UTC_AND_TIME_ZONE
+ aapsLogger.debug(LTag.PUMPCOMM, "Setting UTC pump time ${dateUtil.dateAndTimeString(time)} ZoneOffset: $zoneOffset")
+ }
+
+ override fun getRequestParams(): ByteArray {
+ val date = DateTime(time).withZone(DateTimeZone.UTC)
+ val request = ByteArray(7)
+ request[0] = (date.year - 2000 and 0xff).toByte()
+ request[1] = (date.monthOfYear and 0xff).toByte()
+ request[2] = (date.dayOfMonth and 0xff).toByte()
+ request[3] = (date.hourOfDay and 0xff).toByte()
+ request[4] = (date.minuteOfHour and 0xff).toByte()
+ request[5] = (date.secondOfMinute and 0xff).toByte()
+ request[6] = zoneOffset.toByte()
+ return request
+ }
+
+ override fun handleMessage(data: ByteArray) {
+ val result = intFromBuff(data, 0, 1)
+ if (result == 0) {
+ aapsLogger.debug(LTag.PUMPCOMM, "Result OK")
+ failed = false
+ } else {
+ aapsLogger.error("Result Error: $result")
+ failed = true
+ }
+ }
+
+ override fun getFriendlyName(): String {
+ return "OPTION__SET_PUMP_UTC_AND_TIMEZONE"
+ }
+}
\ No newline at end of file
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Option_Set_User_Option.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Option_Set_User_Option.kt
new file mode 100644
index 0000000000..c6572d6f60
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Option_Set_User_Option.kt
@@ -0,0 +1,61 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+import javax.inject.Inject
+
+class DanaRS_Packet_Option_Set_User_Option(
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
+
+ @Inject lateinit var danaPump: DanaPump
+
+ init {
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_OPTION__SET_USER_OPTION
+ aapsLogger.debug(LTag.PUMPCOMM, "Setting user settings")
+ }
+
+ override fun getRequestParams(): ByteArray {
+ aapsLogger.debug(LTag.PUMPCOMM,
+ "UserOptions:" + (System.currentTimeMillis() - danaPump.lastConnection) / 1000 + " s ago"
+ + "\ntimeDisplayType:" + danaPump.timeDisplayType
+ + "\nbuttonScroll:" + danaPump.buttonScrollOnOff
+ + "\ntimeDisplayType:" + danaPump.timeDisplayType
+ + "\nlcdOnTimeSec:" + danaPump.lcdOnTimeSec
+ + "\nbacklight:" + danaPump.backlightOnTimeSec
+ + "\ndanaRPumpUnits:" + danaPump.units
+ + "\nlowReservoir:" + danaPump.lowReservoirRate)
+ val request = ByteArray(13)
+ request[0] = (danaPump.timeDisplayType and 0xff).toByte()
+ request[1] = (danaPump.buttonScrollOnOff and 0xff).toByte()
+ request[2] = (danaPump.beepAndAlarm and 0xff).toByte()
+ request[3] = (danaPump.lcdOnTimeSec and 0xff).toByte()
+ request[4] = (danaPump.backlightOnTimeSec and 0xff).toByte()
+ request[5] = (danaPump.selectedLanguage and 0xff).toByte()
+ request[6] = (danaPump.units and 0xff).toByte()
+ request[7] = (danaPump.shutdownHour and 0xff).toByte()
+ request[8] = (danaPump.lowReservoirRate and 0xff).toByte()
+ request[9] = (danaPump.cannulaVolume and 0xff).toByte()
+ request[10] = (danaPump.cannulaVolume ushr 8 and 0xff).toByte()
+ request[11] = (danaPump.refillAmount and 0xff).toByte()
+ request[12] = (danaPump.refillAmount ushr 8 and 0xff).toByte()
+ return request
+ }
+
+ override fun handleMessage(data: ByteArray) {
+ val result = intFromBuff(data, 0, 1)
+ if (result == 0) {
+ aapsLogger.debug(LTag.PUMPCOMM, "Result OK")
+ failed = false
+ } else {
+ aapsLogger.error("Result Error: $result")
+ failed = true
+ }
+ }
+
+ override fun getFriendlyName(): String {
+ return "OPTION__SET_USER_OPTION"
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Review_Bolus_Avg.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Review_Bolus_Avg.kt
similarity index 84%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Review_Bolus_Avg.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Review_Bolus_Avg.kt
index c99a56a2b8..6e0af1260f 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/comm/DanaRS_Packet_Review_Bolus_Avg.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Review_Bolus_Avg.kt
@@ -1,15 +1,15 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.comm
+package info.nightscout.androidaps.danars.comm
-import com.cozmo.danar.util.BleCommandUtil
-import info.nightscout.androidaps.logging.AAPSLogger
+import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.danars.encryption.BleEncryption
class DanaRS_Packet_Review_Bolus_Avg(
- private val aapsLogger: AAPSLogger
-) : DanaRS_Packet() {
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
init {
- opCode = BleCommandUtil.DANAR_PACKET__OPCODE_REVIEW__BOLUS_AVG
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_REVIEW__BOLUS_AVG
aapsLogger.debug(LTag.PUMPCOMM, "New message")
}
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Review_Get_Pump_Dec_Ratio.kt b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Review_Get_Pump_Dec_Ratio.kt
new file mode 100644
index 0000000000..990ffce54c
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/comm/DanaRS_Packet_Review_Get_Pump_Dec_Ratio.kt
@@ -0,0 +1,29 @@
+package info.nightscout.androidaps.danars.comm
+
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+import javax.inject.Inject
+
+class DanaRS_Packet_Review_Get_Pump_Dec_Ratio(
+ injector: HasAndroidInjector
+) : DanaRS_Packet(injector) {
+
+ @Inject lateinit var danaPump: DanaPump
+
+ init {
+ opCode = BleEncryption.DANAR_PACKET__OPCODE_REVIEW__GET_PUMP_DEC_RATIO
+ aapsLogger.debug(LTag.PUMPCOMM, "New message")
+ }
+
+ override fun handleMessage(data: ByteArray) {
+ danaPump.decRatio = intFromBuff(data, 0, 1) * 5
+ failed = false
+ aapsLogger.debug(LTag.PUMPCOMM, "Dec ratio: ${danaPump.decRatio}%")
+ }
+
+ override fun getFriendlyName(): String {
+ return "REVIEW__GET_PUMP_DEC_RATIO"
+ }
+}
\ No newline at end of file
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/di/DanaRSActivitiesModule.kt b/danars/src/main/java/info/nightscout/androidaps/danars/di/DanaRSActivitiesModule.kt
new file mode 100644
index 0000000000..ac539d7d5a
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/di/DanaRSActivitiesModule.kt
@@ -0,0 +1,19 @@
+package info.nightscout.androidaps.danars.di
+
+import dagger.Module
+import dagger.android.ContributesAndroidInjector
+import info.nightscout.androidaps.danars.activities.BLEScanActivity
+import info.nightscout.androidaps.danars.activities.EnterPinActivity
+import info.nightscout.androidaps.danars.activities.PairingHelperActivity
+import info.nightscout.androidaps.danars.dialogs.PairingProgressDialog
+
+@Module
+@Suppress("unused")
+abstract class DanaRSActivitiesModule {
+
+ @ContributesAndroidInjector abstract fun contributesBLEScanActivity(): BLEScanActivity
+ @ContributesAndroidInjector abstract fun contributesPairingHelperActivity(): PairingHelperActivity
+ @ContributesAndroidInjector abstract fun contributeEnterPinActivity(): EnterPinActivity
+
+ @ContributesAndroidInjector abstract fun contributesPairingProgressDialog(): PairingProgressDialog
+}
\ No newline at end of file
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/di/DanaRSCommModule.kt b/danars/src/main/java/info/nightscout/androidaps/danars/di/DanaRSCommModule.kt
new file mode 100644
index 0000000000..f239525f85
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/di/DanaRSCommModule.kt
@@ -0,0 +1,83 @@
+package info.nightscout.androidaps.danars.di
+
+import dagger.Module
+import dagger.android.ContributesAndroidInjector
+import info.nightscout.androidaps.danars.comm.*
+
+@Module
+@Suppress("unused")
+abstract class DanaRSCommModule {
+
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet(): DanaRS_Packet
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Basal_Set_Cancel_Temporary_Basal(): DanaRS_Packet_Basal_Set_Cancel_Temporary_Basal
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Basal_Get_Basal_Rate(): DanaRS_Packet_Basal_Get_Basal_Rate
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Basal_Get_Profile_Basal_Rate(): DanaRS_Packet_Basal_Get_Profile_Basal_Rate
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Basal_Get_Profile_Number(): DanaRS_Packet_Basal_Get_Profile_Number
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Basal_Set_Basal_Rate(): DanaRS_Packet_Basal_Set_Basal_Rate
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Basal_Set_Profile_Basal_Rate(): DanaRS_Packet_Basal_Set_Profile_Basal_Rate
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Basal_Set_Profile_Number(): DanaRS_Packet_Basal_Set_Profile_Number
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Basal_Set_Suspend_Off(): DanaRS_Packet_Basal_Set_Suspend_Off
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Basal_Set_Suspend_On(): DanaRS_Packet_Basal_Set_Suspend_On
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Basal_Set_Temporary_Basal(): DanaRS_Packet_Basal_Set_Temporary_Basal
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Basal_Get_Temporary_Basal_State(): DanaRS_Packet_Basal_Get_Temporary_Basal_State
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Bolus_Get_Bolus_Option(): DanaRS_Packet_Bolus_Get_Bolus_Option
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Bolus_Get_Initial_Bolus(): DanaRS_Packet_Bolus_Get_Initial_Bolus
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Bolus_Get_Calculation_Information(): DanaRS_Packet_Bolus_Get_Calculation_Information
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Bolus_Get_Carbohydrate_Calculation_Information(): DanaRS_Packet_Bolus_Get_Carbohydrate_Calculation_Information
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Bolus_Get_CIR_CF_Array(): DanaRS_Packet_Bolus_Get_CIR_CF_Array
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Bolus_Get_24_CIR_CF_Array(): DanaRS_Packet_Bolus_Get_24_CIR_CF_Array
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Bolus_Get_Dual_Bolus(): DanaRS_Packet_Bolus_Get_Dual_Bolus
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Bolus_Get_Extended_Bolus(): DanaRS_Packet_Bolus_Get_Extended_Bolus
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Bolus_Get_Extended_Bolus_State(): DanaRS_Packet_Bolus_Get_Extended_Bolus_State
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Bolus_Get_Extended_Menu_Option_State(): DanaRS_Packet_Bolus_Get_Extended_Menu_Option_State
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Bolus_Get_Step_Bolus_Information(): DanaRS_Packet_Bolus_Get_Step_Bolus_Information
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Bolus_Set_Bolus_Option(): DanaRS_Packet_Bolus_Set_Bolus_Option
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Bolus_Set_Initial_Bolus(): DanaRS_Packet_Bolus_Set_Initial_Bolus
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Bolus_Set_CIR_CF_Array(): DanaRS_Packet_Bolus_Set_CIR_CF_Array
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Bolus_Set_24_CIR_CF_Array(): DanaRS_Packet_Bolus_Set_24_CIR_CF_Array
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Bolus_Set_Dual_Bolus(): DanaRS_Packet_Bolus_Set_Dual_Bolus
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Bolus_Set_Extended_Bolus(): DanaRS_Packet_Bolus_Set_Extended_Bolus
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Bolus_Set_Extended_Bolus_Cancel(): DanaRS_Packet_Bolus_Set_Extended_Bolus_Cancel
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Bolus_Set_Step_Bolus_Start(): DanaRS_Packet_Bolus_Set_Step_Bolus_Start
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Bolus_Set_Step_Bolus_Stop(): DanaRS_Packet_Bolus_Set_Step_Bolus_Stop
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Etc_Keep_Connection(): DanaRS_Packet_Etc_Keep_Connection
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Etc_Set_History_Save(): DanaRS_Packet_Etc_Set_History_Save
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_General_Delivery_Status(): DanaRS_Packet_General_Delivery_Status
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_General_Get_Password(): DanaRS_Packet_General_Get_Password
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_General_Initial_Screen_Information(): DanaRS_Packet_General_Initial_Screen_Information
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Notify_Alarm(): DanaRS_Packet_Notify_Alarm
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Notify_Delivery_Complete(): DanaRS_Packet_Notify_Delivery_Complete
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Notify_Delivery_Rate_Display(): DanaRS_Packet_Notify_Delivery_Rate_Display
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Notify_Missed_Bolus_Alarm(): DanaRS_Packet_Notify_Missed_Bolus_Alarm
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Option_Get_Pump_Time(): DanaRS_Packet_Option_Get_Pump_Time
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Option_Get_User_Option(): DanaRS_Packet_Option_Get_User_Option
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Option_Set_Pump_Time(): DanaRS_Packet_Option_Set_Pump_Time
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Option_Set_User_Option(): DanaRS_Packet_Option_Set_User_Option
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_History_(): DanaRS_Packet_History_
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_History_Alarm(): DanaRS_Packet_History_Alarm
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_History_All_History(): DanaRS_Packet_History_All_History
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_History_Basal(): DanaRS_Packet_History_Basal
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_History_Blood_Glucose(): DanaRS_Packet_History_Blood_Glucose
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_History_Bolus(): DanaRS_Packet_History_Bolus
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Review_Bolus_Avg(): DanaRS_Packet_Review_Bolus_Avg
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_History_Carbohydrate(): DanaRS_Packet_History_Carbohydrate
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_History_Daily(): DanaRS_Packet_History_Daily
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_General_Get_More_Information(): DanaRS_Packet_General_Get_More_Information
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_General_Get_Pump_Check(): DanaRS_Packet_General_Get_Pump_Check
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_General_Get_Shipping_Information(): DanaRS_Packet_General_Get_Shipping_Information
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_General_Get_Today_Delivery_Total(): DanaRS_Packet_General_Get_Today_Delivery_Total
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_General_Get_User_Time_Change_Flag(): DanaRS_Packet_General_Get_User_Time_Change_Flag
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_History_Prime(): DanaRS_Packet_History_Prime
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_History_Refill(): DanaRS_Packet_History_Refill
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_General_Set_History_Upload_Mode(): DanaRS_Packet_General_Set_History_Upload_Mode
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_General_Set_User_Time_Change_Flag_Clear(): DanaRS_Packet_General_Set_User_Time_Change_Flag_Clear
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_History_Suspend(): DanaRS_Packet_History_Suspend
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_History_Temporary(): DanaRS_Packet_History_Temporary
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_APS_Basal_Set_Temporary_Basal(): DanaRS_Packet_APS_Basal_Set_Temporary_Basal
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_APS_History_Events(): DanaRS_Packet_APS_History_Events
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_APS_Set_Event_History(): DanaRS_Packet_APS_Set_Event_History
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_General_Get_Shipping_Version(): DanaRS_Packet_General_Get_Shipping_Version
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Review_Get_Pump_Dec_Ratio(): DanaRS_Packet_Review_Get_Pump_Dec_Ratio
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Option_Get_Pump_UTC_And_TimeZone(): DanaRS_Packet_Option_Get_Pump_UTC_And_TimeZone
+ @ContributesAndroidInjector abstract fun contributesDanaRS_Packet_Option_Set_Pump_UTC_And_TimeZone(): DanaRS_Packet_Option_Set_Pump_UTC_And_TimeZone
+}
\ No newline at end of file
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/di/DanaRSModule.kt b/danars/src/main/java/info/nightscout/androidaps/danars/di/DanaRSModule.kt
new file mode 100644
index 0000000000..3939007598
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/di/DanaRSModule.kt
@@ -0,0 +1,10 @@
+package info.nightscout.androidaps.danars.di
+
+import dagger.Module
+
+@Module(includes = [
+ DanaRSCommModule::class,
+ DanaRSActivitiesModule::class,
+ DanaRSServicesModule::class
+])
+open class DanaRSModule
\ No newline at end of file
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/di/DanaRSServicesModule.kt b/danars/src/main/java/info/nightscout/androidaps/danars/di/DanaRSServicesModule.kt
new file mode 100644
index 0000000000..e24db08b9d
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/di/DanaRSServicesModule.kt
@@ -0,0 +1,11 @@
+package info.nightscout.androidaps.danars.di
+
+import dagger.Module
+import dagger.android.ContributesAndroidInjector
+import info.nightscout.androidaps.danars.services.DanaRSService
+
+@Module
+@Suppress("unused")
+abstract class DanaRSServicesModule {
+ @ContributesAndroidInjector abstract fun contributesDanaRSService(): DanaRSService
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/dialogs/PairingProgressDialog.java b/danars/src/main/java/info/nightscout/androidaps/danars/dialogs/PairingProgressDialog.java
similarity index 70%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/dialogs/PairingProgressDialog.java
rename to danars/src/main/java/info/nightscout/androidaps/danars/dialogs/PairingProgressDialog.java
index 9518dac337..49dc7c8f07 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/dialogs/PairingProgressDialog.java
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/dialogs/PairingProgressDialog.java
@@ -1,4 +1,4 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.dialogs;
+package info.nightscout.androidaps.danars.dialogs;
import android.app.Activity;
@@ -14,19 +14,25 @@ import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
-import androidx.fragment.app.DialogFragment;
+import javax.inject.Inject;
-import info.nightscout.androidaps.MainApp;
-import info.nightscout.androidaps.R;
-import info.nightscout.androidaps.plugins.bus.RxBus;
-import info.nightscout.androidaps.plugins.pump.danaRS.activities.PairingHelperActivity;
-import info.nightscout.androidaps.plugins.pump.danaRS.events.EventDanaRSPairingSuccess;
+import dagger.android.support.DaggerDialogFragment;
+import info.nightscout.androidaps.danars.R;
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
+import info.nightscout.androidaps.danars.activities.PairingHelperActivity;
+import info.nightscout.androidaps.danars.events.EventDanaRSPairingSuccess;
import info.nightscout.androidaps.utils.FabricPrivacy;
+import info.nightscout.androidaps.utils.resources.ResourceHelper;
import io.reactivex.disposables.CompositeDisposable;
import io.reactivex.schedulers.Schedulers;
-public class PairingProgressDialog extends DialogFragment {
+public class PairingProgressDialog extends DaggerDialogFragment {
+
+ @Inject ResourceHelper resourceHelper;
+ @Inject RxBusWrapper rxBus;
+ @Inject FabricPrivacy fabricPrivacy;
+
private CompositeDisposable disposable = new CompositeDisposable();
private TextView statusView;
@@ -36,48 +42,28 @@ public class PairingProgressDialog extends DialogFragment {
private static boolean pairingEnded = false;
- private static Handler sHandler;
- private static HandlerThread sHandlerThread;
+ private static Handler handler;
+ private static HandlerThread handlerThread;
+
+ private static Runnable runnable;
public PairingProgressDialog() {
super();
// Required empty public constructor
- if (sHandlerThread == null) {
- sHandlerThread = new HandlerThread(PairingProgressDialog.class.getSimpleName());
- sHandlerThread.start();
- sHandler = new Handler(sHandlerThread.getLooper());
+ if (handlerThread == null) {
+ handlerThread = new HandlerThread(PairingProgressDialog.class.getSimpleName());
+ handlerThread.start();
+ handler = new Handler(handlerThread.getLooper());
}
- }
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- View view = inflater.inflate(R.layout.danars_pairingprogressdialog, container, false);
-
- getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
- getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
- setCancelable(false);
- getDialog().setCanceledOnTouchOutside(false);
-
- statusView = view.findViewById(R.id.danars_pairingprogress_status);
- progressBar = view.findViewById(R.id.danars_pairingprogress_progressbar);
- button = view.findViewById(R.id.ok);
-
- progressBar.setMax(100);
- progressBar.setProgress(0);
- statusView.setText(MainApp.gs(R.string.waitingforpairing));
- button.setVisibility(View.GONE);
- button.setOnClickListener(v -> dismiss());
-
- sHandler.post(() -> {
+ runnable = () -> {
for (int i = 0; i < 20; i++) {
if (pairingEnded) {
Activity activity = getActivity();
if (activity != null) {
activity.runOnUiThread(() -> {
progressBar.setProgress(100);
- statusView.setText(R.string.pairingok);
+ statusView.setText(R.string.danars_pairingok);
try {
Thread.sleep(1000);
} catch (InterruptedException ignored) {
@@ -98,21 +84,40 @@ public class PairingProgressDialog extends DialogFragment {
if (activity != null) {
activity.runOnUiThread(() -> {
progressBar.setProgress(100);
- statusView.setText(R.string.pairingtimedout);
+ statusView.setText(R.string.danars_pairingtimedout);
button.setVisibility(View.VISIBLE);
});
}
- });
+ };
+ }
+
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container,
+ Bundle savedInstanceState) {
+ View view = inflater.inflate(R.layout.danars_pairingprogressdialog, container, false);
+
+ getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
+ getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
+ setCancelable(false);
+ getDialog().setCanceledOnTouchOutside(false);
+
+ statusView = view.findViewById(R.id.danars_pairingprogress_status);
+ progressBar = view.findViewById(R.id.danars_pairingprogress_progressbar);
+ button = view.findViewById(R.id.ok);
+
+ setViews();
+
return view;
}
@Override
public void onResume() {
super.onResume();
- disposable.add(RxBus.Companion.getINSTANCE()
+ disposable.add(rxBus
.toObservable(EventDanaRSPairingSuccess.class)
.observeOn(Schedulers.io())
- .subscribe(event -> pairingEnded = true, exception -> FabricPrivacy.getInstance().logException(exception))
+ .subscribe(event -> pairingEnded = true, fabricPrivacy::logException)
);
if (pairingEnded) dismiss();
getDialog().getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
@@ -132,6 +137,20 @@ public class PairingProgressDialog extends DialogFragment {
disposable.clear();
}
+ private void setViews() {
+ progressBar.setMax(100);
+ progressBar.setProgress(0);
+ statusView.setText(resourceHelper.gs(R.string.danars_waitingforpairing));
+ button.setVisibility(View.GONE);
+ button.setOnClickListener(v -> dismiss());
+ handler.post(runnable);
+ }
+
+ public void resetToNewPairing() {
+ handler.removeCallbacks(runnable);
+ setViews();
+ }
+
public PairingProgressDialog setHelperActivity(PairingHelperActivity activity) {
this.helperActivity = activity;
return this;
diff --git a/app/src/main/java/com/cozmo/danar/util/BleCommandUtil.java b/danars/src/main/java/info/nightscout/androidaps/danars/encryption/BleEncryption.java
similarity index 68%
rename from app/src/main/java/com/cozmo/danar/util/BleCommandUtil.java
rename to danars/src/main/java/info/nightscout/androidaps/danars/encryption/BleEncryption.java
index a417b379e8..fbb441e223 100644
--- a/app/src/main/java/com/cozmo/danar/util/BleCommandUtil.java
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/encryption/BleEncryption.java
@@ -1,10 +1,18 @@
-package com.cozmo.danar.util;
+package info.nightscout.androidaps.danars.encryption;
import android.content.Context;
-import info.nightscout.androidaps.MainApp;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+@Singleton
+public class BleEncryption {
+ private Context context;
+
+ @Inject BleEncryption(Context context) {
+ this.context = context;
+ }
-public class BleCommandUtil {
public static final int DANAR_PACKET__TYPE_ENCRYPTION_REQUEST = 0x01;
public static final int DANAR_PACKET__TYPE_ENCRYPTION_RESPONSE = 0x02;
public static final int DANAR_PACKET__TYPE_COMMAND = 0xA1;
@@ -12,10 +20,13 @@ public class BleCommandUtil {
public static final int DANAR_PACKET__TYPE_NOTIFY = 0xC3;
public static final int DANAR_PACKET__OPCODE_ENCRYPTION__PUMP_CHECK = 0x00;
+ public static final int DANAR_PACKET__OPCODE_ENCRYPTION__TIME_INFORMATION = 0x01;
public static final int DANAR_PACKET__OPCODE_ENCRYPTION__CHECK_PASSKEY = 0xD0;
public static final int DANAR_PACKET__OPCODE_ENCRYPTION__PASSKEY_REQUEST = 0xD1;
public static final int DANAR_PACKET__OPCODE_ENCRYPTION__PASSKEY_RETURN = 0xD2;
- public static final int DANAR_PACKET__OPCODE_ENCRYPTION__TIME_INFORMATION = 0x01;
+ // Easy Mode
+ public static final int DANAR_PACKET__OPCODE_ENCRYPTION__GET_PUMP_CHECK = 0xF3;
+ public static final int DANAR_PACKET__OPCODE_ENCRYPTION__GET_EASYMENU_CHECK = 0xF4;
public static final int DANAR_PACKET__OPCODE_NOTIFY__DELIVERY_COMPLETE = 0x01;
public static final int DANAR_PACKET__OPCODE_NOTIFY__DELIVERY_RATE_DISPLAY = 0x02;
@@ -64,6 +75,8 @@ public class BleCommandUtil {
public static final int DANAR_PACKET__OPCODE_BOLUS__SET_CIR_CF_ARRAY = 0x4F;
public static final int DANAR_PACKET__OPCODE_BOLUS__GET_BOLUS_OPTION = 0x50;
public static final int DANAR_PACKET__OPCODE_BOLUS__SET_BOLUS_OPTION = 0x51;
+ public static final int DANAR_PACKET__OPCODE_BOLUS__GET_24_CIR_CF_ARRAY = 0x52;
+ public static final int DANAR_PACKET__OPCODE_BOLUS__SET_24_CIR_CF_ARRAY = 0x53;
public static final int DANAR_PACKET__OPCODE_BASAL__SET_TEMPORARY_BASAL = 0x60;
public static final int DANAR_PACKET__OPCODE_BASAL__TEMPORARY_BASAL_STATE = 0x61;
@@ -86,35 +99,60 @@ public class BleCommandUtil {
public static final int DANAR_PACKET__OPCODE__APS_HISTORY_EVENTS = 0xC2;
public static final int DANAR_PACKET__OPCODE__APS_SET_EVENT_HISTORY = 0xC3;
+ // v3 specific
+ public static final int DANAR_PACKET__OPCODE_REVIEW__GET_PUMP_DEC_RATIO = 0x80;
+ public static final int DANAR_PACKET__OPCODE_GENERAL__GET_SHIPPING_VERSION = 0x81;
+
+ // Easy Mode
+ public static final int DANAR_PACKET__OPCODE_OPTION__GET_EASY_MENU_OPTION = 0x74;
+ public static final int DANAR_PACKET__OPCODE_OPTION__SET_EASY_MENU_OPTION = 0x75;
+ public static final int DANAR_PACKET__OPCODE_OPTION__GET_EASY_MENU_STATUS = 0x76;
+ public static final int DANAR_PACKET__OPCODE_OPTION__SET_EASY_MENU_STATUS = 0x77;
+ public static final int DANAR_PACKET__OPCODE_OPTION__GET_PUMP_UTC_AND_TIME_ZONE = 0x78;
+ public static final int DANAR_PACKET__OPCODE_OPTION__SET_PUMP_UTC_AND_TIME_ZONE = 0x79;
+ public static final int DANAR_PACKET__OPCODE_OPTION__GET_PUMP_TIME_ZONE = 0x7A;
+ public static final int DANAR_PACKET__OPCODE_OPTION__SET_PUMP_TIME_ZONE = 0x7B;
+
public static final int DANAR_PACKET__OPCODE_ETC__SET_HISTORY_SAVE = 0xE0;
public static final int DANAR_PACKET__OPCODE_ETC__KEEP_CONNECTION = 0xFF;
static {
- System.loadLibrary("BleCommandUtil");
+ System.loadLibrary("BleEncryption");
}
- private static native byte[] getEncryptedPacketJni(Object context, int opcode, byte[] bytes, String deviceName);
+ private static native byte[] encryptPacketJni(Object context, int opcode, byte[] bytes, String deviceName);
- private static native byte[] getDecryptedPacketJni(Object context, byte[] bytes);
+ private static native byte[] decryptPacketJni(Object context, byte[] bytes);
- // ---------------------------------------------------------
+ private static native void setPairingKeysJni(byte[] pairingKey, byte[] randomPairingKey, byte randomSyncKey);
- private static BleCommandUtil mInstance = null;
+ private static native void setEnhancedEncryptionJni(boolean isSecurityVersion);
- public static BleCommandUtil getInstance() {
- if (mInstance == null) {
- mInstance = new BleCommandUtil();
- }
- return mInstance;
- }
+ private static native byte[] encryptSecondLevelPacketJni(Object context, byte[] bytes);
- // ---------------------------------------------------------
+ private static native byte[] decryptSecondLevelPacketJni(Object context, byte[] bytes);
public byte[] getEncryptedPacket(int opcode, byte[] bytes, String deviceName) {
- return getEncryptedPacketJni(MainApp.instance().getApplicationContext(), opcode, bytes, deviceName);
+ return encryptPacketJni(context, opcode, bytes, deviceName);
}
public byte[] getDecryptedPacket(byte[] bytes) {
- return getDecryptedPacketJni(MainApp.instance().getApplicationContext(), bytes);
+ return decryptPacketJni(context, bytes);
+ }
+
+ public void setPairingKeys(byte[] pairingKey, byte[] randomPairingKey, byte randomSyncKey) {
+ setPairingKeysJni(pairingKey, randomPairingKey, randomSyncKey);
+ }
+
+ public void setEnhancedEncryption(boolean isSecureVersion) {
+ setEnhancedEncryptionJni(isSecureVersion);
+ }
+
+ public byte[] encryptSecondLevelPacket(byte[] bytes) {
+ return encryptSecondLevelPacketJni(context, bytes);
+ }
+
+ public byte[] decryptSecondLevelPacket(byte[] bytes) {
+ return decryptSecondLevelPacketJni(context, bytes);
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/events/EventDanaRSDeviceChange.kt b/danars/src/main/java/info/nightscout/androidaps/danars/events/EventDanaRSDeviceChange.kt
similarity index 58%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/events/EventDanaRSDeviceChange.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/events/EventDanaRSDeviceChange.kt
index 8b87d59ec1..3d7a0789d7 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/events/EventDanaRSDeviceChange.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/events/EventDanaRSDeviceChange.kt
@@ -1,4 +1,4 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.events
+package info.nightscout.androidaps.danars.events
import info.nightscout.androidaps.events.Event
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/events/EventDanaRSPairingSuccess.kt b/danars/src/main/java/info/nightscout/androidaps/danars/events/EventDanaRSPairingSuccess.kt
similarity index 59%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/events/EventDanaRSPairingSuccess.kt
rename to danars/src/main/java/info/nightscout/androidaps/danars/events/EventDanaRSPairingSuccess.kt
index 6e0379a4d3..605bf347ea 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/danaRS/events/EventDanaRSPairingSuccess.kt
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/events/EventDanaRSPairingSuccess.kt
@@ -1,4 +1,4 @@
-package info.nightscout.androidaps.plugins.pump.danaRS.events
+package info.nightscout.androidaps.danars.events
import info.nightscout.androidaps.events.Event
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/services/BLEComm.kt b/danars/src/main/java/info/nightscout/androidaps/danars/services/BLEComm.kt
new file mode 100644
index 0000000000..cc24cf5c22
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/services/BLEComm.kt
@@ -0,0 +1,738 @@
+package info.nightscout.androidaps.danars.services
+
+import android.bluetooth.*
+import android.content.Context
+import android.content.Intent
+import android.os.SystemClock
+import android.util.Base64
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.danars.R
+import info.nightscout.androidaps.events.EventPumpStatusChanged
+import info.nightscout.androidaps.logging.AAPSLogger
+import info.nightscout.androidaps.logging.LTag
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
+import info.nightscout.androidaps.plugins.general.nsclient.NSUpload
+import info.nightscout.androidaps.plugins.general.overview.events.EventDismissNotification
+import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification
+import info.nightscout.androidaps.plugins.general.overview.notifications.Notification
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.danars.DanaRSPlugin
+import info.nightscout.androidaps.danars.activities.EnterPinActivity
+import info.nightscout.androidaps.danars.activities.PairingHelperActivity
+import info.nightscout.androidaps.danars.comm.DanaRSMessageHashTable
+import info.nightscout.androidaps.danars.comm.DanaRS_Packet
+import info.nightscout.androidaps.danars.comm.DanaRS_Packet_Etc_Keep_Connection
+import info.nightscout.androidaps.danars.encryption.BleEncryption
+import info.nightscout.androidaps.danars.events.EventDanaRSPairingSuccess
+import info.nightscout.androidaps.utils.T
+import info.nightscout.androidaps.utils.ToastUtils
+import info.nightscout.androidaps.utils.extensions.notify
+import info.nightscout.androidaps.utils.extensions.waitMillis
+import info.nightscout.androidaps.utils.resources.ResourceHelper
+import info.nightscout.androidaps.utils.sharedPreferences.SP
+import java.util.*
+import java.util.concurrent.ScheduledFuture
+import javax.inject.Inject
+import javax.inject.Singleton
+
+@Singleton
+class BLEComm @Inject internal constructor(
+ private val injector: HasAndroidInjector,
+ private val aapsLogger: AAPSLogger,
+ private val resourceHelper: ResourceHelper,
+ private val context: Context,
+ private val rxBus: RxBusWrapper,
+ private val sp: SP,
+ private val danaRSMessageHashTable: DanaRSMessageHashTable,
+ private val danaPump: DanaPump,
+ private val danaRSPlugin: DanaRSPlugin,
+ private val bleEncryption: BleEncryption,
+ private val nsUpload: NSUpload
+) {
+
+ companion object {
+ private const val WRITE_DELAY_MILLIS: Long = 50
+ private const val UART_READ_UUID = "0000fff1-0000-1000-8000-00805f9b34fb"
+ private const val UART_WRITE_UUID = "0000fff2-0000-1000-8000-00805f9b34fb"
+
+ private const val PACKET_START_BYTE = 0xA5.toByte()
+ private const val PACKET_END_BYTE = 0x5A.toByte()
+ }
+
+ private var scheduledDisconnection: ScheduledFuture<*>? = null
+ private var processedMessage: DanaRS_Packet? = null
+ private val mSendQueue = ArrayList()
+ private var bluetoothManager: BluetoothManager? = null
+ private var bluetoothAdapter: BluetoothAdapter? = null
+ private var connectDeviceName: String? = null
+ private var bluetoothGatt: BluetoothGatt? = null
+
+ private var v3Encryption: Boolean = false
+ set(newValue) {
+ bleEncryption.setEnhancedEncryption(newValue)
+ field = newValue
+ }
+ private var isEasyMode: Boolean = false
+ private var isUnitUD: Boolean = false
+
+ var isConnected = false
+ var isConnecting = false
+ private var encryptedDataRead = false
+ private var encryptedCommandSent = false
+ private var uartRead: BluetoothGattCharacteristic? = null
+ private var uartWrite: BluetoothGattCharacteristic? = null
+
+ @Synchronized
+ fun connect(from: String, address: String?): Boolean {
+ aapsLogger.debug(LTag.PUMPBTCOMM, "Initializing BLEComm.")
+ if (bluetoothManager == null) {
+ bluetoothManager = context.getSystemService(Context.BLUETOOTH_SERVICE) as BluetoothManager
+ if (bluetoothManager == null) {
+ aapsLogger.error("Unable to initialize BluetoothManager.")
+ return false
+ }
+ }
+ bluetoothAdapter = bluetoothManager?.adapter
+ if (bluetoothAdapter == null) {
+ aapsLogger.error("Unable to obtain a BluetoothAdapter.")
+ return false
+ }
+
+ if (address == null) {
+ aapsLogger.error("unspecified address.")
+ return false
+ }
+
+ isConnected = false
+ v3Encryption = false
+ encryptedDataRead = false
+ encryptedCommandSent = false
+ isConnecting = true
+ val device = bluetoothAdapter?.getRemoteDevice(address)
+ if (device == null) {
+ aapsLogger.error("Device not found. Unable to connect from: $from")
+ return false
+ }
+ aapsLogger.debug(LTag.PUMPBTCOMM, "Trying to create a new connection from: $from")
+ connectDeviceName = device.name
+ bluetoothGatt = device.connectGatt(context, false, mGattCallback)
+ setCharacteristicNotification(uartReadBTGattChar, true)
+ return true
+ }
+
+ @Synchronized
+ fun stopConnecting() {
+ isConnecting = false
+ }
+
+ @Synchronized
+ fun disconnect(from: String) {
+ aapsLogger.debug(LTag.PUMPBTCOMM, "disconnect from: $from")
+
+ if (!encryptedDataRead && encryptedCommandSent && v3Encryption) {
+ // there was no response from pump after started encryption
+ // assume pairing keys are invalid
+ aapsLogger.error("Clearing pairing keys !!!")
+ sp.remove(resourceHelper.gs(R.string.key_danars_v3_randompairingkey) + danaRSPlugin.mDeviceName)
+ sp.remove(resourceHelper.gs(R.string.key_danars_v3_pairingkey) + danaRSPlugin.mDeviceName)
+ sp.remove(resourceHelper.gs(R.string.key_danars_v3_randomsynckey) + danaRSPlugin.mDeviceName)
+ ToastUtils.showToastInUiThread(context, R.string.invalidpairing)
+ danaRSPlugin.changePump()
+ }
+ // cancel previous scheduled disconnection to prevent closing upcoming connection
+ scheduledDisconnection?.cancel(false)
+ scheduledDisconnection = null
+
+ if (bluetoothAdapter == null || bluetoothGatt == null) {
+ aapsLogger.error("disconnect not possible: (mBluetoothAdapter == null) " + (bluetoothAdapter == null))
+ aapsLogger.error("disconnect not possible: (mBluetoothGatt == null) " + (bluetoothGatt == null))
+ return
+ }
+ setCharacteristicNotification(uartReadBTGattChar, false)
+ bluetoothGatt?.disconnect()
+ isConnected = false
+ encryptedDataRead = false
+ encryptedCommandSent = false
+ SystemClock.sleep(2000)
+ }
+
+ @Synchronized fun close() {
+ aapsLogger.debug(LTag.PUMPBTCOMM, "BluetoothAdapter close")
+ bluetoothGatt?.close()
+ bluetoothGatt = null
+ }
+
+ private val mGattCallback: BluetoothGattCallback = object : BluetoothGattCallback() {
+ override fun onConnectionStateChange(gatt: BluetoothGatt, status: Int, newState: Int) {
+ onConnectionStateChangeSynchronized(gatt, newState) // call it synchronized
+ }
+
+ override fun onServicesDiscovered(gatt: BluetoothGatt, status: Int) {
+ aapsLogger.debug(LTag.PUMPBTCOMM, "onServicesDiscovered")
+ if (status == BluetoothGatt.GATT_SUCCESS) {
+ findCharacteristic()
+ }
+ sendConnect()
+ // 1st message sent to pump after connect
+ }
+
+ override fun onCharacteristicRead(gatt: BluetoothGatt, characteristic: BluetoothGattCharacteristic, status: Int) {
+ // for v3 after initial handshake it's encrypted - useless
+ // aapsLogger.debug(LTag.PUMPBTCOMM, "onCharacteristicRead: " + DanaRS_Packet.toHexString(characteristic.value))
+ readDataParsing(characteristic.value)
+ }
+
+ override fun onCharacteristicChanged(gatt: BluetoothGatt, characteristic: BluetoothGattCharacteristic) {
+ // for v3 after initial handshake it's encrypted - useless
+ // aapsLogger.debug(LTag.PUMPBTCOMM, "onCharacteristicChanged: " + DanaRS_Packet.toHexString(characteristic.value))
+ readDataParsing(characteristic.value)
+ }
+
+ override fun onCharacteristicWrite(gatt: BluetoothGatt, characteristic: BluetoothGattCharacteristic, status: Int) {
+ // for v3 after initial handshake it's encrypted - useless
+ // aapsLogger.debug(LTag.PUMPBTCOMM, "onCharacteristicWrite: " + DanaRS_Packet.toHexString(characteristic.value))
+ Thread(Runnable {
+ synchronized(mSendQueue) {
+ // after message sent, check if there is the rest of the message waiting and send it
+ if (mSendQueue.size > 0) {
+ val bytes = mSendQueue[0]
+ mSendQueue.removeAt(0)
+ writeCharacteristicNoResponse(uartWriteBTGattChar, bytes)
+ }
+ }
+ }).start()
+ }
+ }
+
+ @Synchronized
+ private fun setCharacteristicNotification(characteristic: BluetoothGattCharacteristic?, enabled: Boolean) {
+ aapsLogger.debug(LTag.PUMPBTCOMM, "setCharacteristicNotification")
+ if (bluetoothAdapter == null || bluetoothGatt == null) {
+ aapsLogger.error("BluetoothAdapter not initialized_ERROR")
+ isConnecting = false
+ isConnected = false
+ encryptedDataRead = false
+ encryptedCommandSent = false
+ return
+ }
+ bluetoothGatt?.setCharacteristicNotification(characteristic, enabled)
+ }
+
+ @Synchronized
+ private fun writeCharacteristicNoResponse(characteristic: BluetoothGattCharacteristic, data: ByteArray) {
+ Thread(Runnable {
+ SystemClock.sleep(WRITE_DELAY_MILLIS)
+ if (bluetoothAdapter == null || bluetoothGatt == null) {
+ aapsLogger.error("BluetoothAdapter not initialized_ERROR")
+ isConnecting = false
+ isConnected = false
+ encryptedDataRead = false
+ encryptedCommandSent = false
+ return@Runnable
+ }
+ characteristic.value = data
+ characteristic.writeType = BluetoothGattCharacteristic.WRITE_TYPE_NO_RESPONSE
+ //aapsLogger.debug("writeCharacteristic:" + DanaRS_Packet.toHexString(data))
+ bluetoothGatt?.writeCharacteristic(characteristic)
+ }).start()
+ SystemClock.sleep(50)
+ }
+
+ private val uartReadBTGattChar: BluetoothGattCharacteristic
+ get() = uartRead
+ ?: BluetoothGattCharacteristic(UUID.fromString(UART_READ_UUID), BluetoothGattCharacteristic.PROPERTY_READ or BluetoothGattCharacteristic.PROPERTY_NOTIFY, 0).also { uartRead = it }
+
+ private val uartWriteBTGattChar: BluetoothGattCharacteristic
+ get() = uartWrite
+ ?: BluetoothGattCharacteristic(UUID.fromString(UART_WRITE_UUID), BluetoothGattCharacteristic.PROPERTY_WRITE_NO_RESPONSE, 0).also { uartWrite = it }
+
+ private fun getSupportedGattServices(): List? {
+ aapsLogger.debug(LTag.PUMPBTCOMM, "getSupportedGattServices")
+ if (bluetoothAdapter == null || bluetoothGatt == null) {
+ aapsLogger.error("BluetoothAdapter not initialized_ERROR")
+ isConnecting = false
+ isConnected = false
+ encryptedDataRead = false
+ encryptedCommandSent = false
+ return null
+ }
+ return bluetoothGatt?.services
+ }
+
+ private fun findCharacteristic() {
+ val gattServices = getSupportedGattServices() ?: return
+ var uuid: String
+ for (gattService in gattServices) {
+ val gattCharacteristics = gattService.characteristics
+ for (gattCharacteristic in gattCharacteristics) {
+ uuid = gattCharacteristic.uuid.toString()
+ if (UART_READ_UUID == uuid) {
+ uartRead = gattCharacteristic
+ setCharacteristicNotification(uartRead, true)
+ }
+ if (UART_WRITE_UUID == uuid) {
+ uartWrite = gattCharacteristic
+ }
+ }
+ }
+ }
+
+ @Synchronized
+ private fun onConnectionStateChangeSynchronized(gatt: BluetoothGatt, newState: Int) {
+ aapsLogger.debug(LTag.PUMPBTCOMM, "onConnectionStateChange")
+ if (newState == BluetoothProfile.STATE_CONNECTED) {
+ gatt.discoverServices()
+ } else if (newState == BluetoothProfile.STATE_DISCONNECTED) {
+ close()
+ isConnected = false
+ isConnecting = false
+ v3Encryption = false
+ encryptedDataRead = false
+ encryptedCommandSent = false
+ rxBus.send(EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTED))
+ aapsLogger.debug(LTag.PUMPBTCOMM, "Device was disconnected " + gatt.device.name) //Device was disconnected
+ }
+ }
+
+ private val readBuffer = ByteArray(1024)
+ private var bufferLength = 0
+
+ private fun addToReadBuffer(buffer: ByteArray) {
+ //log.debug("addToReadBuffer " + DanaRS_Packet.toHexString(buffer));
+ if (buffer.isEmpty()) {
+ return
+ }
+ synchronized(readBuffer) {
+ // Append incoming data to input buffer
+ System.arraycopy(buffer, 0, readBuffer, bufferLength, buffer.size)
+ bufferLength += buffer.size
+ }
+ }
+
+ private fun readDataParsing(receivedData: ByteArray) {
+ //aapsLogger.debug(LTag.PUMPBTCOMM, "readDataParsing")
+ var startSignatureFound = false
+ var packetIsValid = false
+ var isProcessing: Boolean
+ isProcessing = true
+ var inputBuffer: ByteArray? = null
+
+ // decrypt 2nd level after successful connection
+ val incomingBuffer = if (v3Encryption && isConnected)
+ bleEncryption.decryptSecondLevelPacket(receivedData).also { encryptedDataRead = true }
+ else receivedData
+ addToReadBuffer(incomingBuffer)
+
+ while (isProcessing) {
+ var length = 0
+ synchronized(readBuffer) {
+
+ // Find packet start [A5 A5]
+ if (bufferLength >= 6) {
+ for (idxStartByte in 0 until bufferLength - 2) {
+ if (readBuffer[idxStartByte] == PACKET_START_BYTE && readBuffer[idxStartByte + 1] == PACKET_START_BYTE) {
+ if (idxStartByte > 0) {
+ // if buffer doesn't start with signature remove the leading trash
+ aapsLogger.debug(LTag.PUMPBTCOMM, "Shifting the input buffer by $idxStartByte bytes")
+ System.arraycopy(readBuffer, idxStartByte, readBuffer, 0, bufferLength - idxStartByte)
+ bufferLength -= idxStartByte
+ }
+ startSignatureFound = true
+ break
+ }
+ }
+ }
+ // A5 A5 LEN TYPE CODE PARAMS CHECKSUM1 CHECKSUM2 5A 5A
+ // ^---- LEN -----^
+ // total packet length 2 + 1 + readBuffer[2] + 2 + 2
+ if (startSignatureFound) {
+ length = readBuffer[2].toInt()
+ // test if there is enough data loaded
+ if (length + 7 > bufferLength) return
+ // Verify packed end [5A 5A]
+ if (readBuffer[length + 5] == PACKET_END_BYTE && readBuffer[length + 6] == PACKET_END_BYTE) {
+ packetIsValid = true
+ }
+ }
+ if (packetIsValid) {
+ inputBuffer = ByteArray(length + 7)
+ // copy packet to input buffer
+ System.arraycopy(readBuffer, 0, inputBuffer, 0, length + 7)
+ // Cut off the message from readBuffer
+ try {
+ System.arraycopy(readBuffer, length + 7, readBuffer, 0, bufferLength - (length + 7))
+ } catch (e: Exception) {
+ aapsLogger.error("length: " + length + "bufferLength: " + bufferLength)
+ throw e
+ }
+ bufferLength -= length + 7
+ // now we have encrypted packet in inputBuffer
+ }
+ }
+ if (packetIsValid) {
+ // decrypt the packet
+ bleEncryption.getDecryptedPacket(inputBuffer)?.let { decryptedBuffer ->
+ if (decryptedBuffer[0] == BleEncryption.DANAR_PACKET__TYPE_ENCRYPTION_RESPONSE.toByte()) {
+ when (decryptedBuffer[1]) {
+ // 1st packet exchange
+ BleEncryption.DANAR_PACKET__OPCODE_ENCRYPTION__PUMP_CHECK.toByte() ->
+ processConnectResponse(decryptedBuffer)
+
+ BleEncryption.DANAR_PACKET__OPCODE_ENCRYPTION__TIME_INFORMATION.toByte() ->
+ processEncryptionResponse(decryptedBuffer)
+
+ BleEncryption.DANAR_PACKET__OPCODE_ENCRYPTION__CHECK_PASSKEY.toByte() ->
+ processPasskeyCheck(decryptedBuffer)
+
+ BleEncryption.DANAR_PACKET__OPCODE_ENCRYPTION__PASSKEY_REQUEST.toByte() ->
+ processPairingRequest(decryptedBuffer)
+
+ BleEncryption.DANAR_PACKET__OPCODE_ENCRYPTION__PASSKEY_RETURN.toByte() ->
+ processPairingRequest2(decryptedBuffer)
+
+ BleEncryption.DANAR_PACKET__OPCODE_ENCRYPTION__GET_PUMP_CHECK.toByte() -> {
+ // not easy mode, request time info
+ if (decryptedBuffer[2] == 0x05.toByte()) sendTimeInfo()
+ // easy mode
+ else sendEasyMenuCheck()
+ }
+
+ BleEncryption.DANAR_PACKET__OPCODE_ENCRYPTION__GET_EASYMENU_CHECK.toByte() ->
+ processEasyMenuCheck(decryptedBuffer)
+ }
+
+ } else {
+ // Retrieve message code from received buffer and last message sent
+ processMessage(decryptedBuffer)
+ }
+ } ?: throw IllegalStateException("Null decryptedInputBuffer")
+ startSignatureFound = false
+ packetIsValid = false
+ if (bufferLength < 6) {
+ // stop the loop
+ isProcessing = false
+ }
+ } else {
+ // stop the loop
+ isProcessing = false
+ }
+ }
+ }
+
+ // 1st packet v1 v3 message sent to pump after connect
+ private fun sendConnect() {
+ val deviceName = connectDeviceName
+ if (deviceName == null || deviceName == "") {
+ val n = Notification(Notification.DEVICENOTPAIRED, resourceHelper.gs(R.string.pairfirst), Notification.URGENT)
+ rxBus.send(EventNewNotification(n))
+ return
+ }
+ val bytes = bleEncryption.getEncryptedPacket(BleEncryption.DANAR_PACKET__OPCODE_ENCRYPTION__PUMP_CHECK, null, deviceName)
+ aapsLogger.debug(LTag.PUMPBTCOMM, ">>>>> " + "ENCRYPTION__PUMP_CHECK (0x00)" + " " + DanaRS_Packet.toHexString(bytes))
+ writeCharacteristicNoResponse(uartWriteBTGattChar, bytes)
+ }
+
+ // 1st packet response
+ private fun processConnectResponse(decryptedBuffer: ByteArray) {
+ // response OK v1
+ if (decryptedBuffer.size == 4 && decryptedBuffer[2] == 'O'.toByte() && decryptedBuffer[3] == 'K'.toByte()) {
+ aapsLogger.debug(LTag.PUMPBTCOMM, "<<<<< " + "ENCRYPTION__PUMP_CHECK (OK)" + " " + DanaRS_Packet.toHexString(decryptedBuffer))
+ v3Encryption = false
+ danaPump.v3RSPump = false
+ // Grab pairing key from preferences if exists
+ val pairingKey = sp.getString(resourceHelper.gs(R.string.key_danars_pairingkey) + danaRSPlugin.mDeviceName, "")
+ aapsLogger.debug(LTag.PUMPBTCOMM, "Using stored pairing key: $pairingKey")
+ if (pairingKey.isNotEmpty()) {
+ sendPasskeyCheck(pairingKey)
+ } else {
+ // Stored pairing key does not exists, request pairing
+ sendPairingRequest()
+ }
+ // response OK v3
+ } else if (decryptedBuffer.size == 9 && decryptedBuffer[2] == 'O'.toByte() && decryptedBuffer[3] == 'K'.toByte()) {
+ // v3 2nd layer encryption
+ v3Encryption = true
+ danaPump.v3RSPump = true
+ val model = decryptedBuffer[5]
+ // val protocol = decryptedBuffer[7]
+ if (model == 0x05.toByte()) {
+ aapsLogger.debug(LTag.PUMPBTCOMM, "<<<<< " + "ENCRYPTION__PUMP_CHECK V3 (OK)" + " " + DanaRS_Packet.toHexString(decryptedBuffer))
+ // Dana RS Pump
+ val randomPairingKey = sp.getString(resourceHelper.gs(R.string.key_danars_v3_randompairingkey) + danaRSPlugin.mDeviceName, "")
+ val pairingKey = sp.getString(resourceHelper.gs(R.string.key_danars_v3_pairingkey) + danaRSPlugin.mDeviceName, "")
+ if (randomPairingKey.isNotEmpty() && pairingKey.isNotEmpty()) {
+ val randomSyncKey = String.format("%02x", decryptedBuffer[decryptedBuffer.size - 1])
+ sp.putString(resourceHelper.gs(R.string.key_danars_v3_randomsynckey) + danaRSPlugin.mDeviceName, randomSyncKey)
+ val tPairingKey = Base64.decode(pairingKey, Base64.DEFAULT)
+ val tRandomPairingKey = Base64.decode(randomPairingKey, Base64.DEFAULT)
+ var tRandomSyncKey: Byte = 0
+ if (randomSyncKey.isNotEmpty()) {
+ tRandomSyncKey = randomSyncKey.toInt(16).toByte()
+ }
+ bleEncryption.setPairingKeys(tPairingKey, tRandomPairingKey, tRandomSyncKey)
+ sendV3PairingInformation(0)
+ } else {
+ sendV3PairingInformation(1)
+ }
+ } else if (model == 0x06.toByte()) {
+ aapsLogger.debug(LTag.PUMPBTCOMM, "<<<<< " + "ENCRYPTION__PUMP_CHECK V3 EASY (OK)" + " " + DanaRS_Packet.toHexString(decryptedBuffer))
+ // Dana RS Easy
+ val bytes: ByteArray = bleEncryption.getEncryptedPacket(BleEncryption.DANAR_PACKET__OPCODE_ENCRYPTION__GET_EASYMENU_CHECK, null, null)
+ writeCharacteristicNoResponse(uartWriteBTGattChar, bytes)
+ }
+ // response PUMP : error status
+ } else if (decryptedBuffer.size == 6 && decryptedBuffer[2] == 'P'.toByte() && decryptedBuffer[3] == 'U'.toByte() && decryptedBuffer[4] == 'M'.toByte() && decryptedBuffer[5] == 'P'.toByte()) {
+ aapsLogger.debug(LTag.PUMPBTCOMM, "<<<<< " + "ENCRYPTION__PUMP_CHECK (PUMP)" + " " + DanaRS_Packet.toHexString(decryptedBuffer))
+ mSendQueue.clear()
+ rxBus.send(EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTED, resourceHelper.gs(R.string.pumperror)))
+ nsUpload.uploadError(resourceHelper.gs(R.string.pumperror))
+ val n = Notification(Notification.PUMPERROR, resourceHelper.gs(R.string.pumperror), Notification.URGENT)
+ rxBus.send(EventNewNotification(n))
+ // response BUSY: error status
+ } else if (decryptedBuffer.size == 6 && decryptedBuffer[2] == 'B'.toByte() && decryptedBuffer[3] == 'U'.toByte() && decryptedBuffer[4] == 'S'.toByte() && decryptedBuffer[5] == 'Y'.toByte()) {
+ aapsLogger.debug(LTag.PUMPBTCOMM, "<<<<< " + "ENCRYPTION__PUMP_CHECK (BUSY)" + " " + DanaRS_Packet.toHexString(decryptedBuffer))
+ mSendQueue.clear()
+ rxBus.send(EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTED, resourceHelper.gs(R.string.pumpbusy)))
+ } else {
+ // ERROR in response, wrong serial number
+ aapsLogger.debug(LTag.PUMPBTCOMM, "<<<<< " + "ENCRYPTION__PUMP_CHECK (ERROR)" + " " + DanaRS_Packet.toHexString(decryptedBuffer))
+ mSendQueue.clear()
+ rxBus.send(EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTED, resourceHelper.gs(R.string.connectionerror)))
+ sp.remove(resourceHelper.gs(R.string.key_danars_pairingkey) + danaRSPlugin.mDeviceName)
+ val n = Notification(Notification.WRONGSERIALNUMBER, resourceHelper.gs(R.string.wrongpassword), Notification.URGENT)
+ rxBus.send(EventNewNotification(n))
+ }
+ }
+
+ // 2nd packet v1 check passkey
+ private fun sendPasskeyCheck(pairingKey: String) {
+ val encodedPairingKey = DanaRS_Packet.hexToBytes(pairingKey)
+ val bytes = bleEncryption.getEncryptedPacket(BleEncryption.DANAR_PACKET__OPCODE_ENCRYPTION__CHECK_PASSKEY, encodedPairingKey, null)
+ aapsLogger.debug(LTag.PUMPBTCOMM, ">>>>> " + "ENCRYPTION__CHECK_PASSKEY" + " " + DanaRS_Packet.toHexString(bytes))
+ writeCharacteristicNoResponse(uartWriteBTGattChar, bytes)
+ }
+
+ // 2nd packet v1 response
+ private fun processPasskeyCheck(decryptedBuffer: ByteArray) {
+ aapsLogger.debug(LTag.PUMPBTCOMM, "<<<<< " + "ENCRYPTION__CHECK_PASSKEY" + " " + DanaRS_Packet.toHexString(decryptedBuffer))
+ // Paring is not requested, sending time info
+ if (decryptedBuffer[2] == 0x00.toByte()) sendTimeInfo()
+ // Pairing on pump is requested
+ else sendPairingRequest()
+ }
+
+ // 2nd packet v3
+ // 0x00 Start encryption, 0x01 Request pairing
+ private fun sendV3PairingInformation(requestNewPairing: Int) {
+ val params = byteArrayOf(requestNewPairing.toByte())
+ val bytes: ByteArray = bleEncryption.getEncryptedPacket(BleEncryption.DANAR_PACKET__OPCODE_ENCRYPTION__TIME_INFORMATION, params, null)
+ aapsLogger.debug(LTag.PUMPBTCOMM, ">>>>> " + "ENCRYPTION__TIME_INFORMATION" + " " + DanaRS_Packet.toHexString(bytes))
+ writeCharacteristicNoResponse(uartWriteBTGattChar, bytes)
+ }
+
+ // 2nd packet response
+ private fun processEncryptionResponse(decryptedBuffer: ByteArray) {
+ aapsLogger.debug(LTag.PUMPBTCOMM, "<<<<< " + "ENCRYPTION__TIME_INFORMATION " + /*message.getMessageName() + " " + */DanaRS_Packet.toHexString(decryptedBuffer))
+ if (v3Encryption) {
+ // decryptedBuffer[2] : 0x00 OK 0x01 Error, No pairing
+ if (decryptedBuffer[2] == 0x00.toByte()) {
+ val randomPairingKey = sp.getString(resourceHelper.gs(R.string.key_danars_v3_randompairingkey) + danaRSPlugin.mDeviceName, "")
+ val pairingKey = sp.getString(resourceHelper.gs(R.string.key_danars_v3_pairingkey) + danaRSPlugin.mDeviceName, "")
+ if (randomPairingKey.isNotEmpty() && pairingKey.isNotEmpty()) {
+ // expecting successful connect
+ isConnected = true
+ isConnecting = false
+ aapsLogger.debug(LTag.PUMPBTCOMM, "Connect !!")
+ // Send one message to confirm communication
+ } else {
+ context.startActivity(Intent(context, EnterPinActivity::class.java).also { it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) })
+ aapsLogger.debug(LTag.PUMPBTCOMM, "Request pairing keys !!")
+ }
+ } else {
+ sendV3PairingInformation(1)
+ }
+
+ } else {
+ val size = decryptedBuffer.size
+ var pass: Int = (decryptedBuffer[size - 1].toInt() and 0x000000FF shl 8) + (decryptedBuffer[size - 2].toInt() and 0x000000FF)
+ pass = pass xor 3463
+ danaPump.rsPassword = String.format("%04X", pass)
+ aapsLogger.debug(LTag.PUMPBTCOMM, "Pump user password: " + danaPump.rsPassword)
+ if (!danaPump.isRSPasswordOK) {
+ aapsLogger.error(LTag.PUMPBTCOMM, "Wrong pump password")
+ rxBus.send(EventNewNotification(Notification(Notification.WRONG_PUMP_PASSWORD, resourceHelper.gs(R.string.wrongpumppassword), Notification.URGENT)))
+ disconnect("WrongPassword")
+ SystemClock.sleep(T.mins(1).msecs())
+ } else {
+ rxBus.send(EventDismissNotification(Notification.WRONG_PUMP_PASSWORD))
+ rxBus.send(EventPumpStatusChanged(EventPumpStatusChanged.Status.CONNECTED))
+ isConnected = true
+ isConnecting = false
+ aapsLogger.debug(LTag.PUMPBTCOMM, "RS connected and status read")
+ }
+ }
+ }
+
+ // 3rd packet v1 existing pairing
+ private fun sendTimeInfo() {
+ val bytes = bleEncryption.getEncryptedPacket(BleEncryption.DANAR_PACKET__OPCODE_ENCRYPTION__TIME_INFORMATION, null, null)
+ aapsLogger.debug(LTag.PUMPBTCOMM, ">>>>> " + "ENCRYPTION__TIME_INFORMATION" + " " + DanaRS_Packet.toHexString(bytes))
+ writeCharacteristicNoResponse(uartWriteBTGattChar, bytes)
+ }
+
+ //2nd or 3rd packet v1 pairing doesn't exist
+ private fun sendPairingRequest() {
+ // Start activity which is waiting 20sec
+ // On pump pairing request is displayed and is waiting for conformation
+ context.startActivity(Intent(context, PairingHelperActivity::class.java).also { it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) })
+ val bytes = bleEncryption.getEncryptedPacket(BleEncryption.DANAR_PACKET__OPCODE_ENCRYPTION__PASSKEY_REQUEST, null, null)
+ aapsLogger.debug(LTag.PUMPBTCOMM, ">>>>> " + "ENCRYPTION__PASSKEY_REQUEST" + " " + DanaRS_Packet.toHexString(bytes))
+ writeCharacteristicNoResponse(uartWriteBTGattChar, bytes)
+ }
+
+ // 3rd packet v3 : only after entering PIN codes
+ fun finishV3Pairing() {
+ val randomPairingKey = sp.getString(resourceHelper.gs(R.string.key_danars_v3_randompairingkey) + danaRSPlugin.mDeviceName, "")
+ val pairingKey = sp.getString(resourceHelper.gs(R.string.key_danars_v3_pairingkey) + danaRSPlugin.mDeviceName, "")
+ if (randomPairingKey.isNotEmpty() && pairingKey.isNotEmpty()) {
+ val tPairingKey = Base64.decode(pairingKey, Base64.DEFAULT)
+ val tRandomPairingKey = Base64.decode(randomPairingKey, Base64.DEFAULT)
+ val tRandomSyncKey: Byte = 0
+ bleEncryption.setPairingKeys(tPairingKey, tRandomPairingKey, tRandomSyncKey)
+ sendV3PairingInformation(0)
+ } else throw java.lang.IllegalStateException("This should not be reached")
+ }
+
+ // 2nd or 3rd packet v1 response
+ private fun processPairingRequest(decryptedBuffer: ByteArray) {
+ aapsLogger.debug(LTag.PUMPBTCOMM, "<<<<< " + "ENCRYPTION__PASSKEY_REQUEST " + DanaRS_Packet.toHexString(decryptedBuffer))
+ if (decryptedBuffer[2] != 0x00.toByte()) {
+ disconnect("passkey request failed")
+ }
+ }
+
+ // 2nd or 3rd packet v1 response
+ private fun processPairingRequest2(decryptedBuffer: ByteArray) {
+ aapsLogger.debug(LTag.PUMPBTCOMM, "<<<<< " + "ENCRYPTION__PASSKEY_RETURN " + DanaRS_Packet.toHexString(decryptedBuffer))
+ // Paring is successful, sending time info
+ rxBus.send(EventDanaRSPairingSuccess())
+ sendTimeInfo()
+ val pairingKey = byteArrayOf(decryptedBuffer[2], decryptedBuffer[3])
+ // store pairing key to preferences
+ sp.putString(resourceHelper.gs(R.string.key_danars_pairingkey) + danaRSPlugin.mDeviceName, DanaRS_Packet.bytesToHex(pairingKey))
+ aapsLogger.debug(LTag.PUMPBTCOMM, "Got pairing key: " + DanaRS_Packet.bytesToHex(pairingKey))
+ }
+
+ // 3rd packet Easy menu pump
+ private fun sendEasyMenuCheck() {
+ val bytes: ByteArray = bleEncryption.getEncryptedPacket(BleEncryption.DANAR_PACKET__OPCODE_ENCRYPTION__GET_EASYMENU_CHECK, null, null)
+ writeCharacteristicNoResponse(uartWriteBTGattChar, bytes)
+ }
+
+ // 3rd packet Easy menu response
+ private fun processEasyMenuCheck(decryptedBuffer: ByteArray) {
+ isEasyMode = decryptedBuffer[2] == 0x01.toByte()
+ isUnitUD = decryptedBuffer[3] == 0x01.toByte()
+
+ // request time information
+ if (v3Encryption) sendV3PairingInformation(1)
+ else sendTimeInfo()
+ }
+
+ // the rest of packets
+ fun sendMessage(message: DanaRS_Packet) {
+ encryptedCommandSent = true
+ processedMessage = message
+ val command = byteArrayOf(message.type.toByte(), message.opCode.toByte())
+ val params = message.requestParams
+ aapsLogger.debug(LTag.PUMPBTCOMM, ">>>>> " + message.friendlyName + " " + DanaRS_Packet.toHexString(command) + " " + DanaRS_Packet.toHexString(params))
+ var bytes = bleEncryption.getEncryptedPacket(message.opCode, params, null)
+ if (v3Encryption)
+ bytes = bleEncryption.encryptSecondLevelPacket(bytes)
+ // If there is another message not completely sent, add to queue only
+ if (mSendQueue.size > 0) {
+ // Split to parts per 20 bytes max
+ while (true) {
+ if (bytes.size > 20) {
+ val addBytes = ByteArray(20)
+ System.arraycopy(bytes, 0, addBytes, 0, addBytes.size)
+ val reBytes = ByteArray(bytes.size - addBytes.size)
+ System.arraycopy(bytes, addBytes.size, reBytes, 0, reBytes.size)
+ bytes = reBytes
+ synchronized(mSendQueue) { mSendQueue.add(addBytes) }
+ } else {
+ synchronized(mSendQueue) { mSendQueue.add(bytes) }
+ break
+ }
+ }
+ } else {
+ if (bytes.size > 20) {
+ // Cut first 20 bytes
+ val sendBytes = ByteArray(20)
+ System.arraycopy(bytes, 0, sendBytes, 0, sendBytes.size)
+ var reBytes = ByteArray(bytes.size - sendBytes.size)
+ System.arraycopy(bytes, sendBytes.size, reBytes, 0, reBytes.size)
+ bytes = reBytes
+ // and send
+ writeCharacteristicNoResponse(uartWriteBTGattChar, sendBytes)
+ // The rest split to parts per 20 bytes max
+ while (true) {
+ if (bytes.size > 20) {
+ val addBytes = ByteArray(20)
+ System.arraycopy(bytes, 0, addBytes, 0, addBytes.size)
+ reBytes = ByteArray(bytes.size - addBytes.size)
+ System.arraycopy(bytes, addBytes.size, reBytes, 0, reBytes.size)
+ bytes = reBytes
+ synchronized(mSendQueue) { mSendQueue.add(addBytes) }
+ } else {
+ synchronized(mSendQueue) { mSendQueue.add(bytes) }
+ break
+ }
+ }
+ } else {
+ writeCharacteristicNoResponse(uartWriteBTGattChar, bytes)
+ }
+ }
+ // The rest from queue is send from onCharacteristicWrite (after sending 1st part)
+ synchronized(message) {
+ try {
+ message.waitMillis(5000)
+ } catch (e: InterruptedException) {
+ aapsLogger.error("sendMessage InterruptedException", e)
+ }
+ }
+
+ //SystemClock.sleep(200);
+ if (!message.isReceived) {
+ aapsLogger.warn(LTag.PUMPBTCOMM, "Reply not received " + message.friendlyName)
+ message.handleMessageNotReceived()
+ }
+ // verify encryption for v3
+ if (message is DanaRS_Packet_Etc_Keep_Connection)
+ if (!message.isReceived) disconnect("KeepAlive not received")
+ }
+
+ // process common packet response
+ private fun processMessage(decryptedBuffer: ByteArray) {
+ val originalCommand = processedMessage?.command ?: 0xFFFF
+ val receivedCommand = DanaRS_Packet(injector).getCommand(decryptedBuffer)
+ val message: DanaRS_Packet? = if (originalCommand == receivedCommand) {
+ // it's response to last message
+ processedMessage
+ } else {
+ // it's not response to last message, create new instance
+ danaRSMessageHashTable.findMessage(receivedCommand)
+ }
+ if (message != null) {
+ aapsLogger.debug(LTag.PUMPBTCOMM, "<<<<< " + message.friendlyName + " " + DanaRS_Packet.toHexString(decryptedBuffer))
+ // process received data
+ message.handleMessage(decryptedBuffer)
+ message.setReceived()
+ synchronized(message) {
+ // notify to sendMessage
+ message.notify()
+ }
+ } else aapsLogger.error("Unknown message received " + DanaRS_Packet.toHexString(decryptedBuffer))
+ }
+
+}
\ No newline at end of file
diff --git a/danars/src/main/java/info/nightscout/androidaps/danars/services/DanaRSService.kt b/danars/src/main/java/info/nightscout/androidaps/danars/services/DanaRSService.kt
new file mode 100644
index 0000000000..d4b14b1c5e
--- /dev/null
+++ b/danars/src/main/java/info/nightscout/androidaps/danars/services/DanaRSService.kt
@@ -0,0 +1,472 @@
+package info.nightscout.androidaps.danars.services
+
+import android.app.Service
+import android.content.Context
+import android.content.Intent
+import android.os.Binder
+import android.os.IBinder
+import android.os.SystemClock
+import dagger.android.DaggerService
+import dagger.android.HasAndroidInjector
+import info.nightscout.androidaps.Constants
+import info.nightscout.androidaps.activities.ErrorHelperActivity
+import info.nightscout.androidaps.dana.DanaPump
+import info.nightscout.androidaps.dana.events.EventDanaRNewStatus
+import info.nightscout.androidaps.danars.DanaRSPlugin
+import info.nightscout.androidaps.danars.R
+import info.nightscout.androidaps.danars.comm.*
+import info.nightscout.androidaps.data.Profile
+import info.nightscout.androidaps.data.PumpEnactResult
+import info.nightscout.androidaps.db.Treatment
+import info.nightscout.androidaps.dialogs.BolusProgressDialog
+import info.nightscout.androidaps.events.EventAppExit
+import info.nightscout.androidaps.events.EventInitializationChanged
+import info.nightscout.androidaps.events.EventProfileNeedsUpdate
+import info.nightscout.androidaps.events.EventPumpStatusChanged
+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.LTag
+import info.nightscout.androidaps.plugins.bus.RxBusWrapper
+import info.nightscout.androidaps.plugins.configBuilder.ConstraintChecker
+import info.nightscout.androidaps.plugins.general.nsclient.NSUpload
+import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotification
+import info.nightscout.androidaps.plugins.general.overview.events.EventOverviewBolusProgress
+import info.nightscout.androidaps.plugins.general.overview.notifications.Notification
+import info.nightscout.androidaps.plugins.pump.common.bolusInfo.DetailedBolusInfoStorage
+import info.nightscout.androidaps.queue.Callback
+import info.nightscout.androidaps.queue.commands.Command
+import info.nightscout.androidaps.utils.DateUtil
+import info.nightscout.androidaps.utils.FabricPrivacy
+import info.nightscout.androidaps.utils.T
+import info.nightscout.androidaps.utils.resources.ResourceHelper
+import info.nightscout.androidaps.utils.sharedPreferences.SP
+import io.reactivex.disposables.CompositeDisposable
+import io.reactivex.schedulers.Schedulers
+import org.joda.time.DateTime
+import org.joda.time.DateTimeZone
+import java.util.concurrent.TimeUnit
+import javax.inject.Inject
+import kotlin.math.abs
+import kotlin.math.min
+
+class DanaRSService : DaggerService() {
+ @Inject lateinit var injector: HasAndroidInjector
+ @Inject lateinit var aapsLogger: AAPSLogger
+ @Inject lateinit var rxBus: RxBusWrapper
+ @Inject lateinit var sp: SP
+ @Inject lateinit var resourceHelper: ResourceHelper
+ @Inject lateinit var profileFunction: ProfileFunction
+ @Inject lateinit var commandQueue: CommandQueueProvider
+ @Inject lateinit var context: Context
+ @Inject lateinit var danaRSPlugin: DanaRSPlugin
+ @Inject lateinit var danaPump: DanaPump
+ @Inject lateinit var danaRSMessageHashTable: DanaRSMessageHashTable
+ @Inject lateinit var activePlugin: ActivePluginProvider
+ @Inject lateinit var constraintChecker: ConstraintChecker
+ @Inject lateinit var detailedBolusInfoStorage: DetailedBolusInfoStorage
+ @Inject lateinit var bleComm: BLEComm
+ @Inject lateinit var fabricPrivacy: FabricPrivacy
+ @Inject lateinit var nsUpload: NSUpload
+ @Inject lateinit var dateUtil: DateUtil
+
+ private val disposable = CompositeDisposable()
+ private val mBinder: IBinder = LocalBinder()
+ private var lastHistoryFetched: Long = 0
+ private var lastApproachingDailyLimit: Long = 0
+
+ override fun onCreate() {
+ super.onCreate()
+ disposable.add(rxBus
+ .toObservable(EventAppExit::class.java)
+ .observeOn(Schedulers.io())
+ .subscribe({ stopSelf() }) { fabricPrivacy.logException(it) }
+ )
+ }
+
+ override fun onDestroy() {
+ disposable.clear()
+ super.onDestroy()
+ }
+
+ val isConnected: Boolean
+ get() = bleComm.isConnected
+
+ val isConnecting: Boolean
+ get() = bleComm.isConnecting
+
+ fun connect(from: String, address: String): Boolean {
+ return bleComm.connect(from, address)
+ }
+
+ fun stopConnecting() {
+ bleComm.stopConnecting()
+ }
+
+ fun disconnect(from: String) {
+ bleComm.disconnect(from)
+ }
+
+ fun sendMessage(message: DanaRS_Packet) {
+ bleComm.sendMessage(message)
+ }
+
+ fun readPumpStatus() {
+ try {
+ val now = System.currentTimeMillis()
+ val pump = activePlugin.activePump
+ rxBus.send(EventPumpStatusChanged(resourceHelper.gs(R.string.gettingpumpsettings)))
+ sendMessage(DanaRS_Packet_Etc_Keep_Connection(injector)) // test encryption for v3
+ sendMessage(DanaRS_Packet_General_Get_Shipping_Information(injector)) // serial no
+ sendMessage(DanaRS_Packet_General_Get_Pump_Check(injector)) // firmware
+ sendMessage(DanaRS_Packet_Basal_Get_Profile_Number(injector))
+ sendMessage(DanaRS_Packet_Bolus_Get_Bolus_Option(injector)) // isExtendedEnabled
+ sendMessage(DanaRS_Packet_Basal_Get_Basal_Rate(injector)) // basal profile, basalStep, maxBasal
+ sendMessage(DanaRS_Packet_Bolus_Get_Calculation_Information(injector)) // target
+ if (danaPump.profile24) sendMessage(DanaRS_Packet_Bolus_Get_24_CIR_CF_Array(injector))
+ else sendMessage(DanaRS_Packet_Bolus_Get_CIR_CF_Array(injector))
+ sendMessage(DanaRS_Packet_Option_Get_User_Option(injector)) // Getting user options
+ rxBus.send(EventPumpStatusChanged(resourceHelper.gs(R.string.gettingpumpstatus)))
+ sendMessage(DanaRS_Packet_General_Initial_Screen_Information(injector))
+ rxBus.send(EventPumpStatusChanged(resourceHelper.gs(R.string.gettingextendedbolusstatus)))
+ sendMessage(DanaRS_Packet_Bolus_Get_Extended_Bolus_State(injector))
+ rxBus.send(EventPumpStatusChanged(resourceHelper.gs(R.string.gettingbolusstatus)))
+ sendMessage(DanaRS_Packet_Bolus_Get_Step_Bolus_Information(injector)) // last bolus, bolusStep, maxBolus
+ rxBus.send(EventPumpStatusChanged(resourceHelper.gs(R.string.gettingtempbasalstatus)))
+ sendMessage(DanaRS_Packet_Basal_Get_Temporary_Basal_State(injector))
+ danaPump.lastConnection = System.currentTimeMillis()
+ val profile = profileFunction.getProfile()
+ if (profile != null && abs(danaPump.currentBasal - profile.basal) >= pump.pumpDescription.basalStep) {
+ rxBus.send(EventPumpStatusChanged(resourceHelper.gs(R.string.gettingpumpsettings)))
+ sendMessage(DanaRS_Packet_Basal_Get_Basal_Rate(injector)) // basal profile, basalStep, maxBasal
+ if (!pump.isThisProfileSet(profile) && !commandQueue.isRunning(Command.CommandType.BASAL_PROFILE)) {
+ rxBus.send(EventProfileNeedsUpdate())
+ }
+ }
+ rxBus.send(EventPumpStatusChanged(resourceHelper.gs(R.string.gettingpumptime)))
+ if (danaPump.usingUTC) sendMessage(DanaRS_Packet_Option_Get_Pump_UTC_And_TimeZone(injector))
+ else sendMessage(DanaRS_Packet_Option_Get_Pump_Time(injector))
+ var timeDiff = (danaPump.getPumpTime() - System.currentTimeMillis()) / 1000L
+ if (danaPump.getPumpTime() == 0L) {
+ // initial handshake was not successful
+ // de-initialize pump
+ danaPump.reset()
+ rxBus.send(EventDanaRNewStatus())
+ rxBus.send(EventInitializationChanged())
+ return
+ }
+ aapsLogger.debug(LTag.PUMPCOMM, "Pump time difference: $timeDiff seconds")
+ // phone timezone
+ val tz = DateTimeZone.getDefault()
+ val instant = DateTime.now().millis
+ val offsetInMilliseconds = tz.getOffset(instant).toLong()
+ val offset = TimeUnit.MILLISECONDS.toHours(offsetInMilliseconds).toInt()
+ if (abs(timeDiff) > 3 || danaPump.usingUTC && offset != danaPump.zoneOffset) {
+ if (abs(timeDiff) > 60 * 60 * 1.5) {
+ aapsLogger.debug(LTag.PUMPCOMM, "Pump time difference: $timeDiff seconds - large difference")
+ //If time-diff is very large, warn user until we can synchronize history readings properly
+ val i = Intent(context, ErrorHelperActivity::class.java)
+ i.putExtra("soundid", R.raw.error)
+ i.putExtra("status", resourceHelper.gs(R.string.largetimediff))
+ i.putExtra("title", resourceHelper.gs(R.string.largetimedifftitle))
+ i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+ context.startActivity(i)
+
+ //de-initialize pump
+ danaPump.reset()
+ rxBus.send(EventDanaRNewStatus())
+ rxBus.send(EventInitializationChanged())
+ return
+ } else {
+ if (danaPump.usingUTC) {
+ sendMessage(DanaRS_Packet_Option_Set_Pump_UTC_And_TimeZone(injector, DateUtil.now(), offset))
+ } else if (danaPump.protocol >= 6) { // can set seconds
+ sendMessage(DanaRS_Packet_Option_Set_Pump_Time(injector, DateUtil.now()))
+ } else {
+ waitForWholeMinute() // Dana can set only whole minute
+ // add 10sec to be sure we are over minute (will be cut off anyway)
+ sendMessage(DanaRS_Packet_Option_Set_Pump_Time(injector, DateUtil.now() + T.secs(10).msecs()))
+ }
+ if (danaPump.usingUTC) sendMessage(DanaRS_Packet_Option_Get_Pump_UTC_And_TimeZone(injector))
+ else sendMessage(DanaRS_Packet_Option_Get_Pump_Time(injector))
+ timeDiff = (danaPump.getPumpTime() - System.currentTimeMillis()) / 1000L
+ aapsLogger.debug(LTag.PUMPCOMM, "Pump time difference: $timeDiff seconds")
+ }
+ }
+ loadEvents()
+ rxBus.send(EventDanaRNewStatus())
+ rxBus.send(EventInitializationChanged())
+ //NSUpload.uploadDeviceStatus();
+ if (danaPump.dailyTotalUnits > danaPump.maxDailyTotalUnits * Constants.dailyLimitWarning) {
+ aapsLogger.debug(LTag.PUMPCOMM, "Approaching daily limit: " + danaPump.dailyTotalUnits + "/" + danaPump.maxDailyTotalUnits)
+ if (System.currentTimeMillis() > lastApproachingDailyLimit + 30 * 60 * 1000) {
+ val reportFail = Notification(Notification.APPROACHING_DAILY_LIMIT, resourceHelper.gs(R.string.approachingdailylimit), Notification.URGENT)
+ rxBus.send(EventNewNotification(reportFail))
+ nsUpload.uploadError(resourceHelper.gs(R.string.approachingdailylimit) + ": " + danaPump.dailyTotalUnits + "/" + danaPump.maxDailyTotalUnits + "U")
+ lastApproachingDailyLimit = System.currentTimeMillis()
+ }
+ }
+ } catch (e: Exception) {
+ aapsLogger.error(LTag.PUMPCOMM, "Unhandled exception", e)
+ }
+ aapsLogger.debug(LTag.PUMPCOMM, "Pump status loaded")
+ }
+
+ fun loadEvents(): PumpEnactResult {
+ if (!danaRSPlugin.isInitialized) {
+ val result = PumpEnactResult(injector).success(false)
+ result.comment = "pump not initialized"
+ return result
+ }
+ SystemClock.sleep(1000)
+ val msg: DanaRS_Packet_APS_History_Events
+ if (lastHistoryFetched == 0L) {
+ msg = DanaRS_Packet_APS_History_Events(injector, 0)
+ aapsLogger.debug(LTag.PUMPCOMM, "Loading complete event history")
+ } else {
+ msg = DanaRS_Packet_APS_History_Events(injector, lastHistoryFetched)
+ aapsLogger.debug(LTag.PUMPCOMM, "Loading event history from: " + dateUtil.dateAndTimeString(lastHistoryFetched))
+ }
+ sendMessage(msg)
+ while (!danaPump.historyDoneReceived && bleComm.isConnected) {
+ SystemClock.sleep(100)
+ }
+ lastHistoryFetched = if (danaPump.lastEventTimeLoaded != 0L) danaPump.lastEventTimeLoaded - T.mins(1).msecs() else 0
+ aapsLogger.debug(LTag.PUMPCOMM, "Events loaded")
+ danaPump.lastConnection = System.currentTimeMillis()
+ return PumpEnactResult(injector).success(true)
+ }
+
+ fun setUserSettings(): PumpEnactResult {
+ sendMessage(DanaRS_Packet_Option_Set_User_Option(injector))
+ return PumpEnactResult(injector).success(true)
+ }
+
+ fun bolus(insulin: Double, carbs: Int, carbTime: Long, t: Treatment): Boolean {
+ if (!isConnected) return false
+ if (BolusProgressDialog.stopPressed) return false
+ rxBus.send(EventPumpStatusChanged(resourceHelper.gs(R.string.startingbolus)))
+ val preferencesSpeed = sp.getInt(R.string.key_danars_bolusspeed, 0)
+ danaPump.bolusDone = false
+ danaPump.bolusingTreatment = t
+ danaPump.bolusAmountToBeDelivered = insulin
+ danaPump.bolusStopped = false
+ danaPump.bolusStopForced = false
+ danaPump.bolusProgressLastTimeStamp = DateUtil.now()
+ val start = DanaRS_Packet_Bolus_Set_Step_Bolus_Start(injector, insulin, preferencesSpeed)
+ if (carbs > 0) {
+// MsgSetCarbsEntry msg = new MsgSetCarbsEntry(carbTime, carbs); ####
+// sendMessage(msg);
+ val msgSetHistoryEntryV2 = DanaRS_Packet_APS_Set_Event_History(injector, DanaPump.CARBS, carbTime, carbs, 0)
+ sendMessage(msgSetHistoryEntryV2)
+ lastHistoryFetched = min(lastHistoryFetched, carbTime - T.mins(1).msecs())
+ }
+ val bolusStart = System.currentTimeMillis()
+ if (insulin > 0) {
+ if (!danaPump.bolusStopped) {
+ sendMessage(start)
+ } else {
+ t.insulin = 0.0
+ return false
+ }
+ while (!danaPump.bolusStopped && !start.failed && !danaPump.bolusDone) {
+ SystemClock.sleep(100)
+ if (System.currentTimeMillis() - danaPump.bolusProgressLastTimeStamp > 15 * 1000L) { // if i didn't receive status for more than 20 sec expecting broken comm
+ danaPump.bolusStopped = true
+ danaPump.bolusStopForced = true
+ aapsLogger.debug(LTag.PUMPCOMM, "Communication stopped")
+ }
+ }
+ }
+ val bolusingEvent = EventOverviewBolusProgress
+ bolusingEvent.t = t
+ bolusingEvent.percent = 99
+ danaPump.bolusingTreatment = null
+ var speed = 12
+ when (preferencesSpeed) {
+ 0 -> speed = 12
+ 1 -> speed = 30
+ 2 -> speed = 60
+ }
+ val bolusDurationInMSec = (insulin * speed * 1000).toLong()
+ val expectedEnd = bolusStart + bolusDurationInMSec + 2000
+ while (System.currentTimeMillis() < expectedEnd) {
+ val waitTime = expectedEnd - System.currentTimeMillis()
+ bolusingEvent.status = String.format(resourceHelper.gs(R.string.waitingforestimatedbolusend), waitTime / 1000)
+ rxBus.send(bolusingEvent)
+ SystemClock.sleep(1000)
+ }
+ // do not call loadEvents() directly, reconnection may be needed
+ commandQueue.loadEvents(object : Callback() {
+ override fun run() {
+ // reread bolus status
+ rxBus.send(EventPumpStatusChanged(resourceHelper.gs(R.string.gettingbolusstatus)))
+ sendMessage(DanaRS_Packet_Bolus_Get_Step_Bolus_Information(injector)) // last bolus
+ bolusingEvent.percent = 100
+ rxBus.send(EventPumpStatusChanged(resourceHelper.gs(R.string.disconnecting)))
+ }
+ })
+ return !start.failed
+ }
+
+ fun bolusStop() {
+ aapsLogger.debug(LTag.PUMPCOMM, "bolusStop >>>>> @ " + if (danaPump.bolusingTreatment == null) "" else danaPump.bolusingTreatment?.insulin)
+ val stop = DanaRS_Packet_Bolus_Set_Step_Bolus_Stop(injector)
+ danaPump.bolusStopForced = true
+ if (isConnected) {
+ sendMessage(stop)
+ while (!danaPump.bolusStopped) {
+ sendMessage(stop)
+ SystemClock.sleep(200)
+ }
+ } else {
+ danaPump.bolusStopped = true
+ }
+ }
+
+ fun tempBasal(percent: Int, durationInHours: Int): Boolean {
+ if (!isConnected) return false
+ if (danaPump.isTempBasalInProgress) {
+ rxBus.send(EventPumpStatusChanged(resourceHelper.gs(R.string.stoppingtempbasal)))
+ sendMessage(DanaRS_Packet_Basal_Set_Cancel_Temporary_Basal(injector))
+ SystemClock.sleep(500)
+ }
+ rxBus.send(EventPumpStatusChanged(resourceHelper.gs(R.string.settingtempbasal)))
+ sendMessage(DanaRS_Packet_Basal_Set_Temporary_Basal(injector, percent, durationInHours))
+ SystemClock.sleep(200)
+ sendMessage(DanaRS_Packet_Basal_Get_Temporary_Basal_State(injector))
+ loadEvents()
+ rxBus.send(EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING))
+ return true
+ }
+
+ fun highTempBasal(percent: Int): Boolean {
+ if (danaPump.isTempBasalInProgress) {
+ rxBus.send(EventPumpStatusChanged(resourceHelper.gs(R.string.stoppingtempbasal)))
+ sendMessage(DanaRS_Packet_Basal_Set_Cancel_Temporary_Basal(injector))
+ SystemClock.sleep(500)
+ }
+ rxBus.send(EventPumpStatusChanged(resourceHelper.gs(R.string.settingtempbasal)))
+ sendMessage(DanaRS_Packet_APS_Basal_Set_Temporary_Basal(injector, percent))
+ sendMessage(DanaRS_Packet_Basal_Get_Temporary_Basal_State(injector))
+ loadEvents()
+ rxBus.send(EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING))
+ return true
+ }
+
+ fun tempBasalShortDuration(percent: Int, durationInMinutes: Int): Boolean {
+ if (durationInMinutes != 15 && durationInMinutes != 30) {
+ aapsLogger.error(LTag.PUMPCOMM, "Wrong duration param")
+ return false
+ }
+ if (danaPump.isTempBasalInProgress) {
+ rxBus.send(EventPumpStatusChanged(resourceHelper.gs(R.string.stoppingtempbasal)))
+ sendMessage(DanaRS_Packet_Basal_Set_Cancel_Temporary_Basal(injector))
+ SystemClock.sleep(500)
+ }
+ rxBus.send(EventPumpStatusChanged(resourceHelper.gs(R.string.settingtempbasal)))
+ sendMessage(DanaRS_Packet_APS_Basal_Set_Temporary_Basal(injector, percent))
+ sendMessage(DanaRS_Packet_Basal_Get_Temporary_Basal_State(injector))
+ loadEvents()
+ rxBus.send(EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING))
+ return true
+ }
+
+ fun tempBasalStop(): Boolean {
+ if (!isConnected) return false
+ rxBus.send(EventPumpStatusChanged(resourceHelper.gs(R.string.stoppingtempbasal)))
+ sendMessage(DanaRS_Packet_Basal_Set_Cancel_Temporary_Basal(injector))
+ sendMessage(DanaRS_Packet_Basal_Get_Temporary_Basal_State(injector))
+ loadEvents()
+ rxBus.send(EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING))
+ return true
+ }
+
+ fun extendedBolus(insulin: Double, durationInHalfHours: Int): Boolean {
+ if (!isConnected) return false
+ rxBus.send(EventPumpStatusChanged(resourceHelper.gs(R.string.settingextendedbolus)))
+ sendMessage(DanaRS_Packet_Bolus_Set_Extended_Bolus(injector, insulin, durationInHalfHours))
+ SystemClock.sleep(200)
+ sendMessage(DanaRS_Packet_Bolus_Get_Extended_Bolus_State(injector))
+ loadEvents()
+ rxBus.send(EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING))
+ return true
+ }
+
+ fun extendedBolusStop(): Boolean {
+ if (!isConnected) return false
+ rxBus.send(EventPumpStatusChanged(resourceHelper.gs(R.string.stoppingextendedbolus)))
+ sendMessage(DanaRS_Packet_Bolus_Set_Extended_Bolus_Cancel(injector))
+ sendMessage(DanaRS_Packet_Bolus_Get_Extended_Bolus_State(injector))
+ loadEvents()
+ rxBus.send(EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING))
+ return true
+ }
+
+ fun updateBasalsInPump(profile: Profile): Boolean {
+ if (!isConnected) return false
+ rxBus.send(EventPumpStatusChanged(resourceHelper.gs(R.string.updatingbasalrates)))
+ val basal = danaPump.buildDanaRProfileRecord(profile)
+ val msgSet = DanaRS_Packet_Basal_Set_Profile_Basal_Rate(injector, 0, basal)
+ sendMessage(msgSet)
+ val msgActivate = DanaRS_Packet_Basal_Set_Profile_Number(injector, 0)
+ sendMessage(msgActivate)
+ readPumpStatus()
+ rxBus.send(EventPumpStatusChanged(EventPumpStatusChanged.Status.DISCONNECTING))
+ return true
+ }
+
+ fun loadHistory(type: Byte): PumpEnactResult {
+ val result = PumpEnactResult(injector)
+ if (!isConnected) return result
+ var msg: DanaRS_Packet_History_? = null
+ when (type) {
+ info.nightscout.androidaps.dana.comm.RecordTypes.RECORD_TYPE_ALARM -> msg = DanaRS_Packet_History_Alarm(injector)
+ info.nightscout.androidaps.dana.comm.RecordTypes.RECORD_TYPE_PRIME -> msg = DanaRS_Packet_History_Prime(injector)
+ info.nightscout.androidaps.dana.comm.RecordTypes.RECORD_TYPE_BASALHOUR -> msg = DanaRS_Packet_History_Basal(injector)
+ info.nightscout.androidaps.dana.comm.RecordTypes.RECORD_TYPE_BOLUS -> msg = DanaRS_Packet_History_Bolus(injector)
+ info.nightscout.androidaps.dana.comm.RecordTypes.RECORD_TYPE_CARBO -> msg = DanaRS_Packet_History_Carbohydrate(injector)
+ info.nightscout.androidaps.dana.comm.RecordTypes.RECORD_TYPE_DAILY -> msg = DanaRS_Packet_History_Daily(injector)
+ info.nightscout.androidaps.dana.comm.RecordTypes.RECORD_TYPE_GLUCOSE -> msg = DanaRS_Packet_History_Blood_Glucose(injector)
+ info.nightscout.androidaps.dana.comm.RecordTypes.RECORD_TYPE_REFILL -> msg = DanaRS_Packet_History_Refill(injector)
+ info.nightscout.androidaps.dana.comm.RecordTypes.RECORD_TYPE_SUSPEND -> msg = DanaRS_Packet_History_Suspend(injector)
+ }
+ if (msg != null) {
+ sendMessage(DanaRS_Packet_General_Set_History_Upload_Mode(injector, 1))
+ SystemClock.sleep(200)
+ sendMessage(msg)
+ while (!msg.done && isConnected) {
+ SystemClock.sleep(100)
+ }
+ SystemClock.sleep(200)
+ sendMessage(DanaRS_Packet_General_Set_History_Upload_Mode(injector, 0))
+ }
+ result.success = true
+ result.comment = "OK"
+ return result
+ }
+
+ inner class LocalBinder : Binder() {
+ val serviceInstance: DanaRSService
+ get() = this@DanaRSService
+ }
+
+ override fun onBind(intent: Intent): IBinder {
+ return mBinder
+ }
+
+ override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
+ return Service.START_STICKY
+ }
+
+ private fun waitForWholeMinute() {
+ while (true) {
+ val time = DateUtil.now()
+ val timeToWholeMinute = 60000 - time % 60000
+ if (timeToWholeMinute > 59800 || timeToWholeMinute < 300) break
+ rxBus.send(EventPumpStatusChanged(resourceHelper.gs(R.string.waitingfortimesynchronization, (timeToWholeMinute / 1000).toInt())))
+ SystemClock.sleep(min(timeToWholeMinute, 100))
+ }
+ }
+}
\ No newline at end of file
diff --git a/danars/src/main/jniLibs/arm64-v8a/libBleEncryption.so b/danars/src/main/jniLibs/arm64-v8a/libBleEncryption.so
new file mode 100644
index 0000000000..59e0c56433
Binary files /dev/null and b/danars/src/main/jniLibs/arm64-v8a/libBleEncryption.so differ
diff --git a/danars/src/main/jniLibs/armeabi-v7a/libBleEncryption.so b/danars/src/main/jniLibs/armeabi-v7a/libBleEncryption.so
new file mode 100644
index 0000000000..fabc03368a
Binary files /dev/null and b/danars/src/main/jniLibs/armeabi-v7a/libBleEncryption.so differ
diff --git a/danars/src/main/jniLibs/x86/libBleEncryption.so b/danars/src/main/jniLibs/x86/libBleEncryption.so
new file mode 100644
index 0000000000..fb51d4816f
Binary files /dev/null and b/danars/src/main/jniLibs/x86/libBleEncryption.so differ
diff --git a/danars/src/main/jniLibs/x86_64/libBleEncryption.so b/danars/src/main/jniLibs/x86_64/libBleEncryption.so
new file mode 100644
index 0000000000..777d55b7f6
Binary files /dev/null and b/danars/src/main/jniLibs/x86_64/libBleEncryption.so differ
diff --git a/app/src/main/res/layout/danars_blescanner_activity.xml b/danars/src/main/res/layout/danars_blescanner_activity.xml
similarity index 90%
rename from app/src/main/res/layout/danars_blescanner_activity.xml
rename to danars/src/main/res/layout/danars_blescanner_activity.xml
index 654f8c1fb6..9a22d37441 100644
--- a/app/src/main/res/layout/danars_blescanner_activity.xml
+++ b/danars/src/main/res/layout/danars_blescanner_activity.xml
@@ -4,7 +4,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
- tools:context=".plugins.pump.danaRS.activities.BLEScanActivity">
+ tools:context=".activities.BLEScanActivity">
diff --git a/danars/src/main/res/layout/danars_blescanner_item.xml b/danars/src/main/res/layout/danars_blescanner_item.xml
new file mode 100644
index 0000000000..9a39302163
--- /dev/null
+++ b/danars/src/main/res/layout/danars_blescanner_item.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/danars/src/main/res/layout/danars_enter_pin_activity.xml b/danars/src/main/res/layout/danars_enter_pin_activity.xml
new file mode 100644
index 0000000000..b56b13ae2e
--- /dev/null
+++ b/danars/src/main/res/layout/danars_enter_pin_activity.xml
@@ -0,0 +1,90 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/danars_pairingprogressdialog.xml b/danars/src/main/res/layout/danars_pairingprogressdialog.xml
similarity index 96%
rename from app/src/main/res/layout/danars_pairingprogressdialog.xml
rename to danars/src/main/res/layout/danars_pairingprogressdialog.xml
index 496c4a90f6..c95374f3cb 100644
--- a/app/src/main/res/layout/danars_pairingprogressdialog.xml
+++ b/danars/src/main/res/layout/danars_pairingprogressdialog.xml
@@ -3,7 +3,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
- tools:context=".plugins.pump.danaRS.dialogs.PairingProgressDialog" >
+ tools:context="info.nightscout.androidaps.danars.dialogs.PairingProgressDialog" >
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/xml/pref_danars.xml b/danars/src/main/res/xml/pref_danars.xml
similarity index 66%
rename from app/src/main/res/xml/pref_danars.xml
rename to danars/src/main/res/xml/pref_danars.xml
index 2bd7446a61..1e35b65ee9 100644
--- a/app/src/main/res/xml/pref_danars.xml
+++ b/danars/src/main/res/xml/pref_danars.xml
@@ -8,24 +8,19 @@
app:initialExpandedChildrenCount="0">
+ android:key="@string/key_danars_name"
+ android:summary=""
+ android:title="@string/selectedpump">
-
-
+
+
+
+
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index dc6471224f..99c53485da 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Sat Feb 29 21:28:06 CET 2020
+#Tue Jul 28 23:15:57 CEST 2020
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip
diff --git a/icons/actions_cancelextbolus.svg b/icons/actions_cancelextbolus.svg
new file mode 100644
index 0000000000..7deda488e6
--- /dev/null
+++ b/icons/actions_cancelextbolus.svg
@@ -0,0 +1,23 @@
+
+
diff --git a/icons/actions_refill.svg b/icons/actions_refill.svg
new file mode 100644
index 0000000000..4514fd0788
--- /dev/null
+++ b/icons/actions_refill.svg
@@ -0,0 +1,14 @@
+
+
diff --git a/icons/actions_startextbolus.svg b/icons/actions_startextbolus.svg
new file mode 100644
index 0000000000..de895cc860
--- /dev/null
+++ b/icons/actions_startextbolus.svg
@@ -0,0 +1,15 @@
+
+
diff --git a/icons/actions_temptarget.svg b/icons/actions_temptarget.svg
new file mode 100644
index 0000000000..7d2304705d
--- /dev/null
+++ b/icons/actions_temptarget.svg
@@ -0,0 +1,18 @@
+
+
diff --git a/icons/add.svg b/icons/add.svg
new file mode 100644
index 0000000000..3b73b8367e
--- /dev/null
+++ b/icons/add.svg
@@ -0,0 +1,10 @@
+
+
diff --git a/icons/as.svg b/icons/as.svg
new file mode 100644
index 0000000000..a13e5cfd02
--- /dev/null
+++ b/icons/as.svg
@@ -0,0 +1,9 @@
+
+
diff --git a/icons/auto_delta.svg b/icons/auto_delta.svg
new file mode 100644
index 0000000000..8bbdb89cfb
--- /dev/null
+++ b/icons/auto_delta.svg
@@ -0,0 +1,11 @@
+
+
diff --git a/icons/bolus.svg b/icons/bolus.svg
new file mode 100644
index 0000000000..b144a70123
--- /dev/null
+++ b/icons/bolus.svg
@@ -0,0 +1,17 @@
+
+
diff --git a/icons/calculator.svg b/icons/calculator.svg
new file mode 100644
index 0000000000..dbb8787c48
--- /dev/null
+++ b/icons/calculator.svg
@@ -0,0 +1,29 @@
+
+
diff --git a/icons/calibration.svg b/icons/calibration.svg
new file mode 100644
index 0000000000..5ddac27412
--- /dev/null
+++ b/icons/calibration.svg
@@ -0,0 +1,15 @@
+
+
diff --git a/icons/clone.svg b/icons/clone.svg
new file mode 100644
index 0000000000..50e25e0af5
--- /dev/null
+++ b/icons/clone.svg
@@ -0,0 +1,9 @@
+
+
diff --git a/icons/compare_profiles.svg b/icons/compare_profiles.svg
new file mode 100644
index 0000000000..123653d167
--- /dev/null
+++ b/icons/compare_profiles.svg
@@ -0,0 +1,26 @@
+
+
diff --git a/icons/cp_aaps_offline.svg b/icons/cp_aaps_offline.svg
new file mode 100644
index 0000000000..7e9adf9a22
--- /dev/null
+++ b/icons/cp_aaps_offline.svg
@@ -0,0 +1,23 @@
+
+
diff --git a/icons/cp_age_batterie.svg b/icons/cp_age_batterie.svg
new file mode 100644
index 0000000000..7976c9eb9f
--- /dev/null
+++ b/icons/cp_age_batterie.svg
@@ -0,0 +1,13 @@
+
+
diff --git a/icons/cp_age_canula.svg b/icons/cp_age_canula.svg
new file mode 100644
index 0000000000..68aed614a5
--- /dev/null
+++ b/icons/cp_age_canula.svg
@@ -0,0 +1,14 @@
+
+
diff --git a/icons/cp_age_insulin.svg b/icons/cp_age_insulin.svg
new file mode 100644
index 0000000000..f296ea8bed
--- /dev/null
+++ b/icons/cp_age_insulin.svg
@@ -0,0 +1,17 @@
+
+
diff --git a/icons/cp_age_sensor.svg b/icons/cp_age_sensor.svg
new file mode 100644
index 0000000000..2249a405c7
--- /dev/null
+++ b/icons/cp_age_sensor.svg
@@ -0,0 +1,17 @@
+
+
diff --git a/icons/cp_announcement.svg b/icons/cp_announcement.svg
new file mode 100644
index 0000000000..7cbeeaa2ec
--- /dev/null
+++ b/icons/cp_announcement.svg
@@ -0,0 +1,31 @@
+
+
diff --git a/icons/cp_basal_end.svg b/icons/cp_basal_end.svg
new file mode 100644
index 0000000000..3fe2865820
--- /dev/null
+++ b/icons/cp_basal_end.svg
@@ -0,0 +1,14 @@
+
+
diff --git a/icons/cp_basal_no_tbr.svg b/icons/cp_basal_no_tbr.svg
new file mode 100644
index 0000000000..4c08c1afa6
--- /dev/null
+++ b/icons/cp_basal_no_tbr.svg
@@ -0,0 +1,8 @@
+
+
diff --git a/icons/cp_basal_tbr_high.svg b/icons/cp_basal_tbr_high.svg
new file mode 100644
index 0000000000..276b614826
--- /dev/null
+++ b/icons/cp_basal_tbr_high.svg
@@ -0,0 +1,9 @@
+
+
diff --git a/icons/cp_basal_tbr_low.svg b/icons/cp_basal_tbr_low.svg
new file mode 100644
index 0000000000..c5cd270693
--- /dev/null
+++ b/icons/cp_basal_tbr_low.svg
@@ -0,0 +1,9 @@
+
+
diff --git a/icons/cp_bgcheck.svg b/icons/cp_bgcheck.svg
new file mode 100644
index 0000000000..f0215a16d0
--- /dev/null
+++ b/icons/cp_bgcheck.svg
@@ -0,0 +1,17 @@
+
+
diff --git a/icons/cp_bgcheck2.svg b/icons/cp_bgcheck2.svg
new file mode 100644
index 0000000000..e44b4a49a9
--- /dev/null
+++ b/icons/cp_bgcheck2.svg
@@ -0,0 +1,12 @@
+
+
diff --git a/icons/cp_bolus_carbs.svg b/icons/cp_bolus_carbs.svg
new file mode 100644
index 0000000000..9e797f244f
--- /dev/null
+++ b/icons/cp_bolus_carbs.svg
@@ -0,0 +1,27 @@
+
+
diff --git a/icons/cp_bolus_combo.svg b/icons/cp_bolus_combo.svg
new file mode 100644
index 0000000000..5e4b9ea0ce
--- /dev/null
+++ b/icons/cp_bolus_combo.svg
@@ -0,0 +1,9 @@
+
+
diff --git a/icons/cp_bolus_correction.svg b/icons/cp_bolus_correction.svg
new file mode 100644
index 0000000000..f19840b68f
--- /dev/null
+++ b/icons/cp_bolus_correction.svg
@@ -0,0 +1,19 @@
+
+
diff --git a/icons/cp_bolus_meal.svg b/icons/cp_bolus_meal.svg
new file mode 100644
index 0000000000..e9d041c1c0
--- /dev/null
+++ b/icons/cp_bolus_meal.svg
@@ -0,0 +1,19 @@
+
+
diff --git a/icons/cp_bolus_snack.svg b/icons/cp_bolus_snack.svg
new file mode 100644
index 0000000000..61abed4a14
--- /dev/null
+++ b/icons/cp_bolus_snack.svg
@@ -0,0 +1,18 @@
+
+
diff --git a/icons/cp_cgm_insert.svg b/icons/cp_cgm_insert.svg
new file mode 100644
index 0000000000..975cce05b5
--- /dev/null
+++ b/icons/cp_cgm_insert.svg
@@ -0,0 +1,20 @@
+
+
diff --git a/icons/cp_cgm_profile.svg b/icons/cp_cgm_profile.svg
new file mode 100644
index 0000000000..ac80ef0916
--- /dev/null
+++ b/icons/cp_cgm_profile.svg
@@ -0,0 +1,15 @@
+
+
diff --git a/icons/cp_cgm_start.svg b/icons/cp_cgm_start.svg
new file mode 100644
index 0000000000..81211f451f
--- /dev/null
+++ b/icons/cp_cgm_start.svg
@@ -0,0 +1,24 @@
+
+
diff --git a/icons/cp_cgm_target.svg b/icons/cp_cgm_target.svg
new file mode 100644
index 0000000000..6be0fbc378
--- /dev/null
+++ b/icons/cp_cgm_target.svg
@@ -0,0 +1,19 @@
+
+
diff --git a/icons/cp_exercise.svg b/icons/cp_exercise.svg
new file mode 100644
index 0000000000..7552611fcc
--- /dev/null
+++ b/icons/cp_exercise.svg
@@ -0,0 +1,23 @@
+
+
diff --git a/icons/cp_note.svg b/icons/cp_note.svg
new file mode 100644
index 0000000000..52c783a3c6
--- /dev/null
+++ b/icons/cp_note.svg
@@ -0,0 +1,17 @@
+
+
diff --git a/icons/cp_pump_battery.svg b/icons/cp_pump_battery.svg
new file mode 100644
index 0000000000..6c3c3f605c
--- /dev/null
+++ b/icons/cp_pump_battery.svg
@@ -0,0 +1,13 @@
+
+
diff --git a/icons/cp_pump_canula.svg b/icons/cp_pump_canula.svg
new file mode 100644
index 0000000000..ac0c9f8304
--- /dev/null
+++ b/icons/cp_pump_canula.svg
@@ -0,0 +1,14 @@
+
+
diff --git a/icons/cp_pump_cartridge.svg b/icons/cp_pump_cartridge.svg
new file mode 100644
index 0000000000..4871ca4a33
--- /dev/null
+++ b/icons/cp_pump_cartridge.svg
@@ -0,0 +1,17 @@
+
+
diff --git a/icons/cp_question.svg b/icons/cp_question.svg
new file mode 100644
index 0000000000..512bc763bc
--- /dev/null
+++ b/icons/cp_question.svg
@@ -0,0 +1,12 @@
+
+
diff --git a/icons/danar_useropt.svg b/icons/danar_useropt.svg
new file mode 100644
index 0000000000..e8d8e76097
--- /dev/null
+++ b/icons/danar_useropt.svg
@@ -0,0 +1,27 @@
+
+
diff --git a/icons/danarhistory.svg b/icons/danarhistory.svg
new file mode 100644
index 0000000000..e7e972b989
--- /dev/null
+++ b/icons/danarhistory.svg
@@ -0,0 +1,14 @@
+
+
diff --git a/icons/danarprofile.svg b/icons/danarprofile.svg
new file mode 100644
index 0000000000..0a71fe319e
--- /dev/null
+++ b/icons/danarprofile.svg
@@ -0,0 +1,15 @@
+
+
diff --git a/icons/danarstat.svg b/icons/danarstat.svg
new file mode 100644
index 0000000000..fa6a91e9ec
--- /dev/null
+++ b/icons/danarstat.svg
@@ -0,0 +1,10 @@
+
+
diff --git a/icons/ic_DoubleDown.svg b/icons/ic_DoubleDown.svg
new file mode 100644
index 0000000000..59a49688fd
--- /dev/null
+++ b/icons/ic_DoubleDown.svg
@@ -0,0 +1,12 @@
+
+
diff --git a/icons/ic_DoubleUp.svg b/icons/ic_DoubleUp.svg
new file mode 100644
index 0000000000..ffe05f5740
--- /dev/null
+++ b/icons/ic_DoubleUp.svg
@@ -0,0 +1,12 @@
+
+
diff --git a/icons/ic_Flat.svg b/icons/ic_Flat.svg
new file mode 100644
index 0000000000..1ec4fa8e6c
--- /dev/null
+++ b/icons/ic_Flat.svg
@@ -0,0 +1,9 @@
+
+
diff --git a/icons/ic_FortyFiveDown.svg b/icons/ic_FortyFiveDown.svg
new file mode 100644
index 0000000000..5ea545a3a4
--- /dev/null
+++ b/icons/ic_FortyFiveDown.svg
@@ -0,0 +1,9 @@
+
+
diff --git a/icons/ic_FortyFiveUp.svg b/icons/ic_FortyFiveUp.svg
new file mode 100644
index 0000000000..91d223b371
--- /dev/null
+++ b/icons/ic_FortyFiveUp.svg
@@ -0,0 +1,9 @@
+
+
diff --git a/icons/ic_Invalid.svg b/icons/ic_Invalid.svg
new file mode 100644
index 0000000000..79de4c9ad7
--- /dev/null
+++ b/icons/ic_Invalid.svg
@@ -0,0 +1,18 @@
+
+
diff --git a/icons/ic_SingleDown.svg b/icons/ic_SingleDown.svg
new file mode 100644
index 0000000000..ca673aee12
--- /dev/null
+++ b/icons/ic_SingleDown.svg
@@ -0,0 +1,9 @@
+
+
diff --git a/icons/ic_SingleUp.svg b/icons/ic_SingleUp.svg
new file mode 100644
index 0000000000..b508a6fc93
--- /dev/null
+++ b/icons/ic_SingleUp.svg
@@ -0,0 +1,9 @@
+
+
diff --git a/icons/ic_error.svg b/icons/ic_error.svg
new file mode 100644
index 0000000000..ce9df53b43
--- /dev/null
+++ b/icons/ic_error.svg
@@ -0,0 +1,8 @@
+
+
diff --git a/icons/ic_exit_to_app.svg b/icons/ic_exit_to_app.svg
new file mode 100644
index 0000000000..c834b1afed
--- /dev/null
+++ b/icons/ic_exit_to_app.svg
@@ -0,0 +1,11 @@
+
+
diff --git a/icons/ic_home_loop.svg b/icons/ic_home_loop.svg
new file mode 100644
index 0000000000..5524013992
--- /dev/null
+++ b/icons/ic_home_loop.svg
@@ -0,0 +1,15 @@
+
+
diff --git a/icons/ic_maintenance.svg b/icons/ic_maintenance.svg
new file mode 100644
index 0000000000..cc3d228360
--- /dev/null
+++ b/icons/ic_maintenance.svg
@@ -0,0 +1,9 @@
+
+
diff --git a/icons/ic_notif_aaps.svg b/icons/ic_notif_aaps.svg
new file mode 100644
index 0000000000..fcc139f344
--- /dev/null
+++ b/icons/ic_notif_aaps.svg
@@ -0,0 +1,27 @@
+
+
diff --git a/icons/ic_notif_nsclient.svg b/icons/ic_notif_nsclient.svg
new file mode 100644
index 0000000000..808d4e233b
--- /dev/null
+++ b/icons/ic_notif_nsclient.svg
@@ -0,0 +1,50 @@
+
+
diff --git a/icons/ic_notif_pumpcontrol.svg b/icons/ic_notif_pumpcontrol.svg
new file mode 100644
index 0000000000..ae63c364eb
--- /dev/null
+++ b/icons/ic_notif_pumpcontrol.svg
@@ -0,0 +1,38 @@
+
+
diff --git a/icons/ic_warning.svg b/icons/ic_warning.svg
new file mode 100644
index 0000000000..6ec4720d84
--- /dev/null
+++ b/icons/ic_warning.svg
@@ -0,0 +1,8 @@
+
+
diff --git a/icons/local_activate.svg b/icons/local_activate.svg
new file mode 100644
index 0000000000..26b70b1406
--- /dev/null
+++ b/icons/local_activate.svg
@@ -0,0 +1,15 @@
+
+
diff --git a/icons/local_reset.svg b/icons/local_reset.svg
new file mode 100644
index 0000000000..7fa5e1e983
--- /dev/null
+++ b/icons/local_reset.svg
@@ -0,0 +1,13 @@
+
+
diff --git a/icons/local_save.svg b/icons/local_save.svg
new file mode 100644
index 0000000000..b587d78d2a
--- /dev/null
+++ b/icons/local_save.svg
@@ -0,0 +1,12 @@
+
+
diff --git a/icons/loop_closed.svg b/icons/loop_closed.svg
new file mode 100644
index 0000000000..7db354f7b2
--- /dev/null
+++ b/icons/loop_closed.svg
@@ -0,0 +1,11 @@
+
+
diff --git a/icons/loop_disabled.svg b/icons/loop_disabled.svg
new file mode 100644
index 0000000000..16bd184bc9
--- /dev/null
+++ b/icons/loop_disabled.svg
@@ -0,0 +1,17 @@
+
+
diff --git a/icons/loop_disconnected.svg b/icons/loop_disconnected.svg
new file mode 100644
index 0000000000..cfa6c01d3b
--- /dev/null
+++ b/icons/loop_disconnected.svg
@@ -0,0 +1,15 @@
+
+
diff --git a/icons/loop_lgs.svg b/icons/loop_lgs.svg
new file mode 100644
index 0000000000..70becf7df9
--- /dev/null
+++ b/icons/loop_lgs.svg
@@ -0,0 +1,20 @@
+
+
diff --git a/icons/loop_open.svg b/icons/loop_open.svg
new file mode 100644
index 0000000000..37439be7fe
--- /dev/null
+++ b/icons/loop_open.svg
@@ -0,0 +1,20 @@
+
+
diff --git a/icons/loop_paused.svg b/icons/loop_paused.svg
new file mode 100644
index 0000000000..9e299b0045
--- /dev/null
+++ b/icons/loop_paused.svg
@@ -0,0 +1,13 @@
+
+
diff --git a/icons/loop_superbolus.svg b/icons/loop_superbolus.svg
new file mode 100644
index 0000000000..2a538bd1ff
--- /dev/null
+++ b/icons/loop_superbolus.svg
@@ -0,0 +1,32 @@
+
+
diff --git a/icons/quickwizard.svg b/icons/quickwizard.svg
new file mode 100644
index 0000000000..29f32b5279
--- /dev/null
+++ b/icons/quickwizard.svg
@@ -0,0 +1,22 @@
+
+
diff --git a/icons/remove.svg b/icons/remove.svg
new file mode 100644
index 0000000000..22df13d50a
--- /dev/null
+++ b/icons/remove.svg
@@ -0,0 +1,11 @@
+
+
diff --git a/icons/temp-basal/icon_cp_basal_100px.psd b/icons/temp-basal/icon_cp_basal_100px.psd
new file mode 100644
index 0000000000..9eee5dbcd2
Binary files /dev/null and b/icons/temp-basal/icon_cp_basal_100px.psd differ
diff --git a/icons/temp-basal/icon_cp_basal_150px.psd b/icons/temp-basal/icon_cp_basal_150px.psd
new file mode 100644
index 0000000000..fd66def325
Binary files /dev/null and b/icons/temp-basal/icon_cp_basal_150px.psd differ
diff --git a/icons/temp-basal/icon_cp_basal_200px.psd b/icons/temp-basal/icon_cp_basal_200px.psd
new file mode 100644
index 0000000000..df4edab59d
Binary files /dev/null and b/icons/temp-basal/icon_cp_basal_200px.psd differ
diff --git a/icons/temp-basal/icon_cp_basal_50px.psd b/icons/temp-basal/icon_cp_basal_50px.psd
new file mode 100644
index 0000000000..9db88a0ffa
Binary files /dev/null and b/icons/temp-basal/icon_cp_basal_50px.psd differ
diff --git a/icons/temp-basal/icon_cp_basal_75px.psd b/icons/temp-basal/icon_cp_basal_75px.psd
new file mode 100644
index 0000000000..585554299b
Binary files /dev/null and b/icons/temp-basal/icon_cp_basal_75px.psd differ
diff --git a/icons/visibility.svg b/icons/visibility.svg
new file mode 100644
index 0000000000..06375f5914
--- /dev/null
+++ b/icons/visibility.svg
@@ -0,0 +1,10 @@
+
+
diff --git a/icons/x_swap_vert.svg b/icons/x_swap_vert.svg
new file mode 100644
index 0000000000..f7c1aaa09e
--- /dev/null
+++ b/icons/x_swap_vert.svg
@@ -0,0 +1,14 @@
+
+
diff --git a/icons/xdrip.svg b/icons/xdrip.svg
new file mode 100644
index 0000000000..8f141d3c04
--- /dev/null
+++ b/icons/xdrip.svg
@@ -0,0 +1,11 @@
+
+
diff --git a/medtronic/.gitignore b/medtronic/.gitignore
new file mode 100644
index 0000000000..796b96d1c4
--- /dev/null
+++ b/medtronic/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/medtronic/build.gradle b/medtronic/build.gradle
new file mode 100644
index 0000000000..9551210275
--- /dev/null
+++ b/medtronic/build.gradle
@@ -0,0 +1,83 @@
+apply plugin: 'com.android.library'
+apply plugin: 'kotlin-android'
+apply plugin: 'kotlin-android-extensions'
+apply plugin: 'kotlin-kapt'
+
+android {
+ compileSdkVersion 28
+
+ defaultConfig {
+ minSdkVersion 24
+ targetSdkVersion 28
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ 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
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+dependencies {
+ implementation project(':core')
+ implementation project(':rileylink')
+
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
+ implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
+ implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutinesVersion"
+ implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutinesVersion"
+
+ implementation 'androidx.appcompat:appcompat:1.1.0'
+ implementation 'androidx.legacy:legacy-support-v13:1.0.0'
+ implementation 'androidx.core:core-ktx:1.2.0'
+ implementation "androidx.preference:preference-ktx:1.1.1"
+ implementation "androidx.activity:activity-ktx:${activityVersion}"
+ implementation 'com.google.android.material:material:1.1.0'
+
+ implementation "io.reactivex.rxjava2:rxandroid:${rxandroid_version}"
+
+ // Graphview cannot be upgraded
+ implementation "com.jjoe64:graphview:4.0.1"
+
+ implementation "com.joanzapata.iconify:android-iconify-fontawesome:2.2.2"
+
+ // medtronic - start
+ implementation 'org.apache.commons:commons-lang3:3.10'
+ implementation 'net.danlew:android.joda:2.10.6'
+ implementation 'org.slf4j:slf4j-api:1.7.30'
+ implementation "com.google.code.gson:gson:2.8.6"
+ // medtronic - end
+
+ implementation "com.google.dagger:dagger-android:$dagger_version"
+ implementation "com.google.dagger:dagger-android-support:$dagger_version"
+ 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"
+
+ testImplementation 'junit:junit:4.13'
+ androidTestImplementation 'androidx.test.ext:junit:1.1.1'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
+}
diff --git a/medtronic/consumer-rules.pro b/medtronic/consumer-rules.pro
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/medtronic/proguard-rules.pro b/medtronic/proguard-rules.pro
new file mode 100644
index 0000000000..f1b424510d
--- /dev/null
+++ b/medtronic/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
diff --git a/medtronic/src/androidTest/java/info/nightscout/androidaps/plugins/pump/medtronic/ExampleInstrumentedTest.java b/medtronic/src/androidTest/java/info/nightscout/androidaps/plugins/pump/medtronic/ExampleInstrumentedTest.java
new file mode 100644
index 0000000000..63cded8fe7
--- /dev/null
+++ b/medtronic/src/androidTest/java/info/nightscout/androidaps/plugins/pump/medtronic/ExampleInstrumentedTest.java
@@ -0,0 +1,27 @@
+package info.nightscout.androidaps.plugins.pump.medtronic;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+
+ assertEquals("info.nightscout.androidaps.plugins.pump.medtronic.test", appContext.getPackageName());
+ }
+}
diff --git a/medtronic/src/main/AndroidManifest.xml b/medtronic/src/main/AndroidManifest.xml
new file mode 100644
index 0000000000..ef3ab38a46
--- /dev/null
+++ b/medtronic/src/main/AndroidManifest.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicFragment.kt b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicFragment.kt
similarity index 91%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicFragment.kt
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicFragment.kt
index da9a2321f6..cb1e246e0e 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicFragment.kt
+++ b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicFragment.kt
@@ -8,8 +8,6 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import dagger.android.support.DaggerFragment
-import info.nightscout.androidaps.MainApp
-import info.nightscout.androidaps.R
import info.nightscout.androidaps.events.EventExtendedBolusChange
import info.nightscout.androidaps.events.EventPumpStatusChanged
import info.nightscout.androidaps.events.EventTempBasalChange
@@ -18,20 +16,20 @@ import info.nightscout.androidaps.interfaces.CommandQueueProvider
import info.nightscout.androidaps.logging.AAPSLogger
import info.nightscout.androidaps.logging.LTag
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
+import info.nightscout.androidaps.plugins.pump.common.defs.PumpDeviceState
+import info.nightscout.androidaps.plugins.pump.medtronic.defs.BatteryType
+import info.nightscout.androidaps.plugins.pump.medtronic.defs.MedtronicCommandType
+import info.nightscout.androidaps.plugins.pump.medtronic.dialog.MedtronicHistoryActivity
+import info.nightscout.androidaps.plugins.pump.medtronic.driver.MedtronicPumpStatus
+import info.nightscout.androidaps.plugins.pump.common.events.EventRileyLinkDeviceStatusChange
+import info.nightscout.androidaps.plugins.pump.medtronic.events.EventMedtronicPumpConfigurationChanged
+import info.nightscout.androidaps.plugins.pump.medtronic.events.EventMedtronicPumpValuesChanged
+import info.nightscout.androidaps.plugins.pump.common.events.EventRefreshButtonState
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkUtil
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.dialog.RileyLinkStatusActivity
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.RileyLinkServiceData
-import info.nightscout.androidaps.plugins.pump.medtronic.defs.BatteryType
-import info.nightscout.androidaps.plugins.pump.medtronic.defs.MedtronicCommandType
-import info.nightscout.androidaps.plugins.pump.medtronic.defs.PumpDeviceState
-import info.nightscout.androidaps.plugins.pump.medtronic.dialog.MedtronicHistoryActivity
-import info.nightscout.androidaps.plugins.pump.medtronic.driver.MedtronicPumpStatus
-import info.nightscout.androidaps.plugins.pump.medtronic.events.EventMedtronicDeviceStatusChange
-import info.nightscout.androidaps.plugins.pump.medtronic.events.EventMedtronicPumpConfigurationChanged
-import info.nightscout.androidaps.plugins.pump.medtronic.events.EventMedtronicPumpValuesChanged
-import info.nightscout.androidaps.plugins.pump.medtronic.events.EventRefreshButtonState
import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil
import info.nightscout.androidaps.queue.Callback
import info.nightscout.androidaps.queue.events.EventQueueChanged
@@ -49,7 +47,6 @@ import javax.inject.Inject
class MedtronicFragment : DaggerFragment() {
@Inject lateinit var aapsLogger: AAPSLogger
- @Inject lateinit var mainApp: MainApp
@Inject lateinit var fabricPrivacy: FabricPrivacy
@Inject lateinit var resourceHelper: ResourceHelper
@Inject lateinit var rxBus: RxBusWrapper
@@ -128,10 +125,10 @@ class MedtronicFragment : DaggerFragment() {
.observeOn(AndroidSchedulers.mainThread())
.subscribe({ medtronic_refresh.isEnabled = it.newState }, { fabricPrivacy.logException(it) })
disposable += rxBus
- .toObservable(EventMedtronicDeviceStatusChange::class.java)
+ .toObservable(EventRileyLinkDeviceStatusChange::class.java)
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
- aapsLogger.debug(LTag.PUMP, "onStatusEvent(EventMedtronicDeviceStatusChange): $it")
+ aapsLogger.debug(LTag.PUMP, "onStatusEvent(EventRileyLinkDeviceStatusChange): $it")
setDeviceStatus()
}, { fabricPrivacy.logException(it) })
disposable += rxBus
@@ -179,11 +176,11 @@ class MedtronicFragment : DaggerFragment() {
val rileyLinkError = medtronicPumpPlugin.rileyLinkService?.error
medtronic_rl_status.text =
when {
- rileyLinkServiceData.rileyLinkServiceState == RileyLinkServiceState.NotStarted -> resourceHelper.gs(resourceId)
- rileyLinkServiceData.rileyLinkServiceState.isConnecting -> "{fa-bluetooth-b spin} " + resourceHelper.gs(resourceId)
- rileyLinkServiceData.rileyLinkServiceState.isError && rileyLinkError == null -> "{fa-bluetooth-b} " + resourceHelper.gs(resourceId)
- rileyLinkServiceData.rileyLinkServiceState.isError && rileyLinkError != null -> "{fa-bluetooth-b} " + resourceHelper.gs(rileyLinkError.getResourceId(RileyLinkTargetDevice.MedtronicPump))
- else -> "{fa-bluetooth-b} " + resourceHelper.gs(resourceId)
+ rileyLinkServiceData.rileyLinkServiceState == RileyLinkServiceState.NotStarted -> resourceHelper.gs(resourceId)
+ rileyLinkServiceData.rileyLinkServiceState.isConnecting -> "{fa-bluetooth-b spin} " + resourceHelper.gs(resourceId)
+ rileyLinkServiceData.rileyLinkServiceState.isError && rileyLinkError == null -> "{fa-bluetooth-b} " + resourceHelper.gs(resourceId)
+ rileyLinkServiceData.rileyLinkServiceState.isError && rileyLinkError != null -> "{fa-bluetooth-b} " + resourceHelper.gs(rileyLinkError.getResourceId(RileyLinkTargetDevice.MedtronicPump))
+ else -> "{fa-bluetooth-b} " + resourceHelper.gs(resourceId)
}
medtronic_rl_status.setTextColor(if (rileyLinkError != null) Color.RED else Color.WHITE)
@@ -221,7 +218,7 @@ class MedtronicFragment : DaggerFragment() {
}
}
- else -> aapsLogger.warn(LTag.PUMP, "Unknown pump state: " + medtronicPumpStatus.pumpDeviceState)
+ else -> aapsLogger.warn(LTag.PUMP, "Unknown pump state: " + medtronicPumpStatus.pumpDeviceState)
}
val status = commandQueue.spannedStatus()
@@ -235,7 +232,7 @@ class MedtronicFragment : DaggerFragment() {
private fun displayNotConfiguredDialog() {
context?.let {
- OKDialog.show(it, resourceHelper.gs(R.string.combo_warning),
+ OKDialog.show(it, resourceHelper.gs(R.string.medtronic_warning),
resourceHelper.gs(R.string.medtronic_error_operation_not_possible_no_configuration), null)
}
}
@@ -252,7 +249,7 @@ class MedtronicFragment : DaggerFragment() {
val minAgo = DateUtil.minAgo(resourceHelper, medtronicPumpStatus.lastConnection)
val min = (System.currentTimeMillis() - medtronicPumpStatus.lastConnection) / 1000 / 60
if (medtronicPumpStatus.lastConnection + 60 * 1000 > System.currentTimeMillis()) {
- medtronic_lastconnection.setText(R.string.combo_pump_connected_now)
+ medtronic_lastconnection.setText(R.string.medtronic_pump_connected_now)
medtronic_lastconnection.setTextColor(Color.WHITE)
} else if (medtronicPumpStatus.lastConnection + 30 * 60 * 1000 < System.currentTimeMillis()) {
@@ -260,13 +257,13 @@ class MedtronicFragment : DaggerFragment() {
medtronic_lastconnection.text = resourceHelper.gs(R.string.minago, min)
} else if (min < 1440) {
val h = (min / 60).toInt()
- medtronic_lastconnection.text = (resourceHelper.gq(R.plurals.objective_hours, h, h) + " "
+ medtronic_lastconnection.text = (resourceHelper.gq(R.plurals.duration_hours, h, h) + " "
+ resourceHelper.gs(R.string.ago))
} else {
val h = (min / 60).toInt()
val d = h / 24
// h = h - (d * 24);
- medtronic_lastconnection.text = (resourceHelper.gq(R.plurals.objective_days, d, d) + " "
+ medtronic_lastconnection.text = (resourceHelper.gq(R.plurals.duration_days, d, d) + " "
+ resourceHelper.gs(R.string.ago))
}
medtronic_lastconnection.setTextColor(Color.RED)
@@ -285,13 +282,13 @@ class MedtronicFragment : DaggerFragment() {
val unit = resourceHelper.gs(R.string.insulin_unit_shortname)
val ago: String
if (agoMsc < 60 * 1000) {
- ago = resourceHelper.gs(R.string.combo_pump_connected_now)
+ ago = resourceHelper.gs(R.string.medtronic_pump_connected_now)
} else if (bolusMinAgo < 60) {
ago = DateUtil.minAgo(resourceHelper, medtronicPumpStatus.lastBolusTime.time)
} else {
ago = DateUtil.hourAgo(medtronicPumpStatus.lastBolusTime.time, resourceHelper)
}
- medtronic_lastbolus.text = resourceHelper.gs(R.string.combo_last_bolus, bolus, unit, ago)
+ medtronic_lastbolus.text = resourceHelper.gs(R.string.mdt_last_bolus, bolus, unit, ago)
} else {
medtronic_lastbolus.text = ""
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicPumpPlugin.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicPumpPlugin.java
similarity index 96%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicPumpPlugin.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicPumpPlugin.java
index 769b5ecfc3..8363250cd5 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicPumpPlugin.java
+++ b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/MedtronicPumpPlugin.java
@@ -30,13 +30,13 @@ import javax.inject.Inject;
import javax.inject.Singleton;
import dagger.android.HasAndroidInjector;
-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.data.PumpEnactResult;
import info.nightscout.androidaps.db.Source;
import info.nightscout.androidaps.db.TemporaryBasal;
+
import info.nightscout.androidaps.events.EventRefreshOverview;
import info.nightscout.androidaps.interfaces.ActivePluginProvider;
import info.nightscout.androidaps.interfaces.CommandQueueProvider;
@@ -53,7 +53,6 @@ import info.nightscout.androidaps.plugins.general.overview.events.EventNewNotifi
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification;
import info.nightscout.androidaps.plugins.pump.common.PumpPluginAbstract;
import info.nightscout.androidaps.plugins.pump.common.data.PumpStatus;
-import info.nightscout.androidaps.plugins.pump.common.defs.DeviceCommandExecutor;
import info.nightscout.androidaps.plugins.pump.common.defs.PumpDriverState;
import info.nightscout.androidaps.plugins.pump.common.defs.PumpType;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkConst;
@@ -80,11 +79,13 @@ import info.nightscout.androidaps.plugins.pump.medtronic.defs.MedtronicNotificat
import info.nightscout.androidaps.plugins.pump.medtronic.defs.MedtronicStatusRefreshType;
import info.nightscout.androidaps.plugins.pump.medtronic.defs.MedtronicUIResponseType;
import info.nightscout.androidaps.plugins.pump.medtronic.driver.MedtronicPumpStatus;
+import info.nightscout.androidaps.plugins.pump.medtronic.events.EventMedtronicPumpConfigurationChanged;
import info.nightscout.androidaps.plugins.pump.medtronic.events.EventMedtronicPumpValuesChanged;
-import info.nightscout.androidaps.plugins.pump.medtronic.events.EventRefreshButtonState;
+import info.nightscout.androidaps.plugins.pump.common.events.EventRefreshButtonState;
import info.nightscout.androidaps.plugins.pump.medtronic.service.RileyLinkMedtronicService;
import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicConst;
import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil;
+import info.nightscout.androidaps.utils.DateUtil;
import info.nightscout.androidaps.utils.FabricPrivacy;
import info.nightscout.androidaps.utils.TimeChangeType;
import info.nightscout.androidaps.utils.resources.ResourceHelper;
@@ -137,7 +138,8 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter
MedtronicPumpStatus medtronicPumpStatus,
MedtronicHistoryData medtronicHistoryData,
RileyLinkServiceData rileyLinkServiceData,
- ServiceTaskExecutor serviceTaskExecutor
+ ServiceTaskExecutor serviceTaskExecutor,
+ DateUtil dateUtil
) {
super(new PluginDescription() //
@@ -148,7 +150,7 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter
.preferencesId(R.xml.pref_medtronic)
.description(R.string.description_pump_medtronic), //
PumpType.Medtronic_522_722, // we default to most basic model, correct model from config is loaded later
- injector, resourceHelper, aapsLogger, commandQueue, rxBus, activePlugin, sp, context, fabricPrivacy
+ injector, resourceHelper, aapsLogger, commandQueue, rxBus, activePlugin, sp, context, fabricPrivacy, dateUtil
);
this.rileyLinkUtil = rileyLinkUtil;
@@ -178,6 +180,7 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter
aapsLogger.debug(LTag.PUMP, "RileyLinkMedtronicService is connected");
RileyLinkMedtronicService.LocalBinder mLocalBinder = (RileyLinkMedtronicService.LocalBinder) service;
rileyLinkMedtronicService = mLocalBinder.getServiceInstance();
+ rileyLinkMedtronicService.verifyConfiguration();
new Thread(() -> {
@@ -202,7 +205,7 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter
if (pref.getKey().equals(getResourceHelper().gs(R.string.key_rileylink_mac_address))) {
String value = sp.getStringOrNull(R.string.key_rileylink_mac_address, null);
- pref.setSummary(value == null ? getResourceHelper().gs(R.string.rileylink_error_address_not_set_short) : value);
+ pref.setSummary(value == null ? getResourceHelper().gs(R.string.not_set_short) : value);
}
}
@@ -217,7 +220,7 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter
medtronicPumpStatus.lastDataTime = medtronicPumpStatus.lastConnection;
medtronicPumpStatus.previousConnection = medtronicPumpStatus.lastConnection;
- if (rileyLinkMedtronicService != null) rileyLinkMedtronicService.verifyConfiguration();
+ //if (rileyLinkMedtronicService != null) rileyLinkMedtronicService.verifyConfiguration();
aapsLogger.debug(LTag.PUMP, "initPumpStatusData: " + this.medtronicPumpStatus);
@@ -243,10 +246,16 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter
return true;
}
- @Override public void doTuneUpDevice() {
+ @Override
+ public void doTuneUpDevice() {
rileyLinkMedtronicService.doTuneUpDevice();
}
+ @Override
+ public void triggerPumpConfigurationChangedEvent() {
+ rxBus.send(new EventMedtronicPumpConfigurationChanged());
+ }
+
private void migrateSettings() {
if ("US (916 MHz)".equals(sp.getString(MedtronicConst.Prefs.PumpFrequency, "US (916 MHz)"))) {
@@ -330,11 +339,6 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter
return rileyLinkMedtronicService;
}
- @Override
- public DeviceCommandExecutor getDeviceCommandExecutor() {
- return this.rileyLinkMedtronicService.getMedtronicUIComm(); // TODO fix this
- }
-
@Override
public boolean isInitialized() {
if (displayConnectionMessages)
@@ -770,7 +774,7 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter
if ((clock.localDeviceTime.getYear() <= 2015) || (timeDiff <= 24 * 60 * 60)) {
- aapsLogger.info(LTag.PUMP, "MedtronicPumpPlugin::checkTimeAndOptionallySetTime - Time difference is {} s. Set time on pump." + timeDiff);
+ aapsLogger.info(LTag.PUMP, "MedtronicPumpPlugin::checkTimeAndOptionallySetTime - Time difference is {} s. Set time on pump." , timeDiff);
rileyLinkMedtronicService.getMedtronicUIComm().executeCommand(MedtronicCommandType.SetRealTimeClock);
@@ -780,13 +784,13 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter
}
} else {
if ((clock.localDeviceTime.getYear() > 2015)) {
- aapsLogger.error("MedtronicPumpPlugin::checkTimeAndOptionallySetTime - Time difference over 24h requested [diff={}]. Doing nothing." + timeDiff);
+ aapsLogger.error("MedtronicPumpPlugin::checkTimeAndOptionallySetTime - Time difference over 24h requested [diff={} s]. Doing nothing.", timeDiff);
medtronicUtil.sendNotification(MedtronicNotificationType.TimeChangeOver24h, getResourceHelper(), rxBus);
}
}
} else {
- aapsLogger.info(LTag.PUMP, "MedtronicPumpPlugin::checkTimeAndOptionallySetTime - Time difference is {} s. Do nothing." + timeDiff);
+ aapsLogger.info(LTag.PUMP, "MedtronicPumpPlugin::checkTimeAndOptionallySetTime - Time difference is {} s. Do nothing.", timeDiff);
}
scheduleNextRefresh(MedtronicStatusRefreshType.PumpTime, 0);
@@ -866,7 +870,7 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter
Intent i = new Intent(context, ErrorHelperActivity.class);
i.putExtra("soundid", R.raw.boluserror);
i.putExtra("status", getResourceHelper().gs(R.string.medtronic_cmd_cancel_bolus_not_supported));
- i.putExtra("title", getResourceHelper().gs(R.string.combo_warning));
+ i.putExtra("title", getResourceHelper().gs(R.string.medtronic_warning));
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
@@ -1132,11 +1136,14 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter
private void readPumpHistoryLogic() {
+ boolean debugHistory = false;
+
LocalDateTime targetDate = null;
if (lastPumpHistoryEntry == null) {
- aapsLogger.debug(LTag.PUMP, getLogPrefix() + "readPumpHistoryLogic(): lastPumpHistoryEntry: null");
+ if (debugHistory)
+ aapsLogger.debug(LTag.PUMP, getLogPrefix() + "readPumpHistoryLogic(): lastPumpHistoryEntry: null");
Long lastPumpHistoryEntryTime = getLastPumpEntryTime();
@@ -1145,13 +1152,15 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter
medtronicHistoryData.setIsInInit(true);
if (lastPumpHistoryEntryTime == 0L) {
- aapsLogger.debug(LTag.PUMP, getLogPrefix() + "readPumpHistoryLogic(): lastPumpHistoryEntryTime: 0L - targetDate: "
- + targetDate);
+ if (debugHistory)
+ aapsLogger.debug(LTag.PUMP, getLogPrefix() + "readPumpHistoryLogic(): lastPumpHistoryEntryTime: 0L - targetDate: "
+ + targetDate);
targetDate = timeMinus36h;
} else {
// LocalDateTime lastHistoryRecordTime = DateTimeUtil.toLocalDateTime(lastPumpHistoryEntryTime);
- aapsLogger.debug(LTag.PUMP, getLogPrefix() + "readPumpHistoryLogic(): lastPumpHistoryEntryTime: " + lastPumpHistoryEntryTime + " - targetDate: " + targetDate);
+ if (debugHistory)
+ aapsLogger.debug(LTag.PUMP, getLogPrefix() + "readPumpHistoryLogic(): lastPumpHistoryEntryTime: " + lastPumpHistoryEntryTime + " - targetDate: " + targetDate);
medtronicHistoryData.setLastHistoryRecordTime(lastPumpHistoryEntryTime);
@@ -1167,30 +1176,35 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter
targetDate = (timeMinus36h.isAfter(lastHistoryRecordTime) ? timeMinus36h : lastHistoryRecordTime);
- aapsLogger.debug(LTag.PUMP, getLogPrefix() + "readPumpHistoryLogic(): targetDate: " + targetDate);
+ if (debugHistory)
+ aapsLogger.debug(LTag.PUMP, getLogPrefix() + "readPumpHistoryLogic(): targetDate: " + targetDate);
}
} else {
- aapsLogger.debug(LTag.PUMP, getLogPrefix() + "readPumpHistoryLogic(): lastPumpHistoryEntry: not null - " + medtronicUtil.gsonInstance.toJson(lastPumpHistoryEntry));
+ if (debugHistory)
+ aapsLogger.debug(LTag.PUMP, getLogPrefix() + "readPumpHistoryLogic(): lastPumpHistoryEntry: not null - " + medtronicUtil.gsonInstance.toJson(lastPumpHistoryEntry));
medtronicHistoryData.setIsInInit(false);
// medtronicHistoryData.setLastHistoryRecordTime(lastPumpHistoryEntry.atechDateTime);
// targetDate = lastPumpHistoryEntry.atechDateTime;
}
- aapsLogger.debug(LTag.PUMP, "HST: Target Date: " + targetDate);
+ //aapsLogger.debug(LTag.PUMP, "HST: Target Date: " + targetDate);
MedtronicUITask responseTask2 = rileyLinkMedtronicService.getMedtronicUIComm().executeCommand(MedtronicCommandType.GetHistoryData,
lastPumpHistoryEntry, targetDate);
- aapsLogger.debug(LTag.PUMP, "HST: After task");
+ if (debugHistory)
+ aapsLogger.debug(LTag.PUMP, "HST: After task");
PumpHistoryResult historyResult = (PumpHistoryResult) responseTask2.returnData;
- aapsLogger.debug(LTag.PUMP, "HST: History Result: " + historyResult.toString());
+ if (debugHistory)
+ aapsLogger.debug(LTag.PUMP, "HST: History Result: " + historyResult.toString());
PumpHistoryEntry latestEntry = historyResult.getLatestEntry();
- aapsLogger.debug(LTag.PUMP, getLogPrefix() + "Last entry: " + latestEntry);
+ if (debugHistory)
+ aapsLogger.debug(LTag.PUMP, getLogPrefix() + "Last entry: " + latestEntry);
if (latestEntry == null) // no new history to read
return;
@@ -1198,7 +1212,8 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter
this.lastPumpHistoryEntry = latestEntry;
sp.putLong(MedtronicConst.Statistics.LastPumpHistoryEntry, latestEntry.atechDateTime);
- aapsLogger.debug(LTag.PUMP, "HST: History: valid=" + historyResult.validEntries.size() + ", unprocessed=" + historyResult.unprocessedEntries.size());
+ if (debugHistory)
+ aapsLogger.debug(LTag.PUMP, "HST: History: valid=" + historyResult.validEntries.size() + ", unprocessed=" + historyResult.unprocessedEntries.size());
this.medtronicHistoryData.addNewHistory(historyResult);
this.medtronicHistoryData.filterNewEntries();
@@ -1220,11 +1235,9 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter
// update to last entry
// - save
// - determine pump status
-
- //
-
}
+
private Long getLastPumpEntryTime() {
Long lastPumpEntryTime = sp.getLong(MedtronicConst.Statistics.LastPumpHistoryEntry, 0L);
@@ -1544,7 +1557,7 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter
Intent i = new Intent(context, ErrorHelperActivity.class);
i.putExtra("soundid", R.raw.boluserror);
i.putExtra("status", getResourceHelper().gs(R.string.medtronic_error_operation_not_possible_no_configuration));
- i.putExtra("title", getResourceHelper().gs(R.string.combo_warning));
+ i.putExtra("title", getResourceHelper().gs(R.string.medtronic_warning));
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
}
@@ -1577,6 +1590,11 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter
this.hasTimeDateOrTimeZoneChanged = true;
}
+ @Override
+ public boolean setNeutralTempAtFullHour() {
+ return sp.getBoolean(R.string.key_set_neutral_temps, true);
+ }
+
private void setEnableCustomAction(MedtronicCustomActionType customAction, boolean isEnabled) {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/MedtronicCommunicationManager.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/MedtronicCommunicationManager.java
similarity index 97%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/MedtronicCommunicationManager.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/MedtronicCommunicationManager.java
index 68230b0ce2..b71dec4621 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/MedtronicCommunicationManager.java
+++ b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/MedtronicCommunicationManager.java
@@ -12,9 +12,9 @@ import java.util.Map;
import javax.inject.Inject;
import dagger.android.HasAndroidInjector;
-import info.nightscout.androidaps.logging.AAPSLogger;
import info.nightscout.androidaps.logging.LTag;
import info.nightscout.androidaps.plugins.pump.common.data.PumpStatus;
+import info.nightscout.androidaps.plugins.pump.common.defs.PumpDeviceState;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkCommunicationManager;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkConst;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.RFSpy;
@@ -24,8 +24,6 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.data.RLMe
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.data.RadioPacket;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.data.RadioResponse;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs.RLMessageType;
-import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.RileyLinkServiceData;
-import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks.ServiceTaskExecutor;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks.WakeAndTuneTask;
import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil;
import info.nightscout.androidaps.plugins.pump.common.utils.DateTimeUtil;
@@ -48,7 +46,6 @@ import info.nightscout.androidaps.plugins.pump.medtronic.data.dto.PumpSettingDTO
import info.nightscout.androidaps.plugins.pump.medtronic.data.dto.TempBasalPair;
import info.nightscout.androidaps.plugins.pump.medtronic.defs.MedtronicCommandType;
import info.nightscout.androidaps.plugins.pump.medtronic.defs.MedtronicDeviceType;
-import info.nightscout.androidaps.plugins.pump.medtronic.defs.PumpDeviceState;
import info.nightscout.androidaps.plugins.pump.medtronic.driver.MedtronicPumpStatus;
import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil;
@@ -84,9 +81,9 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager
}
@Override
- public E createResponseMessage(byte[] payload, Class clazz) {
+ public RLMessage createResponseMessage(byte[] payload) {
PumpMessage pumpMessage = new PumpMessage(aapsLogger, payload);
- return (E) pumpMessage;
+ return pumpMessage;
}
@Override
@@ -151,6 +148,8 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager
PumpDeviceState state = medtronicPumpStatus.getPumpDeviceState();
+ // check connection
+
byte[] pumpMsgContent = createPumpMessageContent(RLMessageType.ReadSimpleData); // simple
RFSpyResponse rfSpyResponse = rfspy.transmitThenReceive(new RadioPacket(injector, pumpMsgContent), (byte) 0, (byte) 200,
(byte) 0, (byte) 0, 25000, (byte) 0);
@@ -167,7 +166,7 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager
if (radioResponse.isValid()) {
- PumpMessage pumpResponse = createResponseMessage(radioResponse.getPayload(), PumpMessage.class);
+ PumpMessage pumpResponse = (PumpMessage) createResponseMessage(radioResponse.getPayload());
if (!pumpResponse.isValid()) {
aapsLogger.warn(LTag.PUMPCOMM, "Response is invalid ! [interrupted={}, timeout={}]", rfSpyResponse.wasInterrupted(),
@@ -548,8 +547,8 @@ public class MedtronicCommunicationManager extends RileyLinkCommunicationManager
// All pump communications go through this function.
- private PumpMessage sendAndListen(RLMessage msg, int timeout_ms) throws RileyLinkCommunicationException {
- return sendAndListen(msg, timeout_ms, PumpMessage.class);
+ protected PumpMessage sendAndListen(RLMessage msg, int timeout_ms) throws RileyLinkCommunicationException {
+ return (PumpMessage) super.sendAndListen(msg, timeout_ms);
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/MedtronicConverter.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/MedtronicConverter.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/MedtronicConverter.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/MedtronicConverter.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/MedtronicHistoryDecoder.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/MedtronicHistoryDecoder.java
similarity index 93%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/MedtronicHistoryDecoder.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/MedtronicHistoryDecoder.java
index 450425b26c..a4335583a2 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/MedtronicHistoryDecoder.java
+++ b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/MedtronicHistoryDecoder.java
@@ -118,7 +118,7 @@ public abstract class MedtronicHistoryDecoder i
StringUtil.appendToStringBuilder(sb, "" + unknownEntry.getKey(), ", ");
}
- aapsLogger.error(LTag.PUMPCOMM, "STATISTICS OF PUMP DECODE");
+ aapsLogger.info(LTag.PUMPCOMM, "STATISTICS OF PUMP DECODE");
if (unknownOpCodes.size() > 0) {
aapsLogger.warn(LTag.PUMPCOMM, "Unknown Op Codes: {}", sb.toString());
@@ -137,9 +137,9 @@ public abstract class MedtronicHistoryDecoder i
String spaces = StringUtils.repeat(" ", 14 - entry.getKey().name().length());
- aapsLogger.error(LTag.PUMPCOMM, " {}{} - {}. Elements: {}", entry.getKey().name(), spaces, entry.getValue().size(), sb.toString());
+ aapsLogger.info(LTag.PUMPCOMM, " {}{} - {}. Elements: {}", entry.getKey().name(), spaces, entry.getValue().size(), sb.toString());
} else {
- aapsLogger.error(LTag.PUMPCOMM, " {} - {}", entry.getKey().name(), entry.getValue().size());
+ aapsLogger.info(LTag.PUMPCOMM, " {} - {}", entry.getKey().name(), entry.getValue().size());
}
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/MedtronicHistoryDecoderInterface.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/MedtronicHistoryDecoderInterface.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/MedtronicHistoryDecoderInterface.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/MedtronicHistoryDecoderInterface.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/MedtronicHistoryEntry.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/MedtronicHistoryEntry.java
similarity index 99%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/MedtronicHistoryEntry.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/MedtronicHistoryEntry.java
index fb42eca31c..b59dce7113 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/MedtronicHistoryEntry.java
+++ b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/MedtronicHistoryEntry.java
@@ -3,7 +3,6 @@ package info.nightscout.androidaps.plugins.pump.medtronic.comm.history;
import com.google.gson.annotations.Expose;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import java.util.HashMap;
import java.util.List;
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/MedtronicHistoryEntryInterface.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/MedtronicHistoryEntryInterface.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/MedtronicHistoryEntryInterface.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/MedtronicHistoryEntryInterface.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/RawHistoryPage.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/RawHistoryPage.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/RawHistoryPage.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/RawHistoryPage.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/RecordDecodeStatus.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/RecordDecodeStatus.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/RecordDecodeStatus.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/RecordDecodeStatus.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/cgms/CGMSHistoryEntry.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/cgms/CGMSHistoryEntry.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/cgms/CGMSHistoryEntry.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/cgms/CGMSHistoryEntry.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/cgms/CGMSHistoryEntryType.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/cgms/CGMSHistoryEntryType.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/cgms/CGMSHistoryEntryType.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/cgms/CGMSHistoryEntryType.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/cgms/MedtronicCGMSHistoryDecoder.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/cgms/MedtronicCGMSHistoryDecoder.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/cgms/MedtronicCGMSHistoryDecoder.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/cgms/MedtronicCGMSHistoryDecoder.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/MedtronicPumpHistoryDecoder.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/MedtronicPumpHistoryDecoder.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/MedtronicPumpHistoryDecoder.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/MedtronicPumpHistoryDecoder.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/PumpHistoryEntry.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/PumpHistoryEntry.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/PumpHistoryEntry.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/PumpHistoryEntry.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/PumpHistoryEntryType.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/PumpHistoryEntryType.java
similarity index 99%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/PumpHistoryEntryType.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/PumpHistoryEntryType.java
index cf3067c4ab..ddbe5f03cb 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/PumpHistoryEntryType.java
+++ b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/PumpHistoryEntryType.java
@@ -214,12 +214,10 @@ public enum PumpHistoryEntryType // implements CodeEnum
Bolus.addSpecialRuleHead(new SpecialRule(MedtronicDeviceType.Medtronic_523andHigher, 8));
// BolusWizardChange.addSpecialRuleBody(new SpecialRule(MedtronicDeviceType.Medtronic_522andHigher, 143));
//ChangeBolusWizardSetup.addSpecialRuleBody(new SpecialRule(MedtronicDeviceType.Medtronic_523andHigher, 137)); // V5:
- // 522
- // has
- // old
- // form
+ // 522 has old form
BolusWizard.addSpecialRuleBody(new SpecialRule(MedtronicDeviceType.Medtronic_523andHigher, 15));
BolusReminder.addSpecialRuleBody(new SpecialRule(MedtronicDeviceType.Medtronic_523andHigher, 2));
+ ChangeSensorSetup2.addSpecialRuleBody(new SpecialRule(MedtronicDeviceType.Medtronic_523andHigher, 34));
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/PumpHistoryResult.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/PumpHistoryResult.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/PumpHistoryResult.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/PumpHistoryResult.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/CarelinkLongMessageBody.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/CarelinkLongMessageBody.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/CarelinkLongMessageBody.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/CarelinkLongMessageBody.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/CarelinkShortMessageBody.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/CarelinkShortMessageBody.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/CarelinkShortMessageBody.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/CarelinkShortMessageBody.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/GetHistoryPageCarelinkMessageBody.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/GetHistoryPageCarelinkMessageBody.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/GetHistoryPageCarelinkMessageBody.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/GetHistoryPageCarelinkMessageBody.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/MessageBody.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/MessageBody.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/MessageBody.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/MessageBody.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/PacketType.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/PacketType.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/PacketType.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/PacketType.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/PumpAckMessageBody.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/PumpAckMessageBody.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/PumpAckMessageBody.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/PumpAckMessageBody.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/PumpMessage.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/PumpMessage.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/PumpMessage.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/PumpMessage.java
index 8c7eb0bcee..2d235de20d 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/PumpMessage.java
+++ b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/PumpMessage.java
@@ -30,8 +30,8 @@ public class PumpMessage implements RLMessage {
public PumpMessage(AAPSLogger aapsLogger, byte[] rxData) {
- init(rxData);
this.aapsLogger = aapsLogger;
+ init(rxData);
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/UnknownMessageBody.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/UnknownMessageBody.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/UnknownMessageBody.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/message/UnknownMessageBody.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUIComm.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUIComm.java
similarity index 90%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUIComm.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUIComm.java
index 6cd6785dfa..0eed54e71f 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUIComm.java
+++ b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUIComm.java
@@ -3,7 +3,6 @@ package info.nightscout.androidaps.plugins.pump.medtronic.comm.ui;
import dagger.android.HasAndroidInjector;
import info.nightscout.androidaps.logging.AAPSLogger;
import info.nightscout.androidaps.logging.LTag;
-import info.nightscout.androidaps.plugins.pump.common.defs.DeviceCommandExecutor;
import info.nightscout.androidaps.plugins.pump.medtronic.comm.MedtronicCommunicationManager;
import info.nightscout.androidaps.plugins.pump.medtronic.defs.MedtronicCommandType;
import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil;
@@ -11,7 +10,7 @@ import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil;
/**
* Created by andy on 6/14/18.
*/
-public class MedtronicUIComm implements DeviceCommandExecutor {
+public class MedtronicUIComm {
private final HasAndroidInjector injector;
private final AAPSLogger aapsLogger;
@@ -35,7 +34,7 @@ public class MedtronicUIComm implements DeviceCommandExecutor {
public synchronized MedtronicUITask executeCommand(MedtronicCommandType commandType, Object... parameters) {
- aapsLogger.warn(LTag.PUMP, "Execute Command: " + commandType.name());
+ aapsLogger.info(LTag.PUMP, "Execute Command: " + commandType.name());
MedtronicUITask task = new MedtronicUITask(injector, commandType, parameters);
@@ -56,4 +55,4 @@ public class MedtronicUIComm implements DeviceCommandExecutor {
public int getInvalidResponsesCount() {
return medtronicCommunicationManager.getNotConnectedCount();
}
-}
+}
\ No newline at end of file
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUIPostprocessor.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUIPostprocessor.java
similarity index 98%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUIPostprocessor.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUIPostprocessor.java
index 364337d019..6d71633bea 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUIPostprocessor.java
+++ b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUIPostprocessor.java
@@ -161,7 +161,8 @@ public class MedtronicUIPostprocessor {
// no postprocessing
default:
- aapsLogger.error(LTag.PUMP, "Post-processing not implemented for {}.", uiTask.commandType.name());
+ break;
+ //aapsLogger.error(LTag.PUMP, "Post-processing not implemented for {}.", uiTask.commandType.name());
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUITask.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUITask.java
similarity index 95%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUITask.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUITask.java
index 51a8020fcd..fedacfd117 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUITask.java
+++ b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/ui/MedtronicUITask.java
@@ -8,15 +8,15 @@ import dagger.android.HasAndroidInjector;
import info.nightscout.androidaps.logging.AAPSLogger;
import info.nightscout.androidaps.logging.LTag;
import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
+import info.nightscout.androidaps.plugins.pump.common.defs.PumpDeviceState;
import info.nightscout.androidaps.plugins.pump.medtronic.comm.MedtronicCommunicationManager;
import info.nightscout.androidaps.plugins.pump.medtronic.comm.history.pump.PumpHistoryEntry;
import info.nightscout.androidaps.plugins.pump.medtronic.data.dto.BasalProfile;
import info.nightscout.androidaps.plugins.pump.medtronic.data.dto.TempBasalPair;
import info.nightscout.androidaps.plugins.pump.medtronic.defs.MedtronicCommandType;
import info.nightscout.androidaps.plugins.pump.medtronic.defs.MedtronicUIResponseType;
-import info.nightscout.androidaps.plugins.pump.medtronic.defs.PumpDeviceState;
import info.nightscout.androidaps.plugins.pump.medtronic.driver.MedtronicPumpStatus;
-import info.nightscout.androidaps.plugins.pump.medtronic.events.EventMedtronicDeviceStatusChange;
+import info.nightscout.androidaps.plugins.pump.common.events.EventRileyLinkDeviceStatusChange;
import info.nightscout.androidaps.plugins.pump.medtronic.events.EventMedtronicPumpValuesChanged;
import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil;
@@ -201,10 +201,10 @@ public class MedtronicUITask {
}
if (responseType == MedtronicUIResponseType.Invalid) {
- rxBus.send(new EventMedtronicDeviceStatusChange(PumpDeviceState.ErrorWhenCommunicating,
+ rxBus.send(new EventRileyLinkDeviceStatusChange(PumpDeviceState.ErrorWhenCommunicating,
"Unsupported command in MedtronicUITask"));
} else if (responseType == MedtronicUIResponseType.Error) {
- rxBus.send(new EventMedtronicDeviceStatusChange(PumpDeviceState.ErrorWhenCommunicating,
+ rxBus.send(new EventRileyLinkDeviceStatusChange(PumpDeviceState.ErrorWhenCommunicating,
errorDescription));
} else {
rxBus.send(new EventMedtronicPumpValuesChanged());
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/MedtronicHistoryData.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/MedtronicHistoryData.java
similarity index 96%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/MedtronicHistoryData.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/MedtronicHistoryData.java
index 496f2af06b..5c2489a5ef 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/MedtronicHistoryData.java
+++ b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/MedtronicHistoryData.java
@@ -22,7 +22,6 @@ import javax.inject.Inject;
import javax.inject.Singleton;
import dagger.android.HasAndroidInjector;
-import info.nightscout.androidaps.MainApp;
import info.nightscout.androidaps.data.DetailedBolusInfo;
import info.nightscout.androidaps.db.CareportalEvent;
import info.nightscout.androidaps.db.DbObjectBase;
@@ -31,11 +30,11 @@ import info.nightscout.androidaps.db.Source;
import info.nightscout.androidaps.db.TDD;
import info.nightscout.androidaps.db.TemporaryBasal;
import info.nightscout.androidaps.interfaces.ActivePluginProvider;
+import info.nightscout.androidaps.interfaces.DatabaseHelperInterface;
import info.nightscout.androidaps.logging.AAPSLogger;
import info.nightscout.androidaps.logging.LTag;
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload;
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.common.utils.DateTimeUtil;
import info.nightscout.androidaps.plugins.pump.common.utils.StringUtil;
import info.nightscout.androidaps.plugins.pump.medtronic.comm.history.pump.MedtronicPumpHistoryDecoder;
@@ -52,9 +51,8 @@ import info.nightscout.androidaps.plugins.pump.medtronic.data.dto.TempBasalProce
import info.nightscout.androidaps.plugins.pump.medtronic.driver.MedtronicPumpStatus;
import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicConst;
import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil;
-import info.nightscout.androidaps.plugins.treatments.Treatment;
-import info.nightscout.androidaps.plugins.treatments.TreatmentService;
-import info.nightscout.androidaps.plugins.treatments.TreatmentsPlugin;
+import info.nightscout.androidaps.db.Treatment;
+import info.nightscout.androidaps.plugins.treatments.TreatmentUpdateReturn;
import info.nightscout.androidaps.utils.DateUtil;
import info.nightscout.androidaps.utils.Round;
import info.nightscout.androidaps.utils.sharedPreferences.SP;
@@ -79,8 +77,10 @@ public class MedtronicHistoryData {
private final AAPSLogger aapsLogger;
private final SP sp;
private final ActivePluginProvider activePlugin;
+ private final NSUpload nsUpload;
private final MedtronicUtil medtronicUtil;
private final MedtronicPumpHistoryDecoder medtronicPumpHistoryDecoder;
+ private final DatabaseHelperInterface databaseHelper;
private List allHistory;
private List newHistory = null;
@@ -98,8 +98,10 @@ public class MedtronicHistoryData {
* Double bolus debug. We seem to have small problem with double Boluses (or sometimes also missing boluses
* from history. This flag turns on debugging for that (default is off=false)... Debuging is pretty detailed,
* so log files will get bigger.
+ * Note: June 2020. Since this seems to be fixed, I am disabling this per default. I will leave code inside
+ * in case we need it again. Code that turns this on is commented out RileyLinkMedtronicService#verifyConfiguration()
*/
- public static boolean doubleBolusDebug = false;
+ public static final boolean doubleBolusDebug = false;
@Inject
public MedtronicHistoryData(
@@ -107,8 +109,10 @@ public class MedtronicHistoryData {
AAPSLogger aapsLogger,
SP sp,
ActivePluginProvider activePlugin,
+ NSUpload nsUpload,
MedtronicUtil medtronicUtil,
- MedtronicPumpHistoryDecoder medtronicPumpHistoryDecoder
+ MedtronicPumpHistoryDecoder medtronicPumpHistoryDecoder,
+ DatabaseHelperInterface databaseHelperInterface
) {
this.allHistory = new ArrayList<>();
@@ -116,8 +120,10 @@ public class MedtronicHistoryData {
this.aapsLogger = aapsLogger;
this.sp = sp;
this.activePlugin = activePlugin;
+ this.nsUpload = nsUpload;
this.medtronicUtil = medtronicUtil;
this.medtronicPumpHistoryDecoder = medtronicPumpHistoryDecoder;
+ this.databaseHelper = databaseHelperInterface;
}
private Gson gson() {
@@ -530,7 +536,7 @@ public class MedtronicHistoryData {
private void uploadCareportalEvent(long date, String event) {
- if (MainApp.getDbHelper().getCareportalEventFromTimestamp(date) != null)
+ if (databaseHelper.getCareportalEventFromTimestamp(date) != null)
return;
try {
JSONObject data = new JSONObject();
@@ -543,8 +549,8 @@ public class MedtronicHistoryData {
careportalEvent.source = Source.USER;
careportalEvent.eventType = event;
careportalEvent.json = data.toString();
- MainApp.getDbHelper().createOrUpdate(careportalEvent);
- NSUpload.uploadCareportalEntryToNS(data);
+ databaseHelper.createOrUpdate(careportalEvent);
+ nsUpload.uploadCareportalEntryToNS(data);
} catch (JSONException e) {
aapsLogger.error("Unhandled exception", e);
}
@@ -557,7 +563,7 @@ public class MedtronicHistoryData {
aapsLogger.debug(LTag.PUMP, getLogPrefix() + "TDDs found: {}.\n{}", tdds.size(), gson().toJson(tdds));
- List tddsDb = MainApp.getDbHelper().getTDDsForLastXDays(3);
+ List tddsDb = databaseHelper.getTDDsForLastXDays(3);
for (PumpHistoryEntry tdd : tdds) {
@@ -573,7 +579,7 @@ public class MedtronicHistoryData {
aapsLogger.debug(LTag.PUMP, "TDD Add: {}", tddNew);
- MainApp.getDbHelper().createOrUpdateTDD(tddNew);
+ databaseHelper.createOrUpdateTDD(tddNew);
} else {
@@ -582,7 +588,7 @@ public class MedtronicHistoryData {
aapsLogger.debug(LTag.PUMP, "TDD Edit: {}", tddDbEntry);
- MainApp.getDbHelper().createOrUpdateTDD(tddDbEntry);
+ databaseHelper.createOrUpdateTDD(tddDbEntry);
}
}
}
@@ -743,7 +749,7 @@ public class MedtronicHistoryData {
tempBasal.durationInMinutes = tempBasalProcessDTO.getDuration();
- MainApp.getDbHelper().createOrUpdate(tempBasal);
+ databaseHelper.createOrUpdate(tempBasal);
aapsLogger.debug(LTag.PUMP, "Edit " + ProcessHistoryRecord.TBR.getDescription() + " - (entryFromDb={}) ", tempBasal);
} else {
@@ -791,7 +797,7 @@ public class MedtronicHistoryData {
}
}
- TemporaryBasal tempBasal = MainApp.getDbHelper().findTempBasalByPumpId(pumpId);
+ TemporaryBasal tempBasal = databaseHelper.findTempBasalByPumpId(pumpId);
return tempBasal;
}
@@ -882,7 +888,7 @@ public class MedtronicHistoryData {
if (processHistoryRecord == ProcessHistoryRecord.Bolus) {
return activePlugin.getActiveTreatments().getTreatmentsFromHistoryAfterTimestamp(startTimestamp);
} else {
- return MainApp.getDbHelper().getTemporaryBasalsDataFromTime(startTimestamp, true);
+ return databaseHelper.getTemporaryBasalsDataFromTime(startTimestamp, true);
}
}
@@ -990,7 +996,7 @@ public class MedtronicHistoryData {
treatment.pumpId = bolus.getPumpId();
treatment.insulin = bolusDTO.getDeliveredAmount();
- TreatmentService.UpdateReturn updateReturn = ((TreatmentsPlugin) activePlugin.getActiveTreatments()).getService().createOrUpdateMedtronic(treatment, false);
+ TreatmentUpdateReturn updateReturn = activePlugin.getActiveTreatments().createOrUpdateMedtronic(treatment, false);
if (doubleBolusDebug)
aapsLogger.debug(LTag.PUMP, "DoubleBolusDebug: addBolus(tretament!=null): NewTreatment={}, UpdateReturn={}", treatment, updateReturn);
@@ -1040,7 +1046,7 @@ public class MedtronicHistoryData {
treatment.setLinkedObject(temporaryBasalDb);
- MainApp.getDbHelper().createOrUpdate(temporaryBasalDb);
+ databaseHelper.createOrUpdate(temporaryBasalDb);
aapsLogger.debug(LTag.PUMP, operation + " - [date={},pumpId={}, rate={} {}, duration={}]", //
temporaryBasalDb.date, //
@@ -1056,7 +1062,7 @@ public class MedtronicHistoryData {
for (TempBasalProcessDTO tempBasalProcess : tempBasalProcessList) {
- TemporaryBasal tempBasal = MainApp.getDbHelper().findTempBasalByPumpId(tempBasalProcess.itemOne.getPumpId());
+ TemporaryBasal tempBasal = databaseHelper.findTempBasalByPumpId(tempBasalProcess.itemOne.getPumpId());
if (tempBasal == null) {
// add
@@ -1072,7 +1078,7 @@ public class MedtronicHistoryData {
tempBasalProcess.itemOne.setLinkedObject(tempBasal);
tempBasalProcess.itemTwo.setLinkedObject(tempBasal);
- MainApp.getDbHelper().createOrUpdate(tempBasal);
+ databaseHelper.createOrUpdate(tempBasal);
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BasalProfile.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BasalProfile.java
similarity index 98%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BasalProfile.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BasalProfile.java
index 61b235f1d2..c3f2050805 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BasalProfile.java
+++ b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BasalProfile.java
@@ -8,7 +8,6 @@ import java.util.ArrayList;
import java.util.List;
import info.nightscout.androidaps.logging.AAPSLogger;
-import info.nightscout.androidaps.logging.L;
import info.nightscout.androidaps.logging.LTag;
import info.nightscout.androidaps.plugins.pump.common.defs.PumpType;
import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil;
@@ -363,10 +362,6 @@ public class BasalProfile {
}
- private boolean isLogEnabled() {
- return L.isEnabled(LTag.PUMPCOMM);
- }
-
public boolean verify(PumpType pumpType) {
try {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BasalProfileEntry.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BasalProfileEntry.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BasalProfileEntry.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BasalProfileEntry.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BatteryStatusDTO.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BatteryStatusDTO.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BatteryStatusDTO.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BatteryStatusDTO.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BolusDTO.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BolusDTO.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BolusDTO.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BolusDTO.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BolusWizardDTO.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BolusWizardDTO.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BolusWizardDTO.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BolusWizardDTO.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/ClockDTO.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/ClockDTO.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/ClockDTO.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/ClockDTO.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/DailyTotalsDTO.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/DailyTotalsDTO.java
similarity index 83%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/DailyTotalsDTO.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/DailyTotalsDTO.java
index 8ca17e152f..11bd57d017 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/DailyTotalsDTO.java
+++ b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/DailyTotalsDTO.java
@@ -1,14 +1,10 @@
package info.nightscout.androidaps.plugins.pump.medtronic.data.dto;
-import com.google.common.base.MoreObjects;
import com.google.gson.annotations.Expose;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import org.apache.commons.lang3.builder.ToStringBuilder;
import info.nightscout.androidaps.db.TDD;
-import info.nightscout.androidaps.logging.L;
-import info.nightscout.androidaps.logging.StacktraceLoggerWrapper;
import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil;
import info.nightscout.androidaps.plugins.pump.common.utils.DateTimeUtil;
import info.nightscout.androidaps.plugins.pump.common.utils.StringUtil;
@@ -209,38 +205,37 @@ public class DailyTotalsDTO {
//LOG.debug("523: {}", toString());
}
-
@Override
public String toString() {
- return MoreObjects.toStringHelper(this) //
- .add("bgAvg", bgAvg) //
- .add("bgLow", bgLow) //
- .add("bgHigh", bgHigh) //
- .add("bgCount", bgCount) //
- .add("sensorAvg", sensorAvg) //
- .add("sensorMin", sensorMin) //
- .add("sensorMax", sensorMax) //
- .add("sensorCalcCount", sensorCalcCount) //
- .add("sensorDataCount", sensorDataCount) //
- .add("insulinTotal", insulinTotal) //
- .add("insulinBasal", insulinBasal) //
- .add("insulinBolus", insulinBolus) //
- .add("insulinCarbs", insulinCarbs) //
- .add("bolusTotal", bolusTotal) //
- .add("bolusFood", bolusFood) //
- .add("bolusCorrection", bolusCorrection) //
- .add("bolusManual", bolusManual) //
- .add("bolusCount", bolusCount) //
- .add("bolusCountFoodOrCorr", bolusCountFoodOrCorr) //
- .add("bolusCountFoodAndCorr", bolusCountFoodAndCorr) //
- .add("bolusCountFood", bolusCountFood) //
- .add("bolusCountCorr", bolusCountCorr) //
- .add("bolusCountManual", bolusCountManual) //
- .omitNullValues() //
+ return new ToStringBuilder(this)
+ .append("bgAvg", bgAvg)
+ .append("bgLow", bgLow)
+ .append("bgHigh", bgHigh)
+ .append("bgCount", bgCount)
+ .append("sensorAvg", sensorAvg)
+ .append("sensorMin", sensorMin)
+ .append("sensorMax", sensorMax)
+ .append("sensorCalcCount", sensorCalcCount)
+ .append("sensorDataCount", sensorDataCount)
+ .append("insulinTotal", insulinTotal)
+ .append("insulinBasal", insulinBasal)
+ .append("insulinBolus", insulinBolus)
+ .append("insulinCarbs", insulinCarbs)
+ .append("bolusTotal", bolusTotal)
+ .append("bolusFood", bolusFood)
+ .append("bolusFoodAndCorr", bolusFoodAndCorr)
+ .append("bolusCorrection", bolusCorrection)
+ .append("bolusManual", bolusManual)
+ .append("bolusCount", bolusCount)
+ .append("bolusCountFoodOrCorr", bolusCountFoodOrCorr)
+ .append("bolusCountFoodAndCorr", bolusCountFoodAndCorr)
+ .append("bolusCountManual", bolusCountManual)
+ .append("bolusCountFood", bolusCountFood)
+ .append("bolusCountCorr", bolusCountCorr)
+ .append("entry", entry)
.toString();
}
-
public void setTDD(TDD tdd) {
tdd.date = DateTimeUtil.toMillisFromATD(this.entry.atechDateTime);
tdd.basal = insulinBasal;
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/PumpSettingDTO.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/PumpSettingDTO.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/PumpSettingDTO.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/PumpSettingDTO.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/PumpTimeStampedRecord.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/PumpTimeStampedRecord.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/PumpTimeStampedRecord.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/PumpTimeStampedRecord.java
diff --git a/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/RLHistoryItemMedtronic.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/RLHistoryItemMedtronic.java
new file mode 100644
index 0000000000..399f58e8ac
--- /dev/null
+++ b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/RLHistoryItemMedtronic.java
@@ -0,0 +1,41 @@
+package info.nightscout.androidaps.plugins.pump.medtronic.data.dto;
+
+import org.joda.time.LocalDateTime;
+
+import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.data.RLHistoryItem;
+import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkError;
+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.medtronic.defs.MedtronicCommandType;
+import info.nightscout.androidaps.utils.resources.ResourceHelper;
+
+public class RLHistoryItemMedtronic extends RLHistoryItem {
+
+ private MedtronicCommandType medtronicCommandType;
+
+ public RLHistoryItemMedtronic(MedtronicCommandType medtronicCommandType) {
+ super(new LocalDateTime(), RLHistoryItemSource.MedtronicCommand, RileyLinkTargetDevice.MedtronicPump);
+ this.medtronicCommandType = medtronicCommandType;
+ }
+
+ public String getDescription(ResourceHelper resourceHelper) {
+
+ switch (this.source) {
+ case RileyLink:
+ return "State: " + resourceHelper.gs(serviceState.getResourceId(targetDevice))
+ + (this.errorCode == null ? "" : ", Error Code: " + errorCode);
+
+ case MedtronicPump:
+ return resourceHelper.gs(pumpDeviceState.getResourceId());
+
+ case MedtronicCommand:
+ return medtronicCommandType.name();
+
+ default:
+ return "Unknown Description";
+ }
+ }
+
+
+
+}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/TempBasalPair.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/TempBasalPair.java
similarity index 94%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/TempBasalPair.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/TempBasalPair.java
index caac54e122..983f428a8f 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/TempBasalPair.java
+++ b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/TempBasalPair.java
@@ -7,7 +7,6 @@ import java.util.List;
import java.util.Locale;
import info.nightscout.androidaps.logging.AAPSLogger;
-import info.nightscout.androidaps.logging.L;
import info.nightscout.androidaps.logging.LTag;
import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil;
import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil;
@@ -42,8 +41,7 @@ public class TempBasalPair extends info.nightscout.androidaps.plugins.pump.commo
public TempBasalPair(AAPSLogger aapsLogger, byte[] response) {
super();
- if (L.isEnabled(LTag.PUMPCOMM))
- aapsLogger.debug(LTag.PUMPBTCOMM, "Received TempBasal response: " + ByteUtil.getHex(response));
+ aapsLogger.debug(LTag.PUMPBTCOMM, "Received TempBasal response: " + ByteUtil.getHex(response));
isPercent = response[0] == 1;
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/TempBasalProcessDTO.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/TempBasalProcessDTO.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/TempBasalProcessDTO.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/TempBasalProcessDTO.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/BasalProfileStatus.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/BasalProfileStatus.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/BasalProfileStatus.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/BasalProfileStatus.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/BatteryType.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/BatteryType.java
similarity index 91%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/BatteryType.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/BatteryType.java
index 7552b50d7f..503074e640 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/BatteryType.java
+++ b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/BatteryType.java
@@ -5,8 +5,8 @@ import androidx.annotation.StringRes;
import java.util.HashMap;
import java.util.Map;
-import info.nightscout.androidaps.MainApp;
-import info.nightscout.androidaps.R;
+import info.nightscout.androidaps.plugins.pump.medtronic.R;
+
/**
* Created by andy on 6/4/18.
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/CommandValueDefinitionMDTType.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/CommandValueDefinitionMDTType.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/CommandValueDefinitionMDTType.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/CommandValueDefinitionMDTType.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/MedtronicCommandType.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/MedtronicCommandType.java
similarity index 99%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/MedtronicCommandType.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/MedtronicCommandType.java
index 516085269a..0c14ac42f8 100755
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/MedtronicCommandType.java
+++ b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/MedtronicCommandType.java
@@ -4,7 +4,7 @@ import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
-import info.nightscout.androidaps.R;
+import info.nightscout.androidaps.plugins.pump.medtronic.R;
import info.nightscout.androidaps.plugins.pump.medtronic.comm.message.MessageBody;
import info.nightscout.androidaps.plugins.pump.medtronic.comm.message.PumpAckMessageBody;
import info.nightscout.androidaps.plugins.pump.medtronic.comm.message.UnknownMessageBody;
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/MedtronicCustomActionType.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/MedtronicCustomActionType.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/MedtronicCustomActionType.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/MedtronicCustomActionType.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/MedtronicDeviceType.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/MedtronicDeviceType.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/MedtronicDeviceType.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/MedtronicDeviceType.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/MedtronicNotificationType.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/MedtronicNotificationType.java
similarity index 89%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/MedtronicNotificationType.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/MedtronicNotificationType.java
index d11d6ad64c..c472ad3520 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/MedtronicNotificationType.java
+++ b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/MedtronicNotificationType.java
@@ -1,7 +1,7 @@
package info.nightscout.androidaps.plugins.pump.medtronic.defs;
-import info.nightscout.androidaps.R;
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification;
+import info.nightscout.androidaps.plugins.pump.medtronic.R;
/**
* Created by andy on 10/15/18.
@@ -16,8 +16,8 @@ public enum MedtronicNotificationType {
PumpWrongTBRTypeSet(R.string.medtronic_error_pump_wrong_tbr_type_set, Notification.URGENT), //
PumpWrongMaxBolusSet(R.string.medtronic_error_pump_wrong_max_bolus_set, Notification.NORMAL), //
PumpWrongMaxBasalSet(R.string.medtronic_error_pump_wrong_max_basal_set, Notification.NORMAL), //
- PumpWrongTimeUrgent(R.string.combo_notification_check_time_date, Notification.URGENT),
- PumpWrongTimeNormal(R.string.combo_notification_check_time_date, Notification.NORMAL),
+ PumpWrongTimeUrgent(R.string.medtronic_notification_check_time_date, Notification.URGENT),
+ PumpWrongTimeNormal(R.string.medtronic_notification_check_time_date, Notification.NORMAL),
TimeChangeOver24h(Notification.OVER_24H_TIME_CHANGE_REQUESTED, R.string.medtronic_error_pump_24h_time_change_requested, Notification.URGENT),
//
;
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/MedtronicStatusRefreshType.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/MedtronicStatusRefreshType.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/MedtronicStatusRefreshType.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/MedtronicStatusRefreshType.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/MedtronicUIResponseType.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/MedtronicUIResponseType.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/MedtronicUIResponseType.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/MedtronicUIResponseType.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/PumpBolusType.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/PumpBolusType.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/PumpBolusType.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/PumpBolusType.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/PumpConfigurationGroup.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/PumpConfigurationGroup.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/PumpConfigurationGroup.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/defs/PumpConfigurationGroup.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/dialog/MedtronicHistoryActivity.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/dialog/MedtronicHistoryActivity.java
similarity index 96%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/dialog/MedtronicHistoryActivity.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/dialog/MedtronicHistoryActivity.java
index cb3aad5f94..fc986f4f83 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/dialog/MedtronicHistoryActivity.java
+++ b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/dialog/MedtronicHistoryActivity.java
@@ -18,16 +18,18 @@ import java.util.List;
import javax.inject.Inject;
-import info.nightscout.androidaps.R;
import info.nightscout.androidaps.activities.NoSplashAppCompatActivity;
import info.nightscout.androidaps.plugins.pump.common.defs.PumpHistoryEntryGroup;
+import info.nightscout.androidaps.plugins.pump.medtronic.R;
import info.nightscout.androidaps.plugins.pump.medtronic.comm.history.pump.PumpHistoryEntry;
import info.nightscout.androidaps.plugins.pump.medtronic.data.MedtronicHistoryData;
+import info.nightscout.androidaps.utils.resources.ResourceHelper;
public class MedtronicHistoryActivity extends NoSplashAppCompatActivity {
@Inject MedtronicHistoryData medtronicHistoryData;
+ @Inject ResourceHelper resourceHelper;
Spinner historyTypeSpinner;
TextView statusView;
@@ -119,7 +121,7 @@ public class MedtronicHistoryActivity extends NoSplashAppCompatActivity {
statusView.setVisibility(View.GONE);
- typeListFull = getTypeList(PumpHistoryEntryGroup.getList());
+ typeListFull = getTypeList(PumpHistoryEntryGroup.getTranslatedList(resourceHelper));
ArrayAdapter spinnerAdapter = new ArrayAdapter<>(this, R.layout.spinner_centered, typeListFull);
historyTypeSpinner.setAdapter(spinnerAdapter);
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/dialog/RileyLinkStatusDeviceMedtronic.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/dialog/RileyLinkStatusDeviceMedtronic.java
similarity index 96%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/dialog/RileyLinkStatusDeviceMedtronic.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/dialog/RileyLinkStatusDeviceMedtronic.java
index 2a7ffa2ce4..0d21b195df 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/dialog/RileyLinkStatusDeviceMedtronic.java
+++ b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/dialog/RileyLinkStatusDeviceMedtronic.java
@@ -14,10 +14,11 @@ import java.util.List;
import javax.inject.Inject;
import dagger.android.support.DaggerFragment;
-import info.nightscout.androidaps.R;
import info.nightscout.androidaps.plugins.pump.common.dialog.RefreshableInterface;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.data.RLHistoryItem;
import info.nightscout.androidaps.plugins.pump.common.utils.StringUtil;
+import info.nightscout.androidaps.plugins.pump.medtronic.R;
+import info.nightscout.androidaps.utils.DateUtil;
import info.nightscout.androidaps.utils.resources.ResourceHelper;
/**
@@ -32,6 +33,7 @@ import info.nightscout.androidaps.utils.resources.ResourceHelper;
public class RileyLinkStatusDeviceMedtronic extends DaggerFragment implements RefreshableInterface {
@Inject ResourceHelper resourceHelper;
+ @Inject DateUtil dateUtil;
// @BindView(R.id.rileylink_history_list)
ListView listView;
@@ -153,7 +155,7 @@ public class RileyLinkStatusDeviceMedtronic extends DaggerFragment implements Re
}
RLHistoryItem item = historyItemList.get(i);
- viewHolder.itemTime.setText(StringUtil.toDateTimeString(item.getDateTime()));
+ viewHolder.itemTime.setText(StringUtil.toDateTimeString(dateUtil, item.getDateTime()));
viewHolder.itemSource.setText("Riley Link"); // for now
viewHolder.itemDescription.setText(item.getDescription(resourceHelper));
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/driver/MedtronicPumpStatus.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/driver/MedtronicPumpStatus.java
similarity index 87%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/driver/MedtronicPumpStatus.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/driver/MedtronicPumpStatus.java
index f7686fa824..1dcf799a2e 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/driver/MedtronicPumpStatus.java
+++ b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/driver/MedtronicPumpStatus.java
@@ -12,7 +12,7 @@ import javax.inject.Inject;
import javax.inject.Singleton;
import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
-import info.nightscout.androidaps.plugins.pump.common.data.PumpStatus;
+import info.nightscout.androidaps.plugins.pump.common.defs.PumpDeviceState;
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.common.hw.rileylink.data.RLHistoryItem;
@@ -20,18 +20,19 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLin
import info.nightscout.androidaps.plugins.pump.medtronic.defs.BasalProfileStatus;
import info.nightscout.androidaps.plugins.pump.medtronic.defs.BatteryType;
import info.nightscout.androidaps.plugins.pump.medtronic.defs.MedtronicDeviceType;
-import info.nightscout.androidaps.plugins.pump.medtronic.defs.PumpDeviceState;
-import info.nightscout.androidaps.plugins.pump.medtronic.events.EventMedtronicDeviceStatusChange;
+import info.nightscout.androidaps.plugins.pump.common.events.EventRileyLinkDeviceStatusChange;
import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicConst;
import info.nightscout.androidaps.utils.resources.ResourceHelper;
import info.nightscout.androidaps.utils.sharedPreferences.SP;
+
+
/**
* Created by andy on 4/28/18.
*/
@Singleton
-public class MedtronicPumpStatus extends PumpStatus {
+public class MedtronicPumpStatus extends info.nightscout.androidaps.plugins.pump.common.data.PumpStatus {
private final ResourceHelper resourceHelper;
private final SP sp;
@@ -164,6 +165,28 @@ public class MedtronicPumpStatus extends PumpStatus {
return (errorDescription == null) ? "-" : errorDescription;
}
+ @Override
+ public E getCustomData(String key, Class clazz) {
+ switch(key) {
+ case "SERIAL_NUMBER":
+ return (E)serialNumber;
+
+ case "PUMP_FREQUENCY":
+ return (E)pumpFrequency;
+
+ case "PUMP_MODEL": {
+ if (medtronicDeviceType==null)
+ return null;
+ else
+ return (E)medtronicDeviceType.getPumpModel();
+ }
+
+
+ default:
+ return null;
+ }
+ }
+
public PumpDeviceState getPumpDeviceState() {
return pumpDeviceState;
}
@@ -174,6 +197,6 @@ public class MedtronicPumpStatus extends PumpStatus {
rileyLinkUtil.getRileyLinkHistory().add(new RLHistoryItem(pumpDeviceState, RileyLinkTargetDevice.MedtronicPump));
- rxBus.send(new EventMedtronicDeviceStatusChange(pumpDeviceState));
+ rxBus.send(new EventRileyLinkDeviceStatusChange(pumpDeviceState));
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/events/EventMedtronicPumpConfigurationChanged.kt b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/events/EventMedtronicPumpConfigurationChanged.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/events/EventMedtronicPumpConfigurationChanged.kt
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/events/EventMedtronicPumpConfigurationChanged.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/events/EventMedtronicPumpValuesChanged.kt b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/events/EventMedtronicPumpValuesChanged.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/events/EventMedtronicPumpValuesChanged.kt
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/events/EventMedtronicPumpValuesChanged.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/service/RileyLinkMedtronicService.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/service/RileyLinkMedtronicService.java
similarity index 95%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/service/RileyLinkMedtronicService.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/service/RileyLinkMedtronicService.java
index 9d9e0eef3d..2342e0aaa5 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/service/RileyLinkMedtronicService.java
+++ b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/service/RileyLinkMedtronicService.java
@@ -8,9 +8,8 @@ import android.os.IBinder;
import javax.inject.Inject;
-import dagger.android.HasAndroidInjector;
-import info.nightscout.androidaps.R;
import info.nightscout.androidaps.logging.LTag;
+import info.nightscout.androidaps.plugins.pump.common.defs.PumpDeviceState;
import info.nightscout.androidaps.plugins.pump.common.defs.PumpType;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkConst;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.RFSpy;
@@ -22,16 +21,15 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLin
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.RileyLinkService;
import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil;
import info.nightscout.androidaps.plugins.pump.medtronic.MedtronicPumpPlugin;
+import info.nightscout.androidaps.plugins.pump.medtronic.R;
import info.nightscout.androidaps.plugins.pump.medtronic.comm.MedtronicCommunicationManager;
import info.nightscout.androidaps.plugins.pump.medtronic.comm.ui.MedtronicUIComm;
import info.nightscout.androidaps.plugins.pump.medtronic.comm.ui.MedtronicUIPostprocessor;
import info.nightscout.androidaps.plugins.pump.medtronic.data.MedtronicHistoryData;
import info.nightscout.androidaps.plugins.pump.medtronic.defs.BatteryType;
-import info.nightscout.androidaps.plugins.pump.medtronic.defs.PumpDeviceState;
import info.nightscout.androidaps.plugins.pump.medtronic.driver.MedtronicPumpStatus;
import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicConst;
import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil;
-import info.nightscout.androidaps.utils.resources.ResourceHelper;
/**
* RileyLinkMedtronicService is intended to stay running when the gui-app is closed.
@@ -61,6 +59,11 @@ public class RileyLinkMedtronicService extends RileyLinkService {
}
+ @Override public void onCreate() {
+ super.onCreate();
+ aapsLogger.debug(LTag.PUMPCOMM, "RileyLinkMedtronicService newly created");
+ }
+
@Override
public void onConfigurationChanged(Configuration newConfig) {
aapsLogger.warn(LTag.PUMPCOMM, "onConfigurationChanged");
@@ -299,7 +302,7 @@ public class RileyLinkMedtronicService extends RileyLinkService {
return false;
}
- RileyLinkEncodingType newEncodingType = RileyLinkEncodingType.getByDescription(encodingTypeStr);
+ RileyLinkEncodingType newEncodingType = RileyLinkEncodingType.getByDescription(encodingTypeStr, resourceHelper);
if (encodingType == null) {
encodingType = newEncodingType;
@@ -319,11 +322,9 @@ public class RileyLinkMedtronicService extends RileyLinkService {
medtronicPumpStatus.batteryType = batteryType;
}
- String bolusDebugEnabled = sp.getStringOrNull(MedtronicConst.Prefs.BolusDebugEnabled, null);
-
- boolean bolusDebug = bolusDebugEnabled != null && bolusDebugEnabled.equals(resourceHelper.gs(R.string.common_on));
-
- MedtronicHistoryData.doubleBolusDebug = bolusDebug;
+ //String bolusDebugEnabled = sp.getStringOrNull(MedtronicConst.Prefs.BolusDebugEnabled, null);
+ //boolean bolusDebug = bolusDebugEnabled != null && bolusDebugEnabled.equals(resourceHelper.gs(R.string.common_on));
+ //MedtronicHistoryData.doubleBolusDebug = bolusDebug;
reconfigureService();
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/util/MedtronicConst.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/util/MedtronicConst.java
similarity index 94%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/util/MedtronicConst.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/util/MedtronicConst.java
index fef95087de..141b23ed3a 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/util/MedtronicConst.java
+++ b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/util/MedtronicConst.java
@@ -1,6 +1,6 @@
package info.nightscout.androidaps.plugins.pump.medtronic.util;
-import info.nightscout.androidaps.R;
+import info.nightscout.androidaps.plugins.pump.medtronic.R;
/**
* Created by andy on 5/12/18.
@@ -10,7 +10,7 @@ public class MedtronicConst {
static final String Prefix = "AAPS.Medtronic.";
- public class Prefs {
+ public static class Prefs {
public static final int PumpSerial = R.string.key_medtronic_serial;
public static final int PumpType = R.string.key_medtronic_pump_type;
public static final int PumpFrequency = R.string.key_medtronic_frequency;
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/util/MedtronicUtil.java b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/util/MedtronicUtil.java
similarity index 95%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/util/MedtronicUtil.java
rename to medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/util/MedtronicUtil.java
index a4e7a51ec2..2e17b7808f 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/util/MedtronicUtil.java
+++ b/medtronic/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/util/MedtronicUtil.java
@@ -26,11 +26,12 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.Riley
import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil;
import info.nightscout.androidaps.plugins.pump.medtronic.data.dto.ClockDTO;
import info.nightscout.androidaps.plugins.pump.medtronic.data.dto.PumpSettingDTO;
+import info.nightscout.androidaps.plugins.pump.medtronic.data.dto.RLHistoryItemMedtronic;
import info.nightscout.androidaps.plugins.pump.medtronic.defs.MedtronicCommandType;
import info.nightscout.androidaps.plugins.pump.medtronic.defs.MedtronicDeviceType;
import info.nightscout.androidaps.plugins.pump.medtronic.defs.MedtronicNotificationType;
import info.nightscout.androidaps.plugins.pump.medtronic.driver.MedtronicPumpStatus;
-import info.nightscout.androidaps.plugins.pump.medtronic.events.EventMedtronicDeviceStatusChange;
+import info.nightscout.androidaps.plugins.pump.common.events.EventRileyLinkDeviceStatusChange;
import info.nightscout.androidaps.utils.resources.ResourceHelper;
/**
@@ -42,7 +43,7 @@ public class MedtronicUtil {
private int ENVELOPE_SIZE = 4; // 0xA7 S1 S2 S3 CMD PARAM_COUNT [PARAMS]
private static boolean lowLevelDebug = true;
- private MedtronicDeviceType medtronicPumpModel;
+ //private MedtronicDeviceType medtronicPumpModel;
private MedtronicCommandType currentCommand;
private Map settings;
private int BIG_FRAME_LENGTH = 65;
@@ -144,7 +145,7 @@ public class MedtronicUtil {
public byte[] getBolusStrokes(double amount) {
- int strokesPerUnit = medtronicPumpModel.getBolusStrokes();
+ int strokesPerUnit = medtronicPumpStatus.medtronicDeviceType.getBolusStrokes();
int length;
int scrollRate;
@@ -391,15 +392,15 @@ public class MedtronicUtil {
}
public boolean isModelSet() {
- return medtronicPumpModel != null;
+ return medtronicPumpStatus.medtronicDeviceType != null;
}
public MedtronicDeviceType getMedtronicPumpModel() {
- return medtronicPumpModel;
+ return medtronicPumpStatus.medtronicDeviceType;
}
public void setMedtronicPumpModel(MedtronicDeviceType medtronicPumpModel) {
- this.medtronicPumpModel = medtronicPumpModel;
+ this.medtronicPumpStatus.medtronicDeviceType = medtronicPumpModel;
}
public MedtronicCommandType getCurrentCommand() {
@@ -410,7 +411,7 @@ public class MedtronicUtil {
this.currentCommand = currentCommand;
if (currentCommand != null)
- rileyLinkUtil.getRileyLinkHistory().add(new RLHistoryItem(currentCommand));
+ rileyLinkUtil.getRileyLinkHistory().add(new RLHistoryItemMedtronic(currentCommand));
}
@@ -426,7 +427,7 @@ public class MedtronicUtil {
setCurrentCommand(currentCommand);
}
- rxBus.send(new EventMedtronicDeviceStatusChange(medtronicPumpStatus.getPumpDeviceState()));
+ rxBus.send(new EventRileyLinkDeviceStatusChange(medtronicPumpStatus.getPumpDeviceState()));
}
diff --git a/app/src/main/res/layout/medtronic_fragment.xml b/medtronic/src/main/res/layout/medtronic_fragment.xml
similarity index 97%
rename from app/src/main/res/layout/medtronic_fragment.xml
rename to medtronic/src/main/res/layout/medtronic_fragment.xml
index a67872fa5d..b6c52f76cb 100644
--- a/app/src/main/res/layout/medtronic_fragment.xml
+++ b/medtronic/src/main/res/layout/medtronic_fragment.xml
@@ -164,7 +164,7 @@
android:layout_weight="1.5"
android:gravity="end"
android:paddingRight="5dp"
- android:text="@string/pump_battery_label"
+ android:text="@string/battery_label"
android:textSize="14sp" />
@@ -508,10 +508,10 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
- android:drawableTop="@drawable/icon_danarhistory"
+ android:drawableTop="@drawable/ic_danarhistory"
android:paddingLeft="0dp"
android:paddingRight="0dp"
- android:text="@string/danar_history" />
+ android:text="@string/pumphistory" />
diff --git a/app/src/main/res/layout/medtronic_history_activity.xml b/medtronic/src/main/res/layout/medtronic_history_activity.xml
similarity index 100%
rename from app/src/main/res/layout/medtronic_history_activity.xml
rename to medtronic/src/main/res/layout/medtronic_history_activity.xml
diff --git a/app/src/main/res/layout/medtronic_history_item.xml b/medtronic/src/main/res/layout/medtronic_history_item.xml
similarity index 100%
rename from app/src/main/res/layout/medtronic_history_item.xml
rename to medtronic/src/main/res/layout/medtronic_history_item.xml
diff --git a/medtronic/src/main/res/values-af-rZA/strings.xml b/medtronic/src/main/res/values-af-rZA/strings.xml
new file mode 100644
index 0000000000..db84b0191e
--- /dev/null
+++ b/medtronic/src/main/res/values-af-rZA/strings.xml
@@ -0,0 +1,72 @@
+
+
+
+ Pomp integrasie vir Medtronic vereis RileyLink en spesifieke modelle
+
+ Pomp Reeks Nommer
+ Pomp Tipe
+ Pomp Frekwensie
+ Wagtyd voor Bolus begin (s)
+ Maks Bolus op Pomp (U)
+ Maks Basale op Pomp (U/h)
+ Medtronic Enkodering
+ US & Canada (916 MHz)
+ Wêreldwyd (868 Mhz)
+ Sagteware 4b6b Enkodeerding
+ Hardeware 4b6b Enkodeerding
+ Wek en stel in
+ Vee Bolus Blok
+ Herstel RileyLink Konfig
+ Battery Tipe(Krag Oorsig)
+ Nie gekies (Eenvoudige oorsig)
+ Alkaliese (Uitgebreide modus)
+ Lithium (Uitgebreide modus)
+
+ Reeksno # nie gestel.
+ Reeksno # is ongeldig.
+ Pomp tipe nie gestel.
+ Pomp tipe word nie ondersteun nie.
+ Pomp frekwensie nie gestel.
+ Pomp frekwensie word nie ondersteun.
+ RileyLink Adres ongeldig.
+ Pomp tipe bespeur en is nie dieselfde as gestelde.
+ Basale profiel is verkeerd op pomp (moet STD wees).
+ Verkeerde TBR op pomp (Moet Absoluut wees).
+ Verkeerde Maks Bolus gestel op Pomp(moet %1$.2f wees).
+ Verkeerde Maks Basale op Pomp (moet %1$.2f %1$.2f wees),.
+ Operasie nie moontlik.\n\n Jy moet jou Medtronic pomp opstel voordat jy die operasie kan gebruik.
+ Oor 24h Tyd was versoek.
+
+
+
+
+
+
+
+
+ U het Bolus gekanselleer nadat dit reeds gestel was op pomp. Aangesien Medtronic pomp nie kansellasie ondesteun sal jy dit self moet kanselleer. Sit pomp in Suspend en hervat(Resume) (as jy steeds wil kanselleer). Spplikasie sal die verandering sppor op volgende opdatering in minder as 5 minute.
+ Kon nie huidige TBR lees.
+ Kon nie TBR kanselleer. Operasie is gestaak.
+ Profiel stel gefaal want die patroon het \'n te groot basale koers: %1$s
+ Bolus kon nie gelewer word nie.
+ Bolus kon nie gelewer word nie, want beskikbare insulin (%1$.2f) is mider as bolus versoek(%2$.2f).
+ TBR Kon nie stel.
+ Kon nie huidige TBR staak.
+ Basale profiel kon nie stel.
+ Basal profiel is dieselfde, so dit is so gelos.
+ Verkry Geskiedenis - Bladsy %1$d (%2$d/16)
+ Verkry Geskiedenis - Bladsy %1$d
+ Kry Pomp Tyd
+ Verkry Instellings
+ Kry Pomp Model
+ Kry Basale Profiel
+ Stel Basale Profiel
+ Verkry Tydelike Basale
+ Stel Tydelike Basale
+ Stel Bolus
+ Pomp onbeskikbaar
+
+
+
+ Pomp tyd opgedateer
+
diff --git a/medtronic/src/main/res/values-ar-rSA/strings.xml b/medtronic/src/main/res/values-ar-rSA/strings.xml
new file mode 100644
index 0000000000..e370c4a256
--- /dev/null
+++ b/medtronic/src/main/res/values-ar-rSA/strings.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/medtronic/src/main/res/values-bg-rBG/strings.xml b/medtronic/src/main/res/values-bg-rBG/strings.xml
new file mode 100644
index 0000000000..d67cd0abd4
--- /dev/null
+++ b/medtronic/src/main/res/values-bg-rBG/strings.xml
@@ -0,0 +1,84 @@
+
+
+
+ Поддръжка на помпи Медтроник (специфични модели), изисква RileyLink устройство
+
+ Сериен номер на помпа
+ Тип помпа
+ Честота на помпата
+ Изчакване преди старт на болус (сек)
+ Макс болус в помпата (Е)
+ Максимален базал в помпата (Е/ч)
+ Медтроник коодиране
+ САЩ & Канада (916 Mhz)
+ Останалата част от света (868 Mhz)
+ Софтуерно 4b6b кодиране
+ Хардуерно 4b6b кодиране
+ Събуди и настрой
+ Изчисти Bolus Block
+ Изчисти RileyLink конфигурацията
+ Тип батерия (напреднали)
+ Не е избрано (общ)
+ Алкални
+ Литиева
+ NiZn батерия
+ NiMH (батерия)
+ Болус/Корекция подробно
+
+ Грешки
+ Сериен номер не е зададен.
+ Грешен сериен номер.
+ Тип помпа не е зададен.
+ Този тип помпа не се поддържа.
+ Честота на помпата не е зададена.
+ Честотата не се поддържа.
+ Грешен RileyLink адрес.
+ Откритата помпа не е идентична с кокнфигурираната.
+ Базалните профили/настройки не са позволен в помпата. Включванете го от настройките на помпата.
+ Базалния профил в помпата е грешен (трябва да е STD).
+ Грешен тип TBR в помпата ( трябва да е Absolute).
+ Грешен максимален болус в помпата ( трябвба да е %1$.2f).
+ Грешен макс мазал в помпата (трябва да е %1$.2f).
+ Забранено действие.\n\n Първо трябва да конфигурурате поомпата, преди да използвате тази операция,.
+ Желаната промяна на времето е повече от 24ч.
+
+
+
+
+
+
+
+ История на помпата
+
+ Отказали сте болус след като е бил изпратен към помпата. Помпите Медтроник не го поддържат и ще трябва да го направите ръчно. Пуснете Suspend mode и след това Resume (ако оше искате да го откажете). Апликацията ще покаже промените след около 5 мин.
+ Не може да бъде прочетен вр. базал.
+ Не може да бъде изключен вр. базал. Операцията е спряна.
+ Смяната на профила е невъзможна, поради твърде голям размер: %1$s
+ Болус не може да бъде стартиран.
+ Болусът не може да бъде стартиран понеже в резервоара има %1$.2f Е, а желаният болус е %2$.2f Е.
+ Временен базал не може да бъде стартиран.
+ Не може да бъде изключен вр. базал.
+ Профилът не може да бъде приложен.
+ Профилът е идентичен.
+ Вземи история - стр %1$d (%2$d/16)
+ Вземи история - стр %1$d
+ Вземи времето на помпата
+ Вземи настройките на помпата
+ Вземи модел на помпата
+ Вземи базален профил от помпата
+ Приложи базалният профил
+ Получи временния базал
+ Приложи временен базал
+ Стартирай болус
+ Помпата е недостъпна
+ Внимание
+
+ Сега
+
+ преди
+ Необходимо е сверяване на часа в помпата
+
+ Вкл
+ Изкл
+ Актуализирано време на помпата
+
diff --git a/medtronic/src/main/res/values-cs-rCZ/strings.xml b/medtronic/src/main/res/values-cs-rCZ/strings.xml
new file mode 100644
index 0000000000..d975426db8
--- /dev/null
+++ b/medtronic/src/main/res/values-cs-rCZ/strings.xml
@@ -0,0 +1,84 @@
+
+
+
+ Integrace pump Medtronic, vyžaduje zařízení RileyLink a konkrétní model pumpy
+
+ Sériové číslo pumpy
+ Typ pumpy
+ Frekvence pumpy
+ Prodleva před spuštěním bolusu (s)
+ Max. bolus na pumpě (U)
+ Max. bazál na pumpě (U)
+ Kódováni Medtronic
+ US & Canada (916 MHz)
+ Celosvětové (868 Mhz)
+ Software 4b6b Encoding
+ Hardware 4b6b Encoding
+ Probuzení a spojování
+ Vymazat blokování bolusu
+ Resetovat konfiguraci RileyLinku
+ Typ baterie (Zobrazení napájení)
+ Nevybráno (Jednoduché)
+ Alkalické (Rozšířené)
+ Lithiové (Rozšířené)
+ NiZn (Rozšířené)
+ NiMH (Rozšířené)
+ Bolus/Ošetření ladění
+
+ Chyby
+ Sériové číslo nenastaveno.
+ Sériové číslo neplatné.
+ Nenastaven typ pumpy.
+ Nepodporovaný typ pumpy.
+ Nenastavená frekvence pumpy.
+ Nepodporovaná frekvence pumpy.
+ Chybná adresa RileyLinku.
+ Detekovaná pumpa je jiného typu než nakonfigurovaná.
+ Nastavení bazálních profilů/vzorů není na pumpě povoleno. Povolte je na pumpě.
+ Bazální profil na pumpě je chybný (musí být STD).
+ Chybný typ dočasného bazálu na pumpě (musí být absolutní).
+ Chybný max. bolus na pumpě (musí být %1$.2f).
+ Chybný max. bazál na pumpě (musí být %1$.2f).
+ Operace není možná.\n\nNejdříve je nutné nakonfigurovat pumpu, než bude možné tuto funkci použít.
+ Požadována změna času větší než 24 h.
+
+
+
+
+
+
+
+ Historie Medtronic pumpy
+
+ Zrušili jste bolus potom, co byl nastaven na pumpě. Protože Medtronic nepodporuje zrušení bolusu, musíte ho zrušit ručně. Pozastavte pumpu a znovu spusťte. Aplikace detekuje změnu při příštím připojení (do 5 min).
+ Nelze načíst současný dočasný bazál.
+ Nelze zastavit současný dočasný bazál. Ukončuji operaci.
+ Nastavení profilu selhalo, protože následující vzorec má příliš velké bazály: %1$s
+ Bolus nemohl být odeslán.
+ Bolus nebylo možné vydat, protože dostupné množství inzulinu (%1$.2f) je menší než požadovaný bolus (%2$.2f).
+ Dočasný bazál nemohl být nastaven.
+ Současný dočasný bazál nemohl být zrušen.
+ Bazální profil nemohl být nastaven.
+ Bazální profil je stejný, takže nebude znovu nastaven.
+ Načítání historie - Strana %1$d (%2$d/16)
+ Načítání historie - Strana %1$d
+ Načítání času pumpy
+ Načítání nastavení
+ Načítání modelu
+ Načítání profilu
+ Nastavování profilu
+ Načítání dočasného bazálu
+ Nastavování dočasného bazálu
+ Nastavování bolusu
+ Pumpa nedostupná
+ Varování
+
+ Teď
+
+ zpět
+ Je vyžadována aktualizace času na pumpě
+
+ ZAP
+ VYP
+ Čas v pumpě aktualizován
+
diff --git a/medtronic/src/main/res/values-cy-rGB/strings.xml b/medtronic/src/main/res/values-cy-rGB/strings.xml
new file mode 100644
index 0000000000..e370c4a256
--- /dev/null
+++ b/medtronic/src/main/res/values-cy-rGB/strings.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/medtronic/src/main/res/values-de-rDE/strings.xml b/medtronic/src/main/res/values-de-rDE/strings.xml
new file mode 100644
index 0000000000..2072943176
--- /dev/null
+++ b/medtronic/src/main/res/values-de-rDE/strings.xml
@@ -0,0 +1,84 @@
+
+
+
+ Pumpenintegration für Medtronic, benötigt RileyLink und ein spezielles Pumpenmodell
+
+ Seriennummer der Pumpe
+ Pumpentyp
+ Pumpenfrequenz
+ Verzögerung vor dem Start des Bolus (sek.)
+ Max Bolus in der Pumpe (IE)
+ Max Basal in der Pumpe (IE/h)
+ Medtronic Enkodierung
+ US & Kanada (916 MHz)
+ Weltweit (868 Mhz)
+ Software 4b6b Codierung
+ Hardware 4b6b Codierung
+ Aufwachen und anpassen
+ Bolus Block löschen
+ RileyLink-Konfiguration zurücksetzen
+ Akkutyp (Power View)
+ Nicht ausgewählt (Einfache Ansicht)
+ Alkaline Batterie (erweiterte Ansicht)
+ Lithium Batterie (erweiterte Ansicht)
+ Nickel-Zink-Akku (erweiterte Ansicht)
+ Nickel-Zink-Akku (erweiterte Ansicht)
+ Fehlersuche Bolus/Behandlungen
+
+ Fehler
+ Seriennummer nicht angegeben.
+ Seriennummer ungültig.
+ Pumpenart nicht angegeben.
+ Pumptyp nicht unterstützt.
+ Pumpen-Frequenz nicht angegeben.
+ Pumpen-Frequenz nicht unterstützt.
+ RileyLink Adresse ungültig.
+ Erkannter Pumpentyp entspricht nicht dem eingestellen Pumpentyp.
+ Einstellung für Basalprofile/-muster ist auf der Pumpe nicht aktiviert. Aktiviere es auf der Pumpe.
+ Das eingestellte Basalprofl der Pumpe ist falsch (muss STD sein).
+ Falscher TBR-Typ auf der Pumpe (muss \"Absolut\" sein).
+ Falscher Max-Bolus auf Pumpe eingestellt (muss %1$.2f sein).
+ Falsche Max-Basal auf Pumpe eingestellt (muss %1$.2f sein).
+ Operation ist nicht möglich.\n\n Du musst zuerst die Medtronic Pumpe konfigurieren, bevor Du diese Operation verwenden kannst.
+ Mehr als 24h Zeitänderung wurde eingestellt.
+
+
+
+
+
+
+
+ Medtronic Pumpenverlauf
+
+ Du hast den Bolus abgebrochen nachdem er bereits an die Pumpe übermittelt war. Da Medtronic-Pumpen den Abbrechen-Befehl nicht unterstützen, musst du den Bolus manuell abbrechen. Versetze die Pumpe in den Suspend-Modus und gehe dann auf Fortsetzen (wenn Du den Bolus nach wie vor abbrechen möchtest). Die App wird die Änderungen beim nächsten Update (weniger als 5 Minuten) anzeigen.
+ Aktuelle TBR konnte nicht gelesen werden.
+ Aktuelle TBR konnte nicht gestoppt werden. Funktion unterbrochen.
+ Einstellen des Profils fehlgeschlagen weil folgende Basal-Raten zu hoch sind: %1$s
+ Bolus konnte nicht abgegeben werden.
+ Der Bolus konnte nicht abgegeben werden, da weniger Insulin zur Verfügung steht (%1$.2f) als für den Bolus benötigt wird (%2$.2f).
+ TBR konnte nicht eingestellt werden.
+ Konnte die aktuelle TBR nicht abbrechen.
+ Basalprofil konnte nicht eingestellt werden.
+ Basalprofil, unverändert wird nicht erneut eingestellt.
+ Hole Verlauf - Seite %1$d (%2$d/16)
+ Hole Verlauf - Seite %1$d
+ Hole Pumpen-Zeit
+ Hole Einstellungen
+ Hole Pumpenmodel
+ Hole Basal-Profil
+ Setzte Basal-Profil
+ Hole Temporäre Basalraten
+ Setze Temporäre Basalrate
+ Setze Bolus
+ Pumpe nicht erreichbar
+ Warnung
+
+ Jetzt
+
+ her
+ Bitte stelle die Uhrzeit der Pumpe ein
+
+ Ein
+ Aus
+ Pumpenzeit aktualisiert
+
diff --git a/medtronic/src/main/res/values-el-rGR/strings.xml b/medtronic/src/main/res/values-el-rGR/strings.xml
new file mode 100644
index 0000000000..c60c3c2565
--- /dev/null
+++ b/medtronic/src/main/res/values-el-rGR/strings.xml
@@ -0,0 +1,71 @@
+
+
+
+ Η ολοκλήρωση της αντλίας για τη Medtronic, απαιτεί τη συσκευή RileyLink και το συγκεκριμένο μοντέλο αντλίας
+
+ Σειριακός Αριθμός Αντλίας
+ Τύπος Αντλίας
+ Συχνότητα Αντλίας
+ Η καθυστέρηση πριν το bolus ξεκίνησε (s)
+ Μέγιστο Bolus στην αντλία (U)
+ Μέγιστος Βασικός στην αντλία (U/h)
+ Αποκωδικοποίηση Medtronic
+ US & Canada (916MHz)
+ Παγκοσμίως (868 Mhz)
+ Κωδικοποίηση λογισμικού 4b6b
+ Κωδικοποίηση hardware 4b6b
+ Wake and Tune Up
+ Καθαρισμός Bolus Block
+ Επαναφορά Ρυθμίσεων RileyLink
+ Τύπος Μπαταρίας (Power View)
+ Μη επιλεγμένη (Simple View)
+ Αλκαλική (Extended view)
+ Λιθίου (Extended view)
+
+ Δεν ορίστηκε # Serial.
+ Serial # μη έγκυρο.
+ Δεν ορίστηκε Τύπος Αντλίας.
+ Τύπος Αντλίας δεν υποστηρίζεται.
+ Δεν ορίστηκε Συχνότητα Αντλίας.
+ Συχνότητα Αντλίας δεν υποστηρίζεται.
+ Διεύθυνση RileyLink μη έγκυρη.
+ Ο τύπος αντλίας που ανιχνεύτηκε δεν είναι ο ίδιος με αυτόν που ορίστηκε.
+ Το βασικό προφίλ που ορίστηκε στην αντλία είναι λάθoς (πρέπει να είναι STD).
+ Λάθος τύπος TBR ορίστηκε στην αντλία (πρέπει να είναι Absolute).
+ Λάθος μέγιστο bolus ορίστηκε στην αντλία (πρέπει να είναι %1$.2f).
+ Λάθος μέγιστο Βασικού ορίστηκε στην αντλία (πρέπει να είναι %1$.2f).
+ Λειτουργία δεν είναι δυνατή. \n\n Χρειάζεται να ρυθμίσετε την αντλία Medtronic πρώτα, προτού να μπορέσετε να χρησιμοποιήσετε αυτή την λειτουργία.
+ Απαιτήθηκε αλλαγή ώρας πάνω από 24h.
+
+
+
+
+
+
+
+
+ Ακυρώσατε τον Bolus, αφού είχε ήδη σταλεί στην αντλία. Επειδή η αντλία Medtronic δεν υποστηρίζει ακύρωση, θα χρειαστεί να ακυρωθεί χειροκίνητα. Βάλτε την αντλία σε αναστολή λειτουργίας και μετά κάντε Συνέχιση (αν θέλετε να ακυρώσετε ακόμα). Η εφαρμογή θα πάρει τις αλλαγές, στην επόμενη ενημέρωση (σε λιγότερο από 5 λεπτά).
+ Αδυναμία ανάγνωσης τρέχοντος TBR.
+ Αδυναμία ακύρωσης τρέχοντος TBR. Αναστολή λειτουργίας.
+ Η δημιουργία προφίλ απέτυχε, επειδή ακολουθώντας πρότυπα, έχετε υπερβολικά μεγάλο βασικό ρυθμό: %1$s
+ Το Bolus δεν μπορεί να χορηγηθεί.
+ Το Bolus δεν μπορεί να παραδοθεί διότι η διαθέσιμη ποσότητα ινσουλίνης (%1$.2f) είναι μικρότερη από αυτήν που ζητείται (%2$.2f).
+ TBR δεν μπορεί να μπει.
+ Αδυναμία ακύρωσης τρέχοντος TBR.
+ Το Βασικό Προφίλ δεν μπορεί να τοποθετηθεί.
+ Το Βασικό Προφίλ είναι ίδιο, οπότε δεν θα μπει ξανά.
+ Βλέπε Ιστορικό - Σελίδα %1$d (%2$d/16)
+ Βλέπε Ιστορικό - Σελίδα %1$d
+ Πάρτε Ώρα Αντλίας
+ Λάβετε ρυθμίσεις
+ Λάβετε Μοντέλο Αντλίας
+ Λάβετε Βασικό Προφίλ
+ Βάλτε Βασικό Προφίλ
+ Λάβετε Προσωρινό Ρυθμό
+ Βάλτε Προσωρινό Ρυθμό
+ Βάλτε Bolus
+
+
+
+ Η ώρα στην αντλία άλλαξε
+
diff --git a/medtronic/src/main/res/values-es-rES/strings.xml b/medtronic/src/main/res/values-es-rES/strings.xml
new file mode 100644
index 0000000000..f438320ae9
--- /dev/null
+++ b/medtronic/src/main/res/values-es-rES/strings.xml
@@ -0,0 +1,76 @@
+
+
+
+ Integración de Bomba para Medtronic, requiere dispositivo RileyLink y modelo específico de Bomba
+
+ Número de serie de la Infusora
+ Tipo de Infusora
+ Frecuencia de la Infusora Medtronic
+ Retraso antes de que el bolo se inicie (s)
+ Bolo máximo en infusora (U)
+ Máxima Basal en Infusora (U/h)
+ Codificación de Medtronic
+ US & Canadá (916 MHz)
+ A nivel mundial (868 Mhz)
+ Codificación de software 4b6b
+ Codificación de hardware 4b6b
+ Encender y ajustar
+ Borrar el bloque de bolo
+ Restablecer configuración de RileyLink
+ Tipo de batería (Vista de energía)
+ No seleccionado (Vista simple)
+ Alcalina (vista extendida)
+ Litio (vista extendida)
+ NiZn (vista ampliada)
+ NiMH (vista extendida)
+ Bolos/Depuración de Tratamientos
+
+ Nº serie no establecido.
+ Número de serie no válido.
+ Tipo de infusora no establecido.
+ Tipo de infusora no soportado.
+ No se ha establecido la frecuencia de la infusora.
+ Frecuencia de la infusora no soportada.
+ Dirección de RileyLink no válida.
+ El tipo de infusora detectado no es el mismo que el tipo configurado.
+ Los perfiles de basal/valor de los patrones no están activados en la bomba. Actívalos en la bomba.
+ El perfil basal establecido en la infusora es incorrecto (debe ser estándar).
+ Tipo incorrecto de basal temporal en la infusora (debe ser Absoluto).
+ Valor máximo incorrecto configurado en la infusora (debe ser %1$.2f).
+ Error en el valor máximo de basal configurado en la infusora (debe ser %1$.2f).
+ La operación no es posible.\n\n Necesitas configurar primero la infusora Medtronic, antes de poder usar esta operación.
+ Se ha solicitado un cambio de hora de más de 24h.
+
+
+
+
+
+
+
+
+ Has cancelado el bolo después de que ya estaba enviado a la infusora. Debido a que la infusora Medtronic no soporta comando cancelar, tendrás que cancelarlo manualmente. Pon la infusora en modo suspender y luego reinicia (si todavía quieres cancelar). La aplicación recogerá los cambios en la próxima actualización (en menos de 5 minutos).
+ No se pudo leer la basal temporal actual.
+ No se pudo cancelar la basal temporal actual. Detener la operación.
+ El perfil no se pudo activar debido a que los siguientes patrones tienen una basal demasiado grande: %1$s
+ No se pudo entregar el bolo.
+ El bolo no pudo ser entregado porque la cantidad de insulina disponible (%1$.2f) es inferior al bolo solicitado (%2$.2f).
+ La basal temporal no se ha podido activar.
+ No se pudo cancelar la basal temporal actual.
+ No se pudo establecer el perfil de basal.
+ El perfil basal es el mismo, por lo que no será establecido de nuevo.
+ Recuperar el historial - Página %1$d (%2$d/16)
+ Recuperar el historial - Página %1$d
+ Obtener la hora de la infusora
+ Obtener la configuración
+ Obtener el modelo de la infusora
+ Obtener el perfil basal
+ Establecer el perfil basal
+ Obtener la basal temporal
+ Establecer la basal temporal
+ Fijar Bolo
+ Infusora no alcanzable
+
+
+
+ Hora del infusor actualizada
+
diff --git a/medtronic/src/main/res/values-fi-rFI/strings.xml b/medtronic/src/main/res/values-fi-rFI/strings.xml
new file mode 100644
index 0000000000..e370c4a256
--- /dev/null
+++ b/medtronic/src/main/res/values-fi-rFI/strings.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/medtronic/src/main/res/values-fr-rFR/strings.xml b/medtronic/src/main/res/values-fr-rFR/strings.xml
new file mode 100644
index 0000000000..c224b55dde
--- /dev/null
+++ b/medtronic/src/main/res/values-fr-rFR/strings.xml
@@ -0,0 +1,84 @@
+
+
+
+ L\'intégration de la pompe Medtronic nécessite un appareil RileyLink et un modèle de pompe spécifique
+
+ Numéro de série de pompe
+ Type de pompe
+ Fréquence de pompe
+ Délai avant le début du Bolus (s)
+ Bolus Max sur Pompe (U)
+ Basal Max sur Pompe (U/h)
+ Encodage Medtronic
+ US & Canada (916 MHz)
+ Mondial (868 Mhz)
+ Encodage logiciel 4b6b
+ Encodage matériel 4b6b
+ Réveil et Réglage
+ Effacer le bloc Bolus
+ Réinitialiser la config. RileyLink
+ Type de batterie (vue d\'alimentation)
+ Non sélectionné (vue simple)
+ Alcaline (vue étendue)
+ Lithium (vue étendue)
+ NiZn (vue étendue)
+ NiMH (vue Étendue)
+ Débogage de Bolus/Traitements
+
+ Erreurs
+ Numéro de série non défini.
+ Numéro de série invalide.
+ Type de pompe non défini.
+ Type de pompe non pris en charge.
+ Fréquence de pompe non définie.
+ Fréquence de pompe non pris en charge.
+ Adresse RileyLink invalide.
+ Le type de pompe détecté n\'est pas le même que le type configuré.
+ Le réglage des profils de basal n\'est pas activé sur la pompe. Activez-le sur la pompe.
+ Le profil Basal défini sur la pompe est incorrect (doit être STD).
+ Mauvais type DBT (TBR) réglé sur la pompe (doit être Absolu).
+ Mauvais paramètre Max Bolus sur la pompe (doit être %1$.2f).
+ Mauvais paramètre Max Bolus sur la pompe (doit être %1$.2f).
+ L\'opération n\'est pas possible.\n\n Vous devez d\'abord configurer la pompe Medtronic avant de pouvoir utiliser cette fonction.
+ Un changement de temps de plus de 24h a été demandé.
+
+
+
+
+
+
+
+ Historique de la pompe Medtronic
+
+ Vous avez annulé le Bolus, après avoir déjà été envoyé vers la pompe. Puisque la pompe Medtronic n\'accepte pas d\'annulation, vous devrez l\'annuler manuellement. Mettez la pompe en mode Suspendre et puis faites le Reprendre (si vous voulez encore annuler). L\'application va récupérer ces modifications à la prochaine mise à jour (en moins de 5 minutes).
+ Impossible de lire le DBT (TBR) actuel.
+ Impossible d\'annuler le DBT (TBR) actuel. Arrêt de l\'opération.
+ Le nouveau profil a échoué car le taux basal suivant est trop élevé : %1$s
+ Le Bolus n\'a pas pu être délivré.
+ Le Bolus n\'a pas pu être délivré, car la quantité d\'insuline disponible (%1$.2f) est inférieure à celle requise (%2$.2f).
+ DBT n\'a pas pu être défini.
+ Impossible d\'annuler le DBT actuel.
+ Le profil Basal n\'a pas pu être défini.
+ Le profil Basal est le même, donc il ne sera pas redéfini.
+ Obtenir l\'historique - Page %1$d (%2$d/16)
+ Obtenir l\'historique - Page %1$d
+ Obtenir l\'heure de la pompe
+ Obtenir les paramètres
+ Obtenir le modèle de pompe
+ Obtenir le profil Basal
+ Obtenir le profil Basal
+ Obtenir le Basal Temporaire
+ Définir le Basal Temporaire
+ Définir le Bolus
+ Pompe hors de portée
+ Attention
+
+ Maintenant
+
+ passé(e)s
+ Mise à jour nécessaire de l\'heure de la pompe
+
+ Activé
+ Off
+ Mise à jour de l\'heure de la pompe
+
diff --git a/medtronic/src/main/res/values-ga-rIE/strings.xml b/medtronic/src/main/res/values-ga-rIE/strings.xml
new file mode 100644
index 0000000000..e370c4a256
--- /dev/null
+++ b/medtronic/src/main/res/values-ga-rIE/strings.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/medtronic/src/main/res/values-hr-rHR/strings.xml b/medtronic/src/main/res/values-hr-rHR/strings.xml
new file mode 100644
index 0000000000..e370c4a256
--- /dev/null
+++ b/medtronic/src/main/res/values-hr-rHR/strings.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/medtronic/src/main/res/values-it-rIT/strings.xml b/medtronic/src/main/res/values-it-rIT/strings.xml
new file mode 100644
index 0000000000..2b07e16861
--- /dev/null
+++ b/medtronic/src/main/res/values-it-rIT/strings.xml
@@ -0,0 +1,84 @@
+
+
+
+ Integrazione del microinfusore Medtronic, richiede un dispositivo RileyLink e uno specifico modello di microinfusore
+
+ Numero seriale micro
+ Tipo micro
+ Frequenza micro
+ Ritardo prima che il bolo sia avviato (s)
+ Max bolo su micro (U)
+ Max basale su micro (U/h)
+ Codifica Medtronic
+ US & Canada (916 MHz)
+ Globale (868 Mhz)
+ Codifica Software 4b6b
+ Codifica Hardware 4b6b
+ Risveglio e Sintonizzazione
+ Cancella blocco bolo
+ Reset configurazione RileyLink
+ Tipo batteria (Power view)
+ Non selezionato (Simple view)
+ Alcalina (Extended view)
+ Litio (Extended view)
+ NiZn (Extended view)
+ NiMH (Extended view)
+ Debug Bolo/Trattamenti
+
+ Errori
+ # seriale non impostato.
+ # seriale non valido.
+ Tipo micro non impostato.
+ Tipo micro non supportato.
+ Frequenza micro non impostata.
+ Frequenza micro non supportata.
+ Indirizzo RileyLink non valido.
+ Il tipo di micro rilevato non è uguale al tipo configurato.
+ L\'impostazione di modelli/profili basali non è abilitata sul micro. Abilitala sul micro.
+ Il profilo basale impostato sul micro non è corretto (deve essere STD).
+ Tipo TBR errato impostato sul micro (deve essere Assoluto).
+ Max bolo errato impostato sul micro (deve essere %1$.2f).
+ Max basale errata impostata sul micro (deve essere %1$.2f).
+ Operazione non possibile.\n\n Devi prima configurare il micro Medtronic.
+ È stata richiesta una modifica oraria di oltre 24h.
+
+
+
+
+
+
+
+ Storico micro Medtronic
+
+ Hai cancellato il bolo, dopo che era già stato impostato sul micro. Dal momento che il micro Medtronic non supporta la cancellazione, avrai bisogno di cancellare il bolo manualmente. Metti il micro in modalità sospensione e poi fallo ripartire (se vuoi ancora cancellare il bolo). L\'applicazione rileverà le modifiche al prossimo aggiornamento (in meno di 5 minuti).
+ Impossibile leggere il TBR corrente.
+ Impossibile cancellare il TBR corrente. Arresto dell\'operazione.
+ Impostazione del profilo fallita. A causa dei seguenti modelli, hai una velocità basale troppo grande: %1$s
+ Il bolo non può essere erogato.
+ Il bolo non può essere erogato perché la quantità di insulina disponibile (%1$.2f) è inferiore al bolo richiesto (%2$.2f).
+ Il TBR non può essere impostato.
+ Impossibile cancellare il TBR corrente.
+ Il profilo basale non può essere impostato.
+ Il profilo basale è lo stesso, non sarà impostato di nuovo.
+ Ottieni storico - Pagina %1$d (%2$d/16)
+ Ottieni storico - Pagina %1$d
+ Ottieni ora micro
+ Ottieni impostazioni
+ Ottieni modello micro
+ Ottieni profilo basale
+ Imposta profilo basale
+ Ottieni basale temporanea
+ Imposta basale temporanea
+ Imposta bolo
+ Micro irraggiungibile
+ Avviso
+
+ Adesso
+
+ fa
+ Necessario aggiornare orologio micro
+
+ On
+ Off
+ Ora del micro aggiornata
+
diff --git a/medtronic/src/main/res/values-iw-rIL/strings.xml b/medtronic/src/main/res/values-iw-rIL/strings.xml
new file mode 100644
index 0000000000..e370c4a256
--- /dev/null
+++ b/medtronic/src/main/res/values-iw-rIL/strings.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/medtronic/src/main/res/values-ko-rKR/strings.xml b/medtronic/src/main/res/values-ko-rKR/strings.xml
new file mode 100644
index 0000000000..07de06ca45
--- /dev/null
+++ b/medtronic/src/main/res/values-ko-rKR/strings.xml
@@ -0,0 +1,76 @@
+
+
+
+ 메드트로닉 펌프 연동에는 RileyLink와 특정 펌프 모델이 필요합니다.
+
+ 펌프 일련번호
+ 펌프 타입
+ 펌프 주파수
+ Bolus 시작전 지연시간(초)
+ 펌프의 최대 Bolus(U)
+ 펌프의 최대 Basal(U/h)
+ 메드트로닉 인코딩
+ 미국 & 캐나다(916 MHz)
+ 타국가(868 Mhz)
+ 소프트웨어 4b6b 인코딩
+ 하드웨어 4b6b 인코딩
+ 켜기 및 튜닝
+ Bolus 블록 삭제
+ RileyLink 구성 재설정
+ 배터리 타입(파워뷰)
+ 선택되지 않음(심플뷰)
+ 알카라인(확장뷰)
+ 리튬(확장뷰)
+ NiZn (확장 뷰)
+ Bolus/관리 디버깅
+
+ 일련번호 # 설정되지 않음
+ 일련번호 # 유효하지않음.
+ 펌프 타입이 설정되지 않았습니다.
+ 지원되지 않는 펌프 타입입니다.
+ 펌프 주파수가 설정되지 않았습니다.
+ 지원되지 않는 펌프 주파수입니다.
+ RileyLink 주소가 유효하지 않습니다.
+ 감지된 펌프타입이 설정된 타입과 다릅니다.
+ Basal 프로파일/패턴 설정이 펌프에서 활성화되지 않았습니다. 펌프에서 활성화해주세요.
+ 펌프에 설정된 Basal 프로파일이 올바르지 않습니다 (STD 이어야 합니다).
+ 펌프에 잘못된 TBR 유형이 설정되었습니다 (절대값이어야합니다).
+ 펌프에 잘못된 최대 Bolus가 설정되었습니다 (%1$.2f 이어야 합니다.).
+ 펌프에 잘못된 최대 Basal이 설정되었습니다 (%1$.2f 이어야 합니다).
+ 작업이 불가능합니다.\n\n이 작업을 사용하려면 우선 메드트로닉 펌프를 구성해야합니다.
+ 24시간 이상의 시간 변경이 요청되었습니다.
+
+
+
+
+
+
+
+
+ 펌프에서 이미 설정된 Bolus를 취소했습니다. 메드트로닉 펌프는 취소를 지원하지 않으므로 수동으로 취소해야합니다. (여전히 취소하길 원한다면) 펌프를 일시 중단 모드로 전환 한 다음 다시 시작하십시오. 다음 업데이트시 (5 분 이내에) 변경 사항을 적용합니다.
+ 현재 TBR을 읽을 수 없습니다.
+ 현재 TBR을 취소할 수 없습니다. 작동을 중지합니다.
+ Basal이 너무 높아서 프로파일 설정이 실패했습니다 : %1$s
+ Bolus가 주입되지 않았습니다.
+ 사용 가능한 인슐린양(%1$.2f)이 요청된 Bolus(%2$.2f)보다 작기 때문에 Bolus를 주입할 수 없습니다.
+ TBR 이 설정될 수 없습니다.
+ 현재 TBR을 취소할 수 없습니다.
+ Basal 프로파일을 설정할 수 없습니다.
+ 동일한 Basal 프로파일이라 다시 설정하지 않습니다.
+ 이력 받기 - 페이지 %1$d (%2$d/16)
+ 이력 받기 - 페이지 %1$d
+ 펌프 시간 받기
+ 설정 받기
+ 펌프 모델 받기
+ Basal 프로파일 받기
+ Basal 프로파일 설정
+ 임시 Basal 받기
+ 임시 Basal 설정
+ Bolus 설정
+ 펌프에 연결할 수 없습니다
+
+
+
+ 끄기
+ 펌프 시간 업데이트
+
diff --git a/medtronic/src/main/res/values-lt-rLT/strings.xml b/medtronic/src/main/res/values-lt-rLT/strings.xml
new file mode 100644
index 0000000000..e95440b5ec
--- /dev/null
+++ b/medtronic/src/main/res/values-lt-rLT/strings.xml
@@ -0,0 +1,76 @@
+
+
+
+ Integracija su Medronic pompa reikalauja RileyLink įrenginio ir specialaus pompos modelio
+
+ Pompos serijos Nr.
+ Pompos tipas
+ Pompos dažnis
+ Užlaikymas prieš Boluso suleidimą (s)
+ Max Bolusas pompoje (vv)
+ Maks val. bazė pompoje (vv/val)
+ Medronic kodavimas
+ US & Kanada (916 MHz)
+ Pasaulinis (868 Mhz)
+ Programinis kodavimas 4b6b
+ Įrangos kodavimas 4b6b
+ Pažadinti ir nustatyti
+ Išvalyti Boluso bloką
+ Išvalyti RileyLink nustatymus
+ Baterijos tipas (pagal galią)
+ Nepasirinkta (paprastas vaizdas)
+ Šarminė (išplėstinis vaizdas)
+ Ličio (išplėstinis vaizdas)
+ Šarminė (išplėstinis vaizdas)
+ NiMH (išplėstinis vaizdas)
+ Boluso/Terapijos Derinimas
+
+ Serijos Nr. nenustatytas.
+ Serijos Nr. neteisingas.
+ Nenustatytas pompos tipas.
+ Nepalaikomas pompos tipas.
+ Nenustatytas pompos dažnis.
+ Nepalaikomas pompos dažnis.
+ RileyLink adresas neteisingas.
+ Aptiktas pompos tipas neatitinka nustatymų.
+ Bazės profilis / nustatymas pompoje nėra įgalintas. Įgalinkite jį pompoje.
+ Pompoje nustatytas neteisingas bazės profilis (turi būti STD).
+ Pompoje nustatytas neteisingas laikinos bazės tipas (turi būti absoliutus).
+ Pompoje nustatytas neteisingas Max Bolusas (turi būti %1$.2f).
+ Pompoje nustatyta neteisinga Maks val. bazė (turi būti %1$.2f).
+ Operacija negalima. \n\n Pirmiausia turite sukonfigūruoti Medronic pompą prieš atliekant šią operaciją.
+ Laiko pokytis didesnis nei 24 val.
+
+
+
+
+
+
+
+
+ Atšaukėte bolusą, kuris jau buvo nustatytas pompoje. Medronic pompa nepalaiko šio atšaukimo, todėl turite jį atšaukti rankiniu būdu. Sustabdykite pompą ir vėl ją paleiskite (jei vis dar norite atšaukti bolusą). Aplikacija perims pokyčius su kitu atnaujinimu (per mažiau nei 5 minutes).
+ Negalima sužinoti dabartinės laikinos bazės.
+ Negalima atšaukti dabartinės laikinos bazės. Operacija stabdoma.
+ Profilio nustatymas nepavyko dėl per didelės nustatytos bazės: %1$s
+ Bolusas nesuleistas.
+ Bolusas nesuleistas, nes turimas insulino kiekis (%1$.2f) yra mažesnis, nei nustatytas Bolusas (%2$.2f).
+ Laikina bazė nenustatyta.
+ Negalima atšaukti dabartinės laikinos bazės.
+ Bazės profilis nenustatytas.
+ Bazės profilis toks pat, todėl nenustatomas pakartotinai.
+ Gauti istoriją - Lapas %1$d (%2$d/16)
+ Gauti istoriją - Lapas %1$d
+ Gauti pompos laiką
+ Gauti parametrus
+ Gauti pompos modelį
+ Gauti bazės profilį
+ Nustatyti bazės profilį
+ Gauti laikiną bazę
+ Nustatyti laikiną bazę
+ Nustatyti bolusą
+
+
+
+ Išjungta
+ Pompos laikas pakeistas
+
diff --git a/medtronic/src/main/res/values-nl-rNL/strings.xml b/medtronic/src/main/res/values-nl-rNL/strings.xml
new file mode 100644
index 0000000000..91bda05ab4
--- /dev/null
+++ b/medtronic/src/main/res/values-nl-rNL/strings.xml
@@ -0,0 +1,77 @@
+
+
+
+ Pomp integratie voor Medtronic, vereist RileyLink-apparaatje en geschikte versie en model pomp
+
+ Serienummer van de pomp
+ Pomp Type
+ Pomp Frequentie
+ Vertraging voordat Bolus wordt gestart (s)
+ Max Bolus op Pomp (E)
+ Max Basaal op Pomp (E/u)
+ Medtronic Codering
+ VS & Canada (916 MHz)
+ Wereldwijd (868 Mhz)
+ Software 4b6b Codering
+ Hardware 4b6b Codering
+ Ontwaak en maak verbinding
+ Bolus Blok wissen
+ Reset RileyLink Configuratie
+ Batterij type (batterij weergave)
+ Niet geselecteerd (Eenvoudige weergave)
+ Alkaline (uitgebreide weergave)
+ Lithium (uitgebreide weergave)
+ NiZn (uitgebreide weergave)
+ NiMH (Uitgebreide weergave)
+ Bolus/Behandelingen Debuggen
+
+ Foutmeldingen
+ Serie# niet ingesteld.
+ Serie# ongeldig.
+ Pomp type niet ingesteld.
+ Pomp type niet ondersteund.
+ Pomp frequentie niet ingesteld.
+ Pomp frequentie niet ondersteund.
+ RileyLink adres ongeldig.
+ Gedetecteerde pomp type komt niet overeen met ingestelde pomp type.
+ De instelling voor basaalprofielen/patronen is niet ingeschakeld op de pomp. Schakel het in op de pomp.
+ Basaalprofiel ingesteld op pomp is onjuist (moet STD zijn).
+ Verkeerde Tijdelijk Basaal-type ingesteld op pomp (moet Insulinesnelh (E/H) zijn).
+ Verkeerde Max Bolus ingesteld op pomp (moet %1$.2f zijn).
+ Verkeerde Max Basaal ingesteld op pomp (moet %1$.2f zijn).
+ Bewerking is niet mogelijk.\n\n Je moet eerst Medtronic Pomp ingesteld hebben, voordat je deze bewerking kunt gebruiken.
+ Meer dan 24u tijd gevraagd.
+
+
+
+
+
+
+
+
+ U heeft de Bolus geannuleerd nadat deze werd ingesteld op de Pomp. Aangezien de Medtronic Pump geen ondersteuning biedt voor automatische annulering moet u dit handmatig doen. Zet de Pump daartoe in de Suspend modus en kies vervolgens voor Hervatten (als u nog wilt annuleren). De applicatie zal de wijzigingen oppakken bij de volgende update (in minder dan 5 minuten).
+ Kan huidige TBR niet lezen.
+ Kan huidige TBR niet annuleren. Bewerking wordt gestopt.
+ Profiel instellen mislukt omdat de volgende patronen een te groot basaal hebben: %1$s
+ Bolus kon niet worden afgeleverd.
+ Bolus kon niet worden uitgevoerd omdat de hoeveelheid beschikbare insuline (%1$.2f) niet voldoende is voor de bolus (%2$.2f).
+ TBR kon niet worden ingesteld.
+ Kan huidige TBR niet annuleren.
+ Basaal profiel kon niet worden ingesteld.
+ Basal profiel is hetzelfde, dus het zal niet opnieuw worden ingesteld.
+ Ophalen Geschiedenis - Pagina %1$d (%2$d/16)
+ Ophalen Geschiedenis - Pagina %1$d
+ Haal Pomp Tijd op
+ Ophalen Instellingen
+ Ophalen Pomp Model
+ Ophalen Basaal Profiel
+ Instellen Basaal Profiel
+ Ophalen Tijdelijke Basaal
+ Instellen Tijdelijke Basaal
+ Instellen Bolus
+ Pomp niet bereikbaar
+
+
+
+ Pomp tijd bijgewerkt
+
diff --git a/medtronic/src/main/res/values-pl-rPL/strings.xml b/medtronic/src/main/res/values-pl-rPL/strings.xml
new file mode 100644
index 0000000000..045f9fb5df
--- /dev/null
+++ b/medtronic/src/main/res/values-pl-rPL/strings.xml
@@ -0,0 +1,75 @@
+
+
+
+ Integracja pompy Medtronic wymaga urządzenia RileyLink i odpowiedniego modelu pompy
+
+ Numer seryjny pompy
+ Typ pompy
+ Częstotliwość pompy
+ Opóźnienie przed rozpoczęciem bolusa(s)
+ Max bolus w pompie (U)
+ Max dawka bazowa w pompie (U/h)
+ Kodowanie Medtronic
+ US & Kanada (916 MHz)
+ Reszta świata (868 Mhz)
+ Kodowanie oprogramowania 4b6b
+ Kodowanie urządzenia 4b6b
+ Wzbudź i dostrój
+ Wyczyść blok bolusa
+ Przywróć konfigurację RileyLink
+ Typ baterii (podgląd mocy)
+ Nie wybrany (widok prosty)
+ Alkaliczne (widok rozszerzony)
+ Litowe (widok rozszerzony)
+ NiZn (widok rozszerzony)
+ NiMH (widok rozszerzony)
+ Bolus/Leczenie - debugowanie
+
+ Numer seryjny # nie ustawiony.
+ Numer seryjny # nieprawidłowy.
+ Tyo pompy nie ustawiony.
+ Typ pompy nie obsługiwany.
+ Częstotliwość pompy nie ustawiona.
+ Częstotliwość pompy nie wspierana.
+ Adres RileyLink niewłaściwy.
+ Wykryty typ pompy jest inny niż ustawiony.
+ Ustawienia bazy/ wzorców nie są włączone w pompie. Włącz je na pompie.
+ Profil bazowy ustawiony na pompie nie jest właściwy (musi być STD).
+ Ustawiony na pompie typ dawki tymczasowej jest niewłaściwy (musi być całkowity - Absolute).
+ Ustawiony na pompie typ Bolus Maksymalny jest niewłaściwy (musi być %1$.2f).
+ Ustawiony na pompie typ Bolus Maksymalny jest niewłaściwy (musi być %1$.2f).
+ To działanie nie jest możliwe.\n\n Musisz skonfigurować pompę Medtronic Pump, przed uruchomieniem tego działania.
+ Wymagana jest zmiana ustawień czasu na 24h.
+
+
+
+
+
+
+
+
+ Anulowałeś bolus po jego ustawieniu na pompie. Ponieważ pompa Medtronic nie wspiera polecenia anuluj, musisz wprowadzić zmianę ręcznie. Wprowadź pompę w stan zawieszenia, a następnie przywróć jej działanie (jeżeli wciąż chcesz anulować). Aplikacja pobierze zmiany przy następnym uaktualnieniu (poniżej 5 minut).
+ Nie udało się odczytać aktualnej dawki tymczasowej (TBR).
+ Nie udało się anulować aktualnej dawki tymczasowej (TBR). Operacja zatrzymania.
+ Ustawienia Profilu nie powiodły się ponieważ następująca wartość jest za duża: %1$s
+ Nie udało się dostarczyć bolusa.
+ Bolus nie mógł być dostarczony ponieważ Ilość dostępnej insuliny (%1$.2f) jest mniejsza niż wymagany bolus (%2$.2f).
+ Nie udało się ustawić dawki tymczasowej (TBR).
+ Nie udało się anulować bazy tymczasowej (TBR).
+ Profil bazy nie został ustawiony.
+ Profil bazy jest taki sam, więc nie ustawiono ponownie.
+ Pobierz historię - strona %1$d (%2$d/16)
+ Pobierz historię - strona %1$d
+ Pobierz czas pompy
+ Pobierz ustawienia
+ Pobierz model pompy
+ Pobierz profil dawki bazowej
+ Ustaw profil dawki bazowej
+ Pobierz tymczasową dawkę bazową
+ Ustaw tymczasową dawkę bazową
+ Ustaw bolus
+
+
+
+ Czas pompy uaktualniony
+
diff --git a/medtronic/src/main/res/values-pt-rBR/strings.xml b/medtronic/src/main/res/values-pt-rBR/strings.xml
new file mode 100644
index 0000000000..f7ac8fdbb1
--- /dev/null
+++ b/medtronic/src/main/res/values-pt-rBR/strings.xml
@@ -0,0 +1,75 @@
+
+
+
+ Integração de Bombas Medtronic, requer o dispositivo RileyLink e o Modelo de Bomba específico
+
+ Número de série da Bomba
+ Tipo de Bomba
+ Frequência da Bomba
+ Atraso antes que o Bólus seja iniciado (s)
+ Max Bolus na Bomba (U)
+ Máxima Basal na Bomba (U/h)
+ Codificação Medtronic
+ EUA & Canadá (916 MHz)
+ Em todo o Mundo (868 Mhz)
+ Codificação de Software 4b6b
+ Codificação de Hardware 4b6b
+ Acordar e Configurar
+ Limpar Bloco de Bólus
+ Redefinir configuração RileyLink
+ Tipo de Bateria (Visão Detalhada)
+ Não seleccionado (Visão simples)
+ Alcalina (Visão estendida)
+ Lithium (visão estendida)
+ NiZn (Vista Estendida)
+ NiMH (Visualização estendida)
+ Depuração de Bólus/Tratamentos
+
+ Núm. Série não definido.
+ Núm. Série inválido.
+ Tipo de Bomba não definido.
+ Tipo de Bomba não suportado.
+ Frequência de Bomba não definida.
+ Frequência da Bomba não suportada.
+ Endereço RileyLink inválido.
+ A bomba detectada não é a mesma que a bomba configurada.
+ A configuração de perfis/padrões da basal não éstá ativada na bomba. Ative-a na bomba.
+ Perfil Basal definido na Bomba está incorrecto (deve ser STD).
+ Tipo de DBT errado definido na bomba (deve ser Absoluto).
+ Máx. Basal definida na Bomba está incorreta (deve ser %1$.2f).
+ Máx. Basal definido errado na Bomba (deve ser %1$.2f).
+ Operação não é possível.\n\n Você precisa configurar a Bomba Medtronic antes de poder usar esta operação.
+ Solicitada uma alteração de tempo de mais de 24h.
+
+
+
+
+
+
+
+
+ Cancelou o Bolus, depois de ele já ter sido definido na Bomba. Uma vez que a Bomba Medtronic não suporta cancelamento, precisará de cancelar manualmente. Coloque a Bomba no modo de Suspender e depois Retome (se ainda quiser cancelar). A aplicação irá obter as alterações, na próxima actualização (em menos de 5 minutos).
+ Não foi possível ler a TBR actual.
+ Não foi possível cancelar a TBR atual. A parar a operação.
+ Falhou Definir Perfil devido aos seguintes padrões, tem uma taxa de basal muito grande: %1$s
+ O bólus não pôde ser entregue.
+ Bólus não foi entregue, porque o quantidade de insulina disponível (%1$.2f) é menor que o bólus necessário (%2$.2f).
+ TBR não pode ser definida.
+ Não foi possível cancelar a TBR atual.
+ Perfil Basal não pôde ser definido.
+ Perfil Basal é o mesmo, então não será definido novamente.
+ Obter Histórico - Página %1$d (%2$d/16)
+ Obter Histórico - Página %1$d
+ Obter Hora da Bomba
+ Obter Definições
+ Obter Modelo de Bomba
+ Obter Perfil Basal
+ Definir Perfil Basal
+ Obter Basal temporário
+ Definir Basal temporário
+ Definir Bólus
+
+
+
+ Hora da bomba actualizada
+
diff --git a/medtronic/src/main/res/values-pt-rPT/strings.xml b/medtronic/src/main/res/values-pt-rPT/strings.xml
new file mode 100644
index 0000000000..4a47d027f5
--- /dev/null
+++ b/medtronic/src/main/res/values-pt-rPT/strings.xml
@@ -0,0 +1,84 @@
+
+
+
+ Integração de Bombas Medtronic, requer o dispositivo RileyLink e o Modelo de Bomba específico
+
+ Número de série da Bomba
+ Tipo de Bomba
+ Frequência da Bomba
+ Atraso antes que o Bólus seja iniciado (s)
+ Max Bolus na Bomba (U)
+ Máx Basal na Bomba (U/h)
+ Codificação Medtronic
+ EUA & Canadá (916 MHz)
+ Em todo o Mundo (868 Mhz)
+ Codificação de Software 4b6b
+ Codificação de Hardware 4b6b
+ Acordar e Configurar
+ Limpar Bloco de Bólus
+ Redefinir configuração RileyLink
+ Tipo de Bateria (Visão Detalhada)
+ Não seleccionado (Visão simples)
+ Alcalina (Visão estendida)
+ Lithium (Visão estendida)
+ NiZn (Vista Estendida)
+ NiMH (Visualização estendida)
+ Depuração de Bólus/Tratamentos
+
+ Erros
+ Núm. Série não definido.
+ Núm. Série inválido.
+ Tipo de Bomba não definido.
+ Tipo de Bomba não suportado.
+ Frequência de Bomba não definida.
+ Frequência da Bomba não suportada.
+ Endereço RileyLink inválido.
+ A bomba detectada não é a mesma que a bomba configurada.
+ A configuração de perfis/padrões da basal não éstá atcivada na bomba. Active-a na bomba.
+ Perfil Basal definido na Bomba está incorrecto (deve ser STD).
+ Tipo de DBT errado definido na bomba (deve ser Absoluto).
+ Máx. Basal definida na Bomba está incorreta (deve ser %1$.2f).
+ Máx. Basal definido errado na Bomba (deve ser %1$.2f).
+ Operação não é possível.\n\n Você precisa configurar a Bomba Medtronic antes de poder usar esta operação.
+ Solicitada uma alteração de tempo de mais de 24h.
+
+
+
+
+
+
+
+ Histórico da Bomba Medtronic
+
+ Cancelou o Bolus, depois de ele já ter sido definido na Bomba. Uma vez que a Bomba Medtronic não suporta cancelamento, precisará de cancelar manualmente. Coloque a Bomba no modo de Suspender e depois Retome (se ainda quiser cancelar). A aplicação irá obter as alterações, na próxima actualização (em menos de 5 minutos).
+ Não foi possível ler o DBT actual.
+ Não foi possível cancelar o DBT actual. A parar a operação.
+ Falhou Definir Perfil devido aos seguintes padrões, tem uma taxa de basal muito grande: %1$s
+ O bólus não pôde ser administrado.
+ Bólus não foi administado, porque o quantidade de insulina disponível (%1$.2f) é menor que o bólus necessário (%2$.2f).
+ DBT não pode ser definido.
+ Não foi possível cancelar o DBT actual.
+ Perfil Basal não pôde ser definido.
+ Perfil Basal é o mesmo, então não será definido novamente.
+ Obter Histórico - Página %1$d (%2$d/16)
+ Obter Histórico - Página %1$d
+ Obter Hora da Bomba
+ Obter Definições
+ Obter Modelo de Bomba
+ Obter Perfil Basal
+ Definir Perfil Basal
+ Obter Basal Temporária
+ Definir Basal Temporária
+ Definir Bólus
+ Bomba inacessível
+ Aviso
+
+ Agora
+
+ atrás
+ Necesário actualizar relógio da bomba
+
+ Ligado
+ Desligado
+ Hora da bomba actualizada
+
diff --git a/medtronic/src/main/res/values-ro-rRO/strings.xml b/medtronic/src/main/res/values-ro-rRO/strings.xml
new file mode 100644
index 0000000000..0aede41421
--- /dev/null
+++ b/medtronic/src/main/res/values-ro-rRO/strings.xml
@@ -0,0 +1,84 @@
+
+
+
+ Pentru asocierea cu pompa Medtronic este necesar un dispozitiv RileyLink și un anumit model de pompă
+
+ Număr serial pompă
+ Tip pompă
+ Frecvență pompă
+ Întârziere până la pornirea bolusului (s)
+ Bolusul maxim în pompă (U)
+ Bazală maximă în pompă (U/h)
+ Criptare Medtronic
+ US & Canada (916 MHz)
+ Globală (868 Mhz)
+ Criptare software 4b6b
+ Criptare hardware 4b6b
+ Pornește și sincronizează
+ Șterge blocajul de bolus
+ Resetează configurația RileyLink
+ Tipul bateriei (Afișare avansată)
+ Fără selecție (Afișare simplificată)
+ Alcalină (Afișare extinsă)
+ Litiu (Afișare extinsă)
+ NiZn (Afișare extinsă)
+ NiMH (Afișare extinsă)
+ Depanare Bolus/Tratamente
+
+ Erori
+ Număr serial nesetat.
+ Număr serial invalid.
+ Tipul pompei nesetat.
+ Tip de pompă nesuportat.
+ Frecvența pompei nesetată.
+ Frecvența pompei nesuportată.
+ Adresa RileyLink invalidă.
+ Tipul de pompă detectat nu corespunde cu cel configurat.
+ Setările de profil/șablon bazale nu sunt activate în pompă. Vă rugăm să le activați din pompă.
+ Tipul de profil bazal setat în pompă este incorect (trebuie să fie STD).
+ Tip incorect de RBT setat în pompă (trebuie să fie Absolut).
+ Bolus maxim setat incorect în pompă (trebuie să fie %1$.2f).
+ Bazala maximă setată incorect în pompă (trebuie să fie %1$.2f).
+ Operațiune imposibilă. \n\n Trebui să configurați mai întâi pompa Medtronic înainte de a face această operație.
+ S-a solicitat o schimbare de oră mai mare de 24 de ore.
+
+
+
+
+
+
+
+ Istoric pompă Medtronic
+
+ Ați anulat un bolus după ce a fost deja transmis către pompă. Deoarece pompa Medtronic nu permite o anulare de bolus, va trebui să faceți acest lucru în mod manual, din pompă. Puneți pompa în modul Suspend și apoi Repornire (dacă totuși doriți să anulați bolusul). Aplicația se va sincroniza automat cu pompa la următoarea contactare a acesteia (în mai puțin de 5 minute).
+ Nu a putut fi citită RBT.
+ Nu a putut fi anulată RBT curentă. Se oprește operațiunea de anulare.
+ Stabilirea profilului a eșuat deoarece, pe baza modelelor, aveți o rată bazală prea mare: %1$s
+ Bolusul nu a putut fi livrat.
+ Bolusul nu a putut fi livrat deoarece cantitatea de insulină din rezervor (%1$.2f) este mai mică decât cea necesară (%2$.2f).
+ RBT nu a putut fi setată.
+ Nu a putut fi anulată RBT curentă.
+ Profilul bazal nu a putut fi stabilit.
+ Profilul bazal existent deja este existent, nu va fi reintrodus.
+ Preia istoricul - Pagina %1$d (%2$d/16)
+ Preia istoricul - Pagina %1$d
+ Preia timpul din pompă
+ Preia setările
+ Preia modelul de pompă
+ Preia profilul bazalelor
+ Setează profilul bazalelor
+ Preia bazala temporară
+ Setează bazala temporară
+ Setează bolusul
+ Pompă indisponibilă
+ Atenție
+
+ Acum
+
+ în trecut
+ Ceasul pompei trebuie ajustat
+
+ Pornit
+ Oprit
+ Timpul din pompă a fost actualizat
+
diff --git a/medtronic/src/main/res/values-ru-rRU/strings.xml b/medtronic/src/main/res/values-ru-rRU/strings.xml
new file mode 100644
index 0000000000..39bdb64c5a
--- /dev/null
+++ b/medtronic/src/main/res/values-ru-rRU/strings.xml
@@ -0,0 +1,84 @@
+
+
+
+ Интеграция с помпой Medtronic требует устройства RileyLink и специфическую модель помпы
+
+ Серийный номер помы
+ Тип помпы
+ Частота помпы
+ Задержка перед подачей болюса (с) начата
+ Макс. болюс на помпе (ед)
+ Макс. базал на помпе (ед/ч)
+ Кодировка Medtronic
+ US & Canada (916 MHz)
+ Глобальн (868 Мгц)
+ Программное 4b6b кодирование
+ Аппаратное кодирование 4b6b
+ Пробудить и настроить
+ Очистить блок болюса
+ Сбросить конфигурацию RileyLink
+ Тип батареи (по мощности)
+ Не выбрано (Простой вид)
+ Щелочная (Подробный вид)
+ Литиевая (Подробный вид)
+ NiZn (Подробный вид)
+ Никель-металлогидридная (подробно)
+ Отладка Болюс/Назначения
+
+ Ошибки
+ Серийный # не задан.
+ Серийный # неверный.
+ Тип помпы не задан.
+ Тип помпы не поддерживается.
+ Частота помпы не задана.
+ Частота помпы не поддерживается.
+ Недопустимый адрес RileyLink.
+ Обнаруженный тип помпы не соответствует настроенному.
+ Базальные профили/настройки шаблонов не включены в помпе. Включите их на помпе.
+ Базовый профиль на помпе неверный (должен быть STD).
+ Неверный тип временной скорости базала TBR на помпе (должен быть Absolute).
+ На помпе задан неверный макс болюс (должен быть %1$.2f).
+ На помпе задан неверный макс базал (должен быть %1$.2f).
+ Операция невозможна.\n\n Сначала нужно настроить помпу Medtronic.
+ Запрошено изменение времени свыше 24 часов.
+
+
+
+
+
+
+
+ Журнал событий помпы Medtronic
+
+ Вы отменили болюс после того как он был задан на помпе. Поскольку помпа Medtronic не поддерживает отмену, нужно отменить его вручную. Переведите помпу в режим приостановки и затем сделайте Resume (если все еще хотите отменить). Приложение примет изменения при следующем обновлении (менее чем через 5 минут).
+ Не удалось прочитать текущий врем. базал TBR.
+ Не удалось отменить текущий врем базал TBR. Остановка операции.
+ Не удалось установить профиль потому что следующие шаблоны имеют слишком большой базал %1$s
+ Болюс не подан.
+ Болюс не подан т.к. доступное количество инсулина (%1$.2f) меньше, чем требуемый болюс (%2$.2f).
+ Врем базал TBR не задан.
+ Не удалось отменить текущий врем базал TBR.
+ Профиль базала не установлен.
+ Базовый профиль идентичен, он не будет задан повторно.
+ Получить историю - страница %1$d (%2$d/16)
+ Получить историю - страница %1$d
+ Получить время с помпы
+ Получить настройки
+ Получить модель помпы
+ Получить профиль базала
+ Установить профиль базала
+ Получить временный базал
+ Установить временный базал
+ Настроить болюс
+ Помпа недоступна
+ Внимание
+
+ Сейчас
+
+ тому назад
+ Необходимо обновить часы помпы
+
+ Вкл.
+ Выкл.
+ Время на помпе обновлено
+
diff --git a/medtronic/src/main/res/values-sk-rSK/strings.xml b/medtronic/src/main/res/values-sk-rSK/strings.xml
new file mode 100644
index 0000000000..110e031c00
--- /dev/null
+++ b/medtronic/src/main/res/values-sk-rSK/strings.xml
@@ -0,0 +1,84 @@
+
+
+
+ Integrácia pre pumpu Medtronic, požaduje sa RileyLink zariadenie a špecifický model pumpy.
+
+ Sériové číslo pumpy
+ Typ pumpy
+ Frekvencia pumpy
+ Oneskorenie pred podaním bolusu (s)
+ Max. bolus v pumpe (U)
+ Max. bazál v pumpe (U/h)
+ Medtronic kódovanie
+ US & Canada (916 MHz)
+ Celosvetovo (868 MHz)
+ Softvérové kódovanie 4b6b
+ Hardvérové kódovanie 4b6b
+ Prebudenie a prispôsobenie
+ Odstránenie blokovania bolusu
+ Resetovať konfiguráciu RileyLinku
+ Typ batérie (Zobrazenie napájania)
+ Nevybrané (jednoduché zobrazenie)
+ Alkalické (rozšírené zobrazenie)
+ Líthiové (rozšírené zobrazenie)
+ NiZn (Rozšírené)
+ NiMH (Rozšírené zobrazenie)
+ Bolus/Ošetrenia ladenie
+
+ Chyby
+ Sériové číslo nenastavené.
+ Sériové číslo neplatné.
+ Nenastavený typ pumpy.
+ Nepodporovaný typ pumpy.
+ Nenastavená frekvencia pumpy.
+ Nepodporovaná frekvencia pumpy.
+ Neplatná adresa RileyLinku.
+ Rozpoznaná pumpa je iného typu než nakonfigurovaná.
+ Nastavenie bazálnych profilov/vzorov nie je na pumpe povolené. Povoľte ich na pumpe.
+ Bazálny profil na pumpe je chybný (musí byť STD).
+ Chybný typ dočasného bazálu na pumpe (musí byť absolútny).
+ Chybný max. bolus na pumpe (musí byť %1$.2f).
+ Chybný max. bazál na pumpe (musí byť %1$.2f).
+ Operácia nie je možná.\n\nNajskôr je nutné nakonfigurovať pumpu, než bude možné túto funkciu použiť.
+ Požadovaná zmena času väčšia ako 24h.
+
+
+
+
+
+
+
+ História Medtronic pumpy
+
+ Zrušili ste bolus po tom, čo bol nastavený na pumpe. Pretože Medtronic nepodporuje zrušenie bolusu, musíte ho zrušiť ručne. Pozastavte pumpu a znovu spustite (pokiaľ naďalej trváte na zrušení). Aplikácia prevezme zmeny pri ďalšom pripojení (do 5 min).
+ Nie je možné načítať aktuálny dočasný bazál.
+ Nie je možné zastaviť aktuálny dočasný bazál. Ukončujem operáciu.
+ Nastavenie profilu zlyhalo, pretože následujúce hodnoty bazálu, sú príliš vysoké: %1$s
+ Bolus nemohol byť podaný.
+ Bolus nebolo možné podať, pretože dostupné množstvo inzulínu (%1$.2f) je menšie než požadovaný bolus (%2$.2f).
+ Dočasný bazál nemohol byť nastavený.
+ Aktuálny dočasný bazál nemohol byť zrušený.
+ Bazálny profil nemohol byť nastavený.
+ Bazálny profil je rovnaký, takže nebude znovu nastavený.
+ Načítanie histórie - Strana %1$d (%2$d/16)
+ Načítanie histórie - Strana %1$d
+ Načítanie času pumpy
+ Načítanie nastavení
+ Načítanie modelu pumpy
+ Načítanie bazálneho profilu
+ Nastavovanie bazálneho profilu
+ Načítanie dočasného bazálu
+ Nastavovanie dočasného bazálu
+ Nastavovanie bolusu
+ Pumpa nedostupná
+ Upozornenie
+
+ Teraz
+
+ pred
+ Je vyžadovaná aktualizácia času v pumpe
+
+ ZAP
+ VYP
+ Čas v pumpe bol aktualizovaný
+
diff --git a/medtronic/src/main/res/values-sl-rSI/strings.xml b/medtronic/src/main/res/values-sl-rSI/strings.xml
new file mode 100644
index 0000000000..e370c4a256
--- /dev/null
+++ b/medtronic/src/main/res/values-sl-rSI/strings.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/medtronic/src/main/res/values-sv-rSE/strings.xml b/medtronic/src/main/res/values-sv-rSE/strings.xml
new file mode 100644
index 0000000000..c87bb96889
--- /dev/null
+++ b/medtronic/src/main/res/values-sv-rSE/strings.xml
@@ -0,0 +1,75 @@
+
+
+
+ Pumpintegration för Medtronic. Kräver Riley Link-enhet och fungerar bara mot vissa pumpmodeller
+
+ Serienummer på pumpen
+ Pumptyp
+ Pumpfrekvens
+ Fördröjning innan bolus startas (s)
+ Max bolus enligt pumpen (U)
+ Max basal på pumpen (U/h)
+ Medtronickodning
+ USA & Kanada (916 MHz)
+ Resten av världen (868 MHz)
+ 4b6b Mjukvarukodning
+ 4b6b Hårdvarukodning
+ Väck och finjustera frekvens
+ Ta bort bolusblockering
+ Återställ Riley Link-konfiguration
+ Batterityp
+ Ej vald
+ Alkaliskt
+ Litium
+ NiZn (utökad vy)
+ NiMH (utökad vy)
+ Avlusning av Bolus/Behandlingar
+
+ Serienummer ej angett.
+ Serienummer felaktigt.
+ Pumptyp ej vald.
+ Pumptypen stöds inte.
+ Pumpfrekvens ej vald.
+ Pumpfrekvens stöds inte.
+ Riley Link adress felaktig.
+ Pumptypen verkar inte vara samma som den inställda.
+ Basalprofiler är inte aktiverade på pumpen. Aktivera det i pumpens menyer.
+ Fel basalprofiltyp inställt på pumpen (måste vara STD).
+ Fel typ av temp basal på pumpen (måste vara satt till Absolut).
+ Fel max bolus i pumpen (måste vara %1$.2f).
+ Fel max basal i pumpen (måste vara %1$.2f).
+ Operationen inte möjlig. \n\n Du måste konfigurera Medtronicpump innan du kan använda denna funktion.
+ Mer än 24 timmars tidsändring efterfrågades.
+
+
+
+
+
+
+
+
+ Du avbröt bolusen efter att kommandot skickats till pumpen. Detta stöds inte av Medtronicpumpar, så därför måste du avbryta på själva pumpen. Det kan man göra genom att pausa insulintillförseln tillfälligt och sedan starta den igen. Appen kommer att uppdatera bolusmängd vid nästa anslutning (inom 5 min).
+ Kunde inte hämta nuvarande temp basal.
+ Kunde inte avbryta nuvarande temp basal. Avbryter kommandot.
+ Misslyckades med att sätta basalprofilen. Följande timmar har för högt värde angivet: %1$s
+ Bolus misslyckades.
+ En bolus om %2$.2f enheter kan inte levereras när reservoaren bara innehåller %1$.2f enheter.
+ Temp basal kunde inte anges.
+ Kunde inte avbryta temp basal.
+ Kunde inte byta basalprofil.
+ Basalprofilen är samma som nuvarande. Ingen ändring gjord.
+ Hämta historik - Sida %1$d (%2$d/16)
+ Hämta historik - Sida %1$d
+ Hämta tid och datum från pumpen
+ Hämta inställningar
+ Hämta pumpmodell
+ Hämta basalprofil
+ Sätt basalprofil
+ Hämta temp basal
+ Sätt temp basal
+ Leverera bolus
+
+
+
+ Tiden uppdaterad i pumpen
+
diff --git a/medtronic/src/main/res/values-tr-rTR/strings.xml b/medtronic/src/main/res/values-tr-rTR/strings.xml
new file mode 100644
index 0000000000..1dd4998375
--- /dev/null
+++ b/medtronic/src/main/res/values-tr-rTR/strings.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Pompa zamanı güncellendi
+
diff --git a/medtronic/src/main/res/values-zh-rCN/strings.xml b/medtronic/src/main/res/values-zh-rCN/strings.xml
new file mode 100644
index 0000000000..733d0974a0
--- /dev/null
+++ b/medtronic/src/main/res/values-zh-rCN/strings.xml
@@ -0,0 +1,74 @@
+
+
+
+ Medtronic 泵的集成,需要 RileyLink 设备和特定泵模型
+
+ 泵序列号
+ 泵类型
+ 泵频率
+ 启动大剂量之前的延迟。
+ 泵上的最大大剂量(U)
+ 泵上的最大基础率(U/h)
+ Medtronic公司的编码
+ 美国 & 加拿大 (916MHz)
+ 全球 (868 Mhz)
+ 软件 4b6b 编码
+ 硬件 4b6b 编码
+ 唤醒和调整
+ 清除大剂量锁定
+ 重置 RileyLink 配置
+ 电池类型 (电源视图)
+ 未选择 (简单视图)
+ Alkaline (扩展视图)
+ 锂(扩展视图)
+ 锂(扩展视图)
+ 大剂量/治疗调试
+
+ 未设置序列号。
+ 序列号无效。
+ 未设置泵类型。
+ 不支持该泵类型。
+ 未设置泵频率。
+ 不支持该泵类型。
+ RileyLink 地址无效。
+ 检测到的泵类型与配置的类型不同。
+ 在泵上未启用 基础率配置文件/模式设置。 请在泵上启用。
+ 泵上设置的基础率配置文件不正确 (必须为 STD)。
+ 在泵上设置了错误的 TBR 类型 (必须是绝对 ) 。
+ Pump 上设置的错误的最大大剂量数 (必须为 %1$.2f)。
+ 泵上设置的错误的最大大剂量数 (必须为 %1$.2f)。
+ 操作是不可能的。\n\n 您首先需要配置美敦力泵 ,然后才能使用此操作。
+ 请求了超过 24 小时的时间更改。
+
+
+
+
+
+
+
+
+ 大剂量在泵上设置之后,取消大剂量。由于 美敦力泵 不支持取消,因此您需要手动将其取消。 将泵置于暂停状态,然后执行恢复 (如果仍要取消)。 应用程序将在下次更新 ( 不到 5 分钟) 中提取更改。
+ 无法读取当前 TBR。
+ 无法取消当前 TBR。 停止操作。
+ 配置文件设置失败,因为如下的设置,有太大的基础率: %1$s
+ 大剂量无法输注
+ 无法输注大剂量,因为可用胰岛素量 (%1$.2f) 小于所需胰岛素 (%2$.2f)。
+ 无法设置 TBR。
+ 无法取消当前 TBR。
+ 基础率配置文件无法设置。
+ 基础率配置文件是相同的,所以它不会被再次设置。
+ 获取历史记录 - 页面 %1$d (%2$d/16)
+ 获取历史记录 - 页面 %1$d
+ 获取泵时间
+ 获取设置
+ 获取泵模式
+ 获得基础率
+ 获得基础率配置文件
+ 获取临时基础率
+ 设置临时基础率
+ 设置大剂量
+
+
+
+ 泵时间已经更新
+
diff --git a/medtronic/src/main/res/values/strings.xml b/medtronic/src/main/res/values/strings.xml
new file mode 100644
index 0000000000..abcf6d97d6
--- /dev/null
+++ b/medtronic/src/main/res/values/strings.xml
@@ -0,0 +1,117 @@
+
+
+
+ Medtronic
+ MDT
+ Pump integration for Medtronic, requires RileyLink device and specific Pump Model
+
+
+ pref_medtronic_serial
+ pref_medtronic_pump_type
+ pref_medtronic_frequency
+ pref_medtronic_max_bolus
+ pref_medtronic_max_basal
+ pref_medtronic_bolus_delay
+ pref_medtronic_encoding
+ pref_medtronic_battery_type
+ pref_medtronic_bolus_debug
+ pref_rileylink_mac_address
+ medtronic_pump_frequency_us_ca
+ medtronic_pump_frequency_worldwide
+ medtronic_pump_encoding_4b6b_local
+ medtronic_pump_encoding_4b6b_rileylink
+ medtronic_pump_battery_no
+ medtronic_pump_battery_alkaline
+ medtronic_pump_battery_lithium
+ medtronic_pump_battery_nizn
+ medtronic_pump_battery_nimh
+
+ Pump Serial Number
+ Pump Type
+ Pump Frequency
+ Delay before Bolus is started (s)
+ Max Bolus on Pump (U)
+ Max Basal on Pump (U/h)
+ Medtronic Encoding
+ US & Canada (916 MHz)
+ Worldwide (868 Mhz)
+ Software 4b6b Encoding
+ Hardware 4b6b Encoding
+ Wake and Tune Up
+ Clear Bolus Block
+ Reset RileyLink Config
+ Battery Type (Power View)
+ Not selected (Simple view)
+ Alkaline (Extended view)
+ Lithium (Extended view)
+ NiZn (Extended view)
+ NiMH (Extended view)
+ Bolus/Treatments Debugging
+
+
+
+
+ Errors
+ Serial # not set.
+ Serial # invalid.
+ Pump Type not set.
+ Pump Type unsupported.
+ Pump Frequency not set.
+ Pump Frequency unsupported.
+ RileyLink Address invalid.
+ Pump type detected is not the same as configured type.
+
+ Basal profiles/patterns setting is not enabled on pump. Enable it on the pump.
+ Basal profile set on pump is incorrect (must be STD).
+ Wrong TBR type set on pump (must be Absolute).
+ Wrong Max Bolus set on Pump (must be %1$.2f).
+ Wrong Max Basal set on Pump (must be %1$.2f).
+ Operation is not possible.\n\n You need to configure Medtronic Pump first, before you can use this operation.
+ Over 24h Time change was requested.
+
+
+
+
+
+
+
+
+ Medtronic Pump History
+
+
+
+
+
+ You cancelled Bolus, after it was already set on Pump. Since Medtronic Pump doesn\'t support cancel, you will need to manually cancel it. Put the Pump into Suspend mode and then do Resume (if you still want to cancel). Application will pick up changes, on next update (in less than 5 minutes).
+ Could not read current TBR.
+ Could not cancel current TBR. Stopping operation.
+ Profile set failed, because following patterns, have too big basal rate: %1$s
+ Bolus could not be delivered.
+ Bolus could not be delivered, because available insulin amount (%1$.2f) is less than bolus required (%2$.2f).
+ TBR could not be set.
+ Could not cancel current TBR.
+ Basal profile could not be set.
+ Basal profile is the same, so it will not be set again.
+
+ Get History - Page %1$d (%2$d/16)
+ Get History - Page %1$d
+ Get Pump Time
+ Get Settings
+ Get Pump Model
+ Get Basal Profile
+ Set Basal Profile
+ Get Temporary Basal
+ Set Temporary Basal
+ Set Bolus
+
+ Pump unreachable
+ Warning
+ Now
+ ago
+ Pump clock update needed
+ On
+ Off
+ Pump time updated
+ set_neutral_temps
+
+
\ No newline at end of file
diff --git a/app/src/main/res/xml/pref_medtronic.xml b/medtronic/src/main/res/xml/pref_medtronic.xml
similarity index 94%
rename from app/src/main/res/xml/pref_medtronic.xml
rename to medtronic/src/main/res/xml/pref_medtronic.xml
index fd9a84ab64..342250d046 100644
--- a/app/src/main/res/xml/pref_medtronic.xml
+++ b/medtronic/src/main/res/xml/pref_medtronic.xml
@@ -98,6 +98,12 @@
+
+
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/MedtronicConverterUTest.java b/medtronic/src/test/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/MedtronicConverterUTest.java
similarity index 70%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/MedtronicConverterUTest.java
rename to medtronic/src/test/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/MedtronicConverterUTest.java
index 1e10544e88..be499cdc97 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/MedtronicConverterUTest.java
+++ b/medtronic/src/test/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/MedtronicConverterUTest.java
@@ -1,15 +1,6 @@
package info.nightscout.androidaps.plugins.pump.medtronic.comm;
-import java.util.Map;
-
import org.junit.Ignore;
-import org.junit.Test;
-
-import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil;
-import info.nightscout.androidaps.plugins.pump.medtronic.data.dto.PumpSettingDTO;
-import info.nightscout.androidaps.plugins.pump.medtronic.defs.MedtronicCommandType;
-import info.nightscout.androidaps.plugins.pump.medtronic.defs.MedtronicDeviceType;
-import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil;
/**
* Created by andy on 1/30/19.
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/MedtronicHistoryDataUTest.java b/medtronic/src/test/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/MedtronicHistoryDataUTest.java
similarity index 96%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/MedtronicHistoryDataUTest.java
rename to medtronic/src/test/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/MedtronicHistoryDataUTest.java
index 824d9a3f1e..e02c4bab20 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/MedtronicHistoryDataUTest.java
+++ b/medtronic/src/test/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/MedtronicHistoryDataUTest.java
@@ -1,18 +1,5 @@
package info.nightscout.androidaps.plugins.pump.medtronic.comm;
-import android.util.Log;
-
-import org.junit.Before;
-
-import java.util.List;
-
-import info.nightscout.androidaps.R;
-import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil;
-import info.nightscout.androidaps.plugins.pump.medtronic.comm.history.RawHistoryPage;
-import info.nightscout.androidaps.plugins.pump.medtronic.comm.history.pump.MedtronicPumpHistoryDecoder;
-import info.nightscout.androidaps.plugins.pump.medtronic.comm.history.pump.PumpHistoryEntry;
-
-import static org.mockito.Mockito.when;
//import uk.org.lidalia.slf4jtest.TestLogger;
//import uk.org.lidalia.slf4jtest.TestLoggerFactory;
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/MedtronicPumpHistoryDecoderUTest.java b/medtronic/src/test/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/MedtronicPumpHistoryDecoderUTest.java
similarity index 98%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/MedtronicPumpHistoryDecoderUTest.java
rename to medtronic/src/test/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/MedtronicPumpHistoryDecoderUTest.java
index 0420dba922..3cfd7dc067 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/MedtronicPumpHistoryDecoderUTest.java
+++ b/medtronic/src/test/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/MedtronicPumpHistoryDecoderUTest.java
@@ -1,10 +1,8 @@
package info.nightscout.androidaps.plugins.pump.medtronic.comm.history.pump;
-import org.junit.Before;
import org.junit.Ignore;
import info.nightscout.androidaps.plugins.pump.common.defs.PumpHistoryEntryGroup;
-import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil;
/**
* Created by andy on 11/1/18.
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/PumpHistoryEntryUTest.java b/medtronic/src/test/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/PumpHistoryEntryUTest.java
similarity index 97%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/PumpHistoryEntryUTest.java
rename to medtronic/src/test/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/PumpHistoryEntryUTest.java
index c668f53f06..af8c7b0d0a 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/PumpHistoryEntryUTest.java
+++ b/medtronic/src/test/java/info/nightscout/androidaps/plugins/pump/medtronic/comm/history/pump/PumpHistoryEntryUTest.java
@@ -1,7 +1,6 @@
package info.nightscout.androidaps.plugins.pump.medtronic.comm.history.pump;
import org.junit.Assert;
-import org.junit.Test;
import java.util.Date;
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BasalProfileUTest.java b/medtronic/src/test/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BasalProfileUTest.java
similarity index 94%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BasalProfileUTest.java
rename to medtronic/src/test/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BasalProfileUTest.java
index 21b98660d6..8b2eaa3e7e 100644
--- a/app/src/test/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BasalProfileUTest.java
+++ b/medtronic/src/test/java/info/nightscout/androidaps/plugins/pump/medtronic/data/dto/BasalProfileUTest.java
@@ -1,20 +1,9 @@
package info.nightscout.androidaps.plugins.pump.medtronic.data.dto;
-import junit.framework.Assert;
-
-import org.junit.Before;
import org.junit.Ignore;
-import org.junit.Test;
-import org.powermock.api.mockito.PowerMockito;
-import info.nightscout.androidaps.interfaces.PumpDescription;
-import info.nightscout.androidaps.plugins.pump.common.defs.PumpType;
import info.nightscout.androidaps.plugins.pump.medtronic.driver.MedtronicPumpStatus;
import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil;
-import info.nightscout.androidaps.utils.DateUtil;
-import info.nightscout.androidaps.utils.T;
-
-import static org.mockito.Mockito.when;
/**
* Created by andy on 6/16/18.
diff --git a/rileylink/.gitignore b/rileylink/.gitignore
new file mode 100644
index 0000000000..796b96d1c4
--- /dev/null
+++ b/rileylink/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/rileylink/build.gradle b/rileylink/build.gradle
new file mode 100644
index 0000000000..07b262bfeb
--- /dev/null
+++ b/rileylink/build.gradle
@@ -0,0 +1,81 @@
+apply plugin: 'com.android.library'
+apply plugin: 'kotlin-android'
+apply plugin: 'kotlin-android-extensions'
+apply plugin: 'kotlin-kapt'
+
+android {
+ compileSdkVersion 28
+
+ defaultConfig {
+ minSdkVersion 24
+ targetSdkVersion 28
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ 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
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+dependencies {
+ implementation project(':core')
+
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
+ implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
+ implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutinesVersion"
+ implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutinesVersion"
+
+ implementation 'androidx.appcompat:appcompat:1.1.0'
+ implementation 'androidx.legacy:legacy-support-v13:1.0.0'
+ implementation 'androidx.core:core-ktx:1.2.0'
+ implementation "androidx.preference:preference-ktx:1.1.1"
+ implementation "androidx.activity:activity-ktx:${activityVersion}"
+ implementation 'com.google.android.material:material:1.1.0'
+
+ implementation "io.reactivex.rxjava2:rxandroid:${rxandroid_version}"
+
+ // Graphview cannot be upgraded
+ implementation "com.jjoe64:graphview:4.0.1"
+
+ implementation "com.joanzapata.iconify:android-iconify-fontawesome:2.2.2"
+
+ // rileylink - start
+ implementation 'org.apache.commons:commons-lang3:3.10'
+ implementation 'net.danlew:android.joda:2.10.6'
+ implementation 'org.slf4j:slf4j-api:1.7.30'
+ // rileylink - end
+
+ implementation "com.google.dagger:dagger-android:$dagger_version"
+ implementation "com.google.dagger:dagger-android-support:$dagger_version"
+ 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"
+
+ testImplementation 'junit:junit:4.13'
+ androidTestImplementation 'androidx.test.ext:junit:1.1.1'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
+}
diff --git a/rileylink/consumer-rules.pro b/rileylink/consumer-rules.pro
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/rileylink/proguard-rules.pro b/rileylink/proguard-rules.pro
new file mode 100644
index 0000000000..f1b424510d
--- /dev/null
+++ b/rileylink/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
diff --git a/rileylink/src/androidTest/java/info/nightscout/androidaps/plugins/pump/common/ExampleInstrumentedTest.java b/rileylink/src/androidTest/java/info/nightscout/androidaps/plugins/pump/common/ExampleInstrumentedTest.java
new file mode 100644
index 0000000000..9942e86384
--- /dev/null
+++ b/rileylink/src/androidTest/java/info/nightscout/androidaps/plugins/pump/common/ExampleInstrumentedTest.java
@@ -0,0 +1,27 @@
+package info.nightscout.androidaps.plugins.pump.common;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see Testing documentation
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+
+ assertEquals("info.nightscout.androidaps.plugins.pump.common.test", appContext.getPackageName());
+ }
+}
diff --git a/rileylink/src/main/AndroidManifest.xml b/rileylink/src/main/AndroidManifest.xml
new file mode 100644
index 0000000000..c603e9e7ef
--- /dev/null
+++ b/rileylink/src/main/AndroidManifest.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/dialog/RileyLinkBLEScanActivity.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/dialog/RileyLinkBLEScanActivity.java
similarity index 77%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/dialog/RileyLinkBLEScanActivity.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/dialog/RileyLinkBLEScanActivity.java
index ccb47a7d4a..78db788350 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/dialog/RileyLinkBLEScanActivity.java
+++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/dialog/RileyLinkBLEScanActivity.java
@@ -1,6 +1,5 @@
package info.nightscout.androidaps.plugins.pump.common.dialog;
-import android.Manifest;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.bluetooth.le.BluetoothLeScanner;
@@ -9,8 +8,6 @@ import android.bluetooth.le.ScanFilter;
import android.bluetooth.le.ScanResult;
import android.bluetooth.le.ScanSettings;
import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.ParcelUuid;
@@ -26,35 +23,32 @@ import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.widget.Toolbar;
-import androidx.core.app.ActivityCompat;
-import androidx.core.content.ContextCompat;
+
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
-import java.util.Arrays;
+import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.inject.Inject;
-import info.nightscout.androidaps.R;
+
import info.nightscout.androidaps.activities.NoSplashAppCompatActivity;
import info.nightscout.androidaps.interfaces.ActivePluginProvider;
import info.nightscout.androidaps.interfaces.PumpInterface;
import info.nightscout.androidaps.logging.AAPSLogger;
import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
import info.nightscout.androidaps.plugins.common.ManufacturerType;
+import info.nightscout.androidaps.plugins.pump.common.R;
+import info.nightscout.androidaps.plugins.pump.common.ble.BlePreCheck;
import info.nightscout.androidaps.plugins.pump.common.defs.PumpType;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkConst;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkUtil;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.data.GattAttributes;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkPumpDevice;
-import info.nightscout.androidaps.plugins.pump.common.utils.LocationHelper;
-import info.nightscout.androidaps.plugins.pump.medtronic.MedtronicPumpPlugin;
-import info.nightscout.androidaps.plugins.pump.medtronic.events.EventMedtronicPumpConfigurationChanged;
-import info.nightscout.androidaps.plugins.pump.omnipod.events.EventOmnipodPumpValuesChanged;
import info.nightscout.androidaps.utils.resources.ResourceHelper;
import info.nightscout.androidaps.utils.sharedPreferences.SP;
@@ -65,6 +59,7 @@ public class RileyLinkBLEScanActivity extends NoSplashAppCompatActivity {
@Inject SP sp;
@Inject RxBusWrapper rxBus;
@Inject ResourceHelper resourceHelper;
+ @Inject BlePreCheck blePrecheck;
@Inject RileyLinkUtil rileyLinkUtil;
@Inject ActivePluginProvider activePlugin;
@@ -117,20 +112,20 @@ public class RileyLinkBLEScanActivity extends NoSplashAppCompatActivity {
PumpInterface activePump = activePlugin.getActivePump();
- if (activePump.manufacturer()== ManufacturerType.Medtronic) {
- RileyLinkPumpDevice rileyLinkPump = (RileyLinkPumpDevice)activePump;
+ if (activePump.manufacturer() == ManufacturerType.Medtronic) {
+ RileyLinkPumpDevice rileyLinkPump = (RileyLinkPumpDevice) activePump;
rileyLinkPump.getRileyLinkService().verifyConfiguration(); // force reloading of address
- rxBus.send(new EventMedtronicPumpConfigurationChanged());
+ rileyLinkPump.triggerPumpConfigurationChangedEvent();
- } else if (activePlugin.getActivePump().manufacturer()== ManufacturerType.Insulet) {
- if (activePump.model()== PumpType.Insulet_Omnipod_Dash) {
+ } else if (activePlugin.getActivePump().manufacturer() == ManufacturerType.Insulet) {
+ if (activePump.model() == PumpType.Insulet_Omnipod_Dash) {
aapsLogger.error("Omnipod Dash not yet implemented.");
} else {
- RileyLinkPumpDevice rileyLinkPump = (RileyLinkPumpDevice)activePump;
+ RileyLinkPumpDevice rileyLinkPump = (RileyLinkPumpDevice) activePump;
rileyLinkPump.getRileyLinkService().verifyConfiguration(); // force reloading of address
- rxBus.send(new EventOmnipodPumpValuesChanged());
+ rileyLinkPump.triggerPumpConfigurationChangedEvent();
}
}
@@ -162,49 +157,26 @@ public class RileyLinkBLEScanActivity extends NoSplashAppCompatActivity {
@Override
public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case R.id.rileylink_miScan: {
- scanLeDevice(menuItem.getTitle().equals(actionTitleStart));
- return true;
- }
-
- default:
- return super.onOptionsItemSelected(item);
+ if (item.getTitle().equals(actionTitleStart)) {
+ scanLeDevice(true);
+ return true;
+ } else if (item.getTitle().equals(actionTitleStop)) {
+ scanLeDevice(false);
+ return true;
+ } else {
+ return super.onOptionsItemSelected(item);
}
}
public void prepareForScanning() {
- // https://developer.android.com/training/permissions/requesting.html
- // http://developer.radiusnetworks.com/2015/09/29/is-your-beacon-app-ready-for-android-6.html
- if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) {
- Toast.makeText(this, R.string.rileylink_scanner_ble_not_supported, Toast.LENGTH_SHORT).show();
- } else {
- // Use this check to determine whether BLE is supported on the device. Then
- // you can selectively disable BLE-related features.
- if (ContextCompat.checkSelfPermission(mContext, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
- // your code that requires permission
- ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION},
- PERMISSION_REQUEST_COARSE_LOCATION);
- }
+ boolean checkOK = blePrecheck.prerequisitesCheck(this);
- // Ensures Bluetooth is available on the device and it is enabled. If not,
- // displays a dialog requesting user permission to enable Bluetooth.
- if (mBluetoothAdapter == null || !mBluetoothAdapter.isEnabled()) {
- Toast.makeText(this, R.string.rileylink_scanner_ble_not_enabled, Toast.LENGTH_SHORT).show();
- } else {
-
- // Will request that GPS be enabled for devices running Marshmallow or newer.
- if (!LocationHelper.isLocationEnabled(this)) {
- LocationHelper.requestLocationForBluetooth(this);
- }
-
- mLEScanner = mBluetoothAdapter.getBluetoothLeScanner();
- settings = new ScanSettings.Builder().setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY).build();
- filters = Arrays.asList(new ScanFilter.Builder().setServiceUuid(
- ParcelUuid.fromString(GattAttributes.SERVICE_RADIO)).build());
-
- }
+ if (checkOK) {
+ mLEScanner = mBluetoothAdapter.getBluetoothLeScanner();
+ settings = new ScanSettings.Builder().setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY).build();
+ filters = Collections.singletonList(new ScanFilter.Builder().setServiceUuid(
+ ParcelUuid.fromString(GattAttributes.SERVICE_RADIO)).build());
}
// disable currently selected RL, so that we can discover it
@@ -212,19 +184,6 @@ public class RileyLinkBLEScanActivity extends NoSplashAppCompatActivity {
}
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- if (requestCode == REQUEST_ENABLE_BT) {
- if (resultCode == RESULT_OK) {
- // User allowed Bluetooth to turn on
- } else if (resultCode == RESULT_CANCELED) {
- // Error, or user said "NO"
- finish();
- }
- }
- }
-
private ScanCallback mScanCallback2 = new ScanCallback() {
@Override
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/events/EventMedtronicDeviceStatusChange.kt b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/events/EventRileyLinkDeviceStatusChange.kt
similarity index 63%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/events/EventMedtronicDeviceStatusChange.kt
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/events/EventRileyLinkDeviceStatusChange.kt
index 37e6649252..b3425d14a5 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/medtronic/events/EventMedtronicDeviceStatusChange.kt
+++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/events/EventRileyLinkDeviceStatusChange.kt
@@ -1,17 +1,21 @@
-package info.nightscout.androidaps.plugins.pump.medtronic.events
+package info.nightscout.androidaps.plugins.pump.common.events
import info.nightscout.androidaps.events.Event
+import info.nightscout.androidaps.plugins.pump.common.defs.PumpDeviceState
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkError
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkServiceState
-import info.nightscout.androidaps.plugins.pump.medtronic.defs.PumpDeviceState
-class EventMedtronicDeviceStatusChange : Event {
+open class EventRileyLinkDeviceStatusChange : Event {
- private var rileyLinkServiceState: RileyLinkServiceState? = null
- private var rileyLinkError: RileyLinkError? = null
+ var rileyLinkServiceState: RileyLinkServiceState? = null
+ var rileyLinkError: RileyLinkError? = null
- private var pumpDeviceState: PumpDeviceState? = null
- private var errorDescription: String? = null
+ var pumpDeviceState: PumpDeviceState? = null
+ var errorDescription: String? = null
+
+ constructor() {
+
+ }
constructor(rileyLinkServiceState: RileyLinkServiceState?, rileyLinkError: RileyLinkError?) {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/RileyLinkCommunicationManager.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/RileyLinkCommunicationManager.java
similarity index 95%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/RileyLinkCommunicationManager.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/RileyLinkCommunicationManager.java
index db7692f5bd..8a47453ad3 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/RileyLinkCommunicationManager.java
+++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/RileyLinkCommunicationManager.java
@@ -6,6 +6,7 @@ import dagger.android.HasAndroidInjector;
import info.nightscout.androidaps.logging.AAPSLogger;
import info.nightscout.androidaps.logging.LTag;
import info.nightscout.androidaps.plugins.pump.common.data.PumpStatus;
+import info.nightscout.androidaps.plugins.pump.common.defs.PumpDeviceState;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.RFSpy;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.RileyLinkCommunicationException;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.data.FrequencyScanResults;
@@ -20,7 +21,6 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.Riley
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks.ServiceTaskExecutor;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.tasks.WakeAndTuneTask;
import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil;
-import info.nightscout.androidaps.plugins.pump.medtronic.defs.PumpDeviceState;
import info.nightscout.androidaps.utils.Round;
import info.nightscout.androidaps.utils.sharedPreferences.SP;
@@ -59,23 +59,23 @@ public abstract class RileyLinkCommunicationManager {
// All pump communications go through this function.
- protected E sendAndListen(RLMessage msg, int timeout_ms, Class clazz)
+ protected RLMessage sendAndListen(RLMessage msg, int timeout_ms)
throws RileyLinkCommunicationException {
- return sendAndListen(msg, timeout_ms, null, clazz);
+ return sendAndListen(msg, timeout_ms, null);
}
- private E sendAndListen(RLMessage msg, int timeout_ms, Integer extendPreamble_ms, Class clazz)
+ private RLMessage sendAndListen(RLMessage msg, int timeout_ms, Integer extendPreamble_ms)
throws RileyLinkCommunicationException {
- return sendAndListen(msg, timeout_ms, 0, extendPreamble_ms, clazz);
+ return sendAndListen(msg, timeout_ms, 0, extendPreamble_ms);
}
// For backward compatibility
- private E sendAndListen(RLMessage msg, int timeout_ms, int repeatCount, Integer extendPreamble_ms, Class clazz)
+ private RLMessage sendAndListen(RLMessage msg, int timeout_ms, int repeatCount, Integer extendPreamble_ms)
throws RileyLinkCommunicationException {
- return sendAndListen(msg, timeout_ms, repeatCount, 0, extendPreamble_ms, clazz);
+ return sendAndListen(msg, timeout_ms, repeatCount, 0, extendPreamble_ms);
}
- protected E sendAndListen(RLMessage msg, int timeout_ms, int repeatCount, int retryCount, Integer extendPreamble_ms, Class clazz)
+ protected RLMessage sendAndListen(RLMessage msg, int timeout_ms, int repeatCount, int retryCount, Integer extendPreamble_ms)
throws RileyLinkCommunicationException {
// internal flag
@@ -88,7 +88,7 @@ public abstract class RileyLinkCommunicationManager {
(byte) 0, (byte) repeatCount, (byte) 0, (byte) 0, timeout_ms, (byte) retryCount, extendPreamble_ms);
RadioResponse radioResponse = rfSpyResponse.getRadioResponse(injector);
- E response = createResponseMessage(radioResponse.getPayload(), clazz);
+ RLMessage response = createResponseMessage(radioResponse.getPayload());
if (response.isValid()) {
// Mark this as the last time we heard from the pump.
@@ -124,7 +124,7 @@ public abstract class RileyLinkCommunicationManager {
}
- public abstract E createResponseMessage(byte[] payload, Class clazz);
+ public abstract RLMessage createResponseMessage(byte[] payload);
public abstract void setPumpDeviceState(PumpDeviceState pumpDeviceState);
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/RileyLinkConst.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/RileyLinkConst.java
similarity index 86%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/RileyLinkConst.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/RileyLinkConst.java
index bff2a39240..40d17aee84 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/RileyLinkConst.java
+++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/RileyLinkConst.java
@@ -1,6 +1,7 @@
package info.nightscout.androidaps.plugins.pump.common.hw.rileylink;
-import info.nightscout.androidaps.R;
+
+import info.nightscout.androidaps.plugins.pump.common.R;
/**
* Created by andy on 16/05/2018.
@@ -10,7 +11,7 @@ public class RileyLinkConst {
static final String Prefix = "AAPS.RileyLink.";
- public class Intents {
+ public static class Intents {
public static final String RileyLinkReady = Prefix + "RileyLink_Ready";
public static final String RileyLinkGattFailed = Prefix + "RileyLink_Gatt_Failed";
@@ -27,22 +28,21 @@ public class RileyLinkConst {
public static final String RileyLinkDisconnect = Prefix + "RileyLink_Disconnect";
}
- public class Prefs {
+ public static class Prefs {
//public static final String PrefPrefix = "pref_rileylink_";
//public static final String RileyLinkAddress = PrefPrefix + "mac_address"; // pref_rileylink_mac_address
public static final int RileyLinkAddress = R.string.key_rileylink_mac_address;
public static final String LastGoodDeviceCommunicationTime = Prefix + "lastGoodDeviceCommunicationTime";
public static final String LastGoodDeviceFrequency = Prefix + "LastGoodDeviceFrequency";
+ public static final int Encoding = R.string.key_medtronic_encoding;
}
- public class IPC {
+ public static class IPC {
// needs to br renamed (and maybe removed)
public static final String MSG_PUMP_quickTune = Prefix + "MSG_PUMP_quickTune";
public static final String MSG_PUMP_tunePump = Prefix + "MSG_PUMP_tunePump";
- public static final String MSG_PUMP_fetchHistory = Prefix + "MSG_PUMP_fetchHistory";
- public static final String MSG_PUMP_fetchSavedHistory = Prefix + "MSG_PUMP_fetchSavedHistory";
public static final String MSG_ServiceCommand = Prefix + "MSG_ServiceCommand";
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/RileyLinkUtil.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/RileyLinkUtil.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/RileyLinkUtil.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/RileyLinkUtil.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RFSpy.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RFSpy.java
similarity index 98%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RFSpy.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RFSpy.java
index 71fc405748..dc5e648194 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RFSpy.java
+++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RFSpy.java
@@ -7,9 +7,11 @@ import java.util.UUID;
import javax.inject.Inject;
import dagger.android.HasAndroidInjector;
-import info.nightscout.androidaps.R;
+
import info.nightscout.androidaps.logging.AAPSLogger;
import info.nightscout.androidaps.logging.LTag;
+import info.nightscout.androidaps.plugins.pump.common.R;
+import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkConst;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkUtil;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.command.Reset;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.command.RileyLinkCommand;
@@ -31,7 +33,7 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.Riley
import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil;
import info.nightscout.androidaps.plugins.pump.common.utils.StringUtil;
import info.nightscout.androidaps.plugins.pump.common.utils.ThreadUtil;
-import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicConst;
+
import info.nightscout.androidaps.utils.resources.ResourceHelper;
import info.nightscout.androidaps.utils.sharedPreferences.SP;
@@ -371,7 +373,8 @@ public class RFSpy {
RileyLinkEncodingType encoding = RileyLinkEncodingType.FourByteSixByteLocal;
if (RileyLinkFirmwareVersion.isSameVersion(rileyLinkServiceData.firmwareVersion, RileyLinkFirmwareVersion.Version2AndHigher)) {
- if (sp.getString(MedtronicConst.Prefs.Encoding, "None").equals(resourceHelper.gs(R.string.key_medtronic_pump_encoding_4b6b_rileylink))) {
+ if (sp.getString(RileyLinkConst.Prefs.Encoding, "None")
+ .equals(resourceHelper.gs(R.string.key_medtronic_pump_encoding_4b6b_rileylink))) {
encoding = RileyLinkEncodingType.FourByteSixByteRileyLink;
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RFSpyReader.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RFSpyReader.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RFSpyReader.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RFSpyReader.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RileyLinkBLE.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RileyLinkBLE.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RileyLinkBLE.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RileyLinkBLE.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RileyLinkCommunicationException.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RileyLinkCommunicationException.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RileyLinkCommunicationException.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RileyLinkCommunicationException.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/GetVersion.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/GetVersion.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/GetVersion.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/GetVersion.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/Reset.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/Reset.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/Reset.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/Reset.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/ResetRadioConfig.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/ResetRadioConfig.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/ResetRadioConfig.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/ResetRadioConfig.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/RileyLinkCommand.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/RileyLinkCommand.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/RileyLinkCommand.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/RileyLinkCommand.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/SendAndListen.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/SendAndListen.java
similarity index 97%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/SendAndListen.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/SendAndListen.java
index 6304567751..d54fef0599 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/SendAndListen.java
+++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/SendAndListen.java
@@ -6,7 +6,6 @@ import java.util.ArrayList;
import javax.inject.Inject;
import dagger.android.HasAndroidInjector;
-import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkUtil;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.data.RadioPacket;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs.RileyLinkCommandType;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs.RileyLinkFirmwareVersion;
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/SetHardwareEncoding.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/SetHardwareEncoding.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/SetHardwareEncoding.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/SetHardwareEncoding.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/SetPreamble.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/SetPreamble.java
similarity index 95%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/SetPreamble.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/SetPreamble.java
index 3e99a8e412..0d551204af 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/SetPreamble.java
+++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/SetPreamble.java
@@ -7,7 +7,6 @@ import org.apache.commons.lang3.NotImplementedException;
import javax.inject.Inject;
import dagger.android.HasAndroidInjector;
-import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkUtil;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs.RileyLinkCommandType;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs.RileyLinkFirmwareVersion;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.RileyLinkServiceData;
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/UpdateRegister.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/UpdateRegister.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/UpdateRegister.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/command/UpdateRegister.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/FrequencyScanResults.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/FrequencyScanResults.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/FrequencyScanResults.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/FrequencyScanResults.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/FrequencyTrial.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/FrequencyTrial.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/FrequencyTrial.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/FrequencyTrial.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/GattAttributes.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/GattAttributes.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/GattAttributes.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/GattAttributes.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/RFSpyResponse.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/RFSpyResponse.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/RFSpyResponse.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/RFSpyResponse.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/RLMessage.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/RLMessage.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/RLMessage.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/RLMessage.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/RLMessageType.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/RLMessageType.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/RLMessageType.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/RLMessageType.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/RadioPacket.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/RadioPacket.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/RadioPacket.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/RadioPacket.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/RadioResponse.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/RadioResponse.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/RadioResponse.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/RadioResponse.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6b.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6b.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6b.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6b.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bAbstract.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bAbstract.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bAbstract.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bAbstract.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bGeoff.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bGeoff.java
similarity index 99%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bGeoff.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bGeoff.java
index 47f13f3095..32176040f5 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bGeoff.java
+++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bGeoff.java
@@ -1,7 +1,6 @@
package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.data.encoding;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import java.util.ArrayList;
import java.util.List;
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bGo.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bGo.java
similarity index 99%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bGo.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bGo.java
index 6b4bd73760..3b0152455c 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bGo.java
+++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bGo.java
@@ -4,7 +4,6 @@ import java.util.HashMap;
import java.util.Map;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import info.nightscout.androidaps.logging.StacktraceLoggerWrapper;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.RileyLinkCommunicationException;
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bLoop.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bLoop.java
similarity index 99%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bLoop.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bLoop.java
index 56ec7751a5..d7a3a5f9d1 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bLoop.java
+++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/data/encoding/Encoding4b6bLoop.java
@@ -6,7 +6,6 @@ import java.util.List;
import java.util.Map;
import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import info.nightscout.androidaps.logging.StacktraceLoggerWrapper;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.RileyLinkCommunicationException;
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/CC111XRegister.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/CC111XRegister.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/CC111XRegister.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/CC111XRegister.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RFSpyCommand.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RFSpyCommand.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RFSpyCommand.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RFSpyCommand.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RFSpyRLResponse.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RFSpyRLResponse.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RFSpyRLResponse.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RFSpyRLResponse.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RLMessageType.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RLMessageType.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RLMessageType.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RLMessageType.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RXFilterMode.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RXFilterMode.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RXFilterMode.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RXFilterMode.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RileyLinkBLEError.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RileyLinkBLEError.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RileyLinkBLEError.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RileyLinkBLEError.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RileyLinkCommandType.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RileyLinkCommandType.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RileyLinkCommandType.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RileyLinkCommandType.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RileyLinkEncodingType.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RileyLinkEncodingType.java
similarity index 77%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RileyLinkEncodingType.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RileyLinkEncodingType.java
index 5482e224e3..55c2ce9539 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RileyLinkEncodingType.java
+++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RileyLinkEncodingType.java
@@ -3,8 +3,9 @@ package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs;
import java.util.HashMap;
import java.util.Map;
-import info.nightscout.androidaps.R;
-import info.nightscout.androidaps.MainApp;
+
+import info.nightscout.androidaps.plugins.pump.common.R;
+import info.nightscout.androidaps.utils.resources.ResourceHelper;
public enum RileyLinkEncodingType {
@@ -20,33 +21,31 @@ public enum RileyLinkEncodingType {
private static Map encodingTypeMap;
- static {
- encodingTypeMap = new HashMap<>();
-
- for (RileyLinkEncodingType encType : values()) {
- if (encType.resourceId!=null) {
- encodingTypeMap.put(MainApp.gs(encType.resourceId), encType);
- }
- }
- }
-
-
RileyLinkEncodingType(int value) {
this.value = (byte)value;
}
-
RileyLinkEncodingType(int value, Integer resourceId) {
this.value = (byte)value;
this.resourceId = resourceId;
}
- public static RileyLinkEncodingType getByDescription(String description) {
+ private static void doTranslation(ResourceHelper resourceHelper) {
+ encodingTypeMap = new HashMap<>();
+
+ for (RileyLinkEncodingType encType : values()) {
+ if (encType.resourceId!=null) {
+ encodingTypeMap.put(resourceHelper.gs(encType.resourceId), encType);
+ }
+ }
+ }
+
+ public static RileyLinkEncodingType getByDescription(String description, ResourceHelper resourceHelper) {
+ if (encodingTypeMap == null) doTranslation(resourceHelper);
if (encodingTypeMap.containsKey(description)) {
return encodingTypeMap.get(description);
}
return RileyLinkEncodingType.FourByteSixByteLocal;
}
-
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RileyLinkFirmwareVersion.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RileyLinkFirmwareVersion.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RileyLinkFirmwareVersion.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RileyLinkFirmwareVersion.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RileyLinkTargetFrequency.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RileyLinkTargetFrequency.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RileyLinkTargetFrequency.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/defs/RileyLinkTargetFrequency.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/operations/BLECommOperation.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/operations/BLECommOperation.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/operations/BLECommOperation.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/operations/BLECommOperation.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/operations/BLECommOperationResult.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/operations/BLECommOperationResult.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/operations/BLECommOperationResult.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/operations/BLECommOperationResult.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/operations/CharacteristicReadOperation.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/operations/CharacteristicReadOperation.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/operations/CharacteristicReadOperation.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/operations/CharacteristicReadOperation.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/operations/CharacteristicWriteOperation.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/operations/CharacteristicWriteOperation.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/operations/CharacteristicWriteOperation.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/operations/CharacteristicWriteOperation.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/operations/DescriptorWriteOperation.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/operations/DescriptorWriteOperation.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/operations/DescriptorWriteOperation.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/operations/DescriptorWriteOperation.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/data/BleAdvertisedData.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/data/BleAdvertisedData.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/data/BleAdvertisedData.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/data/BleAdvertisedData.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/data/CommandValueDefinition.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/data/CommandValueDefinition.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/data/CommandValueDefinition.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/data/CommandValueDefinition.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/data/RLHistoryItem.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/data/RLHistoryItem.java
similarity index 62%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/data/RLHistoryItem.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/data/RLHistoryItem.java
index a75e59b17a..c845a3afe2 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/data/RLHistoryItem.java
+++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/data/RLHistoryItem.java
@@ -2,13 +2,17 @@ package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.data;
import org.joda.time.LocalDateTime;
+
+
+
+import info.nightscout.androidaps.plugins.pump.common.defs.PumpDeviceState;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkError;
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.medtronic.defs.MedtronicCommandType;
-import info.nightscout.androidaps.plugins.pump.medtronic.defs.PumpDeviceState;
+//import info.nightscout.androidaps.plugins.pump.medtronic.defs.MedtronicCommandType;
+//import info.nightscout.androidaps.plugins.pump.medtronic.defs.PumpDeviceState;
import info.nightscout.androidaps.utils.resources.ResourceHelper;
-import info.nightscout.androidaps.plugins.pump.omnipod.defs.OmnipodCommandType;
+//import info.nightscout.androidaps.plugins.pump.omnipod.defs.OmnipodCommandType;
/**
@@ -17,16 +21,21 @@ import info.nightscout.androidaps.plugins.pump.omnipod.defs.OmnipodCommandType;
public class RLHistoryItem {
- private MedtronicCommandType medtronicCommandType;
- private LocalDateTime dateTime;
- private RLHistoryItemSource source;
- private RileyLinkServiceState serviceState;
- private RileyLinkError errorCode;
+ //private MedtronicCommandType medtronicCommandType;
+ protected LocalDateTime dateTime;
+ protected RLHistoryItemSource source;
+ protected RileyLinkServiceState serviceState;
+ protected RileyLinkError errorCode;
- private RileyLinkTargetDevice targetDevice;
- private PumpDeviceState pumpDeviceState;
- private OmnipodCommandType omnipodCommandType;
+ protected RileyLinkTargetDevice targetDevice;
+ protected PumpDeviceState pumpDeviceState;
+ //private OmnipodCommandType omnipodCommandType;
+ public RLHistoryItem(LocalDateTime dateTime, RLHistoryItemSource source, RileyLinkTargetDevice targetDevice) {
+ this.dateTime = dateTime;
+ this.source = source;
+ this.targetDevice = targetDevice;
+ }
public RLHistoryItem(RileyLinkServiceState serviceState, RileyLinkError errorCode,
RileyLinkTargetDevice targetDevice) {
@@ -46,18 +55,18 @@ public class RLHistoryItem {
}
- public RLHistoryItem(MedtronicCommandType medtronicCommandType) {
- this.dateTime = new LocalDateTime();
- this.medtronicCommandType = medtronicCommandType;
- source = RLHistoryItemSource.MedtronicCommand;
- }
-
-
- public RLHistoryItem(OmnipodCommandType omnipodCommandType) {
- this.dateTime = new LocalDateTime();
- this.omnipodCommandType = omnipodCommandType;
- source = RLHistoryItemSource.OmnipodCommand;
- }
+// public RLHistoryItem(MedtronicCommandType medtronicCommandType) {
+// this.dateTime = new LocalDateTime();
+// this.medtronicCommandType = medtronicCommandType;
+// source = RLHistoryItemSource.MedtronicCommand;
+// }
+//
+//
+// public RLHistoryItem(OmnipodCommandType omnipodCommandType) {
+// this.dateTime = new LocalDateTime();
+// this.omnipodCommandType = omnipodCommandType;
+// source = RLHistoryItemSource.OmnipodCommand;
+// }
public LocalDateTime getDateTime() {
@@ -86,11 +95,11 @@ public class RLHistoryItem {
case MedtronicPump:
return resourceHelper.gs(pumpDeviceState.getResourceId());
- case MedtronicCommand:
- return medtronicCommandType.name();
-
- case OmnipodCommand:
- return omnipodCommandType.name();
+// case MedtronicCommand:
+// return medtronicCommandType.name();
+//
+// case OmnipodCommand:
+// return omnipodCommandType.name();
default:
return "Unknown Description";
@@ -130,7 +139,7 @@ public class RLHistoryItem {
@Override
public int compare(RLHistoryItem o1, RLHistoryItem o2) {
- return o2.dateTime.compareTo(o1.dateTime);
+ return o2.dateTime.compareTo(o1.getDateTime());
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/CommandValueDefinitionRLType.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/CommandValueDefinitionRLType.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/CommandValueDefinitionRLType.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/CommandValueDefinitionRLType.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/CommandValueDefinitionType.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/CommandValueDefinitionType.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/CommandValueDefinitionType.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/CommandValueDefinitionType.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkError.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkError.java
similarity index 95%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkError.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkError.java
index 07867a781a..0334c8d54e 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkError.java
+++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkError.java
@@ -1,6 +1,7 @@
package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs;
-import info.nightscout.androidaps.R;
+
+import info.nightscout.androidaps.plugins.pump.common.R;
/**
* Created by andy on 14/05/2018.
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkPumpDevice.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkPumpDevice.java
similarity index 75%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkPumpDevice.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkPumpDevice.java
index a13791dd1a..71c2b5d20a 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkPumpDevice.java
+++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkPumpDevice.java
@@ -1,6 +1,5 @@
package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs;
-import info.nightscout.androidaps.plugins.pump.common.defs.DeviceCommandExecutor;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.RileyLinkService;
public interface RileyLinkPumpDevice {
@@ -15,8 +14,8 @@ public interface RileyLinkPumpDevice {
void doTuneUpDevice();
+ void triggerPumpConfigurationChangedEvent();
+
RileyLinkService getRileyLinkService();
- DeviceCommandExecutor getDeviceCommandExecutor();
-
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkServiceState.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkServiceState.java
similarity index 98%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkServiceState.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkServiceState.java
index 63ab0b3d30..76c31f9cf2 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkServiceState.java
+++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkServiceState.java
@@ -1,6 +1,7 @@
package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs;
-import info.nightscout.androidaps.R;
+
+import info.nightscout.androidaps.plugins.pump.common.R;
/**
* Created by andy on 14/05/2018.
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkTargetDevice.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkTargetDevice.java
similarity index 91%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkTargetDevice.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkTargetDevice.java
index 2d0dea69f7..99b4ecd40a 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkTargetDevice.java
+++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/defs/RileyLinkTargetDevice.java
@@ -1,6 +1,7 @@
package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs;
-import info.nightscout.androidaps.R;
+
+import info.nightscout.androidaps.plugins.pump.common.R;
/**
* Created by andy on 5/19/18.
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusActivity.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusActivity.java
similarity index 98%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusActivity.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusActivity.java
index 57aa01123f..7bcc9a93ac 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusActivity.java
+++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusActivity.java
@@ -16,8 +16,9 @@ import java.util.List;
import javax.inject.Inject;
-import info.nightscout.androidaps.R;
+
import info.nightscout.androidaps.activities.NoSplashAppCompatActivity;
+import info.nightscout.androidaps.plugins.pump.common.R;
import info.nightscout.androidaps.plugins.pump.common.dialog.RefreshableInterface;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkUtil;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.RileyLinkServiceData;
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusDevice.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusDevice.java
similarity index 98%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusDevice.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusDevice.java
index 226d7fc622..3140b1107e 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusDevice.java
+++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusDevice.java
@@ -14,7 +14,8 @@ import android.widget.Button;
import android.widget.ListView;
import android.widget.TextView;
-import info.nightscout.androidaps.R;
+
+import info.nightscout.androidaps.plugins.pump.common.R;
import info.nightscout.androidaps.plugins.pump.common.dialog.RefreshableInterface;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.data.CommandValueDefinition;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.CommandValueDefinitionType;
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusGeneralFragment.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusGeneralFragment.java
similarity index 77%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusGeneralFragment.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusGeneralFragment.java
index b54c893127..9db6394715 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusGeneralFragment.java
+++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusGeneralFragment.java
@@ -13,22 +13,19 @@ import java.util.Locale;
import javax.inject.Inject;
import dagger.android.support.DaggerFragment;
-import info.nightscout.androidaps.R;
import info.nightscout.androidaps.interfaces.ActivePluginProvider;
import info.nightscout.androidaps.logging.AAPSLogger;
import info.nightscout.androidaps.plugins.common.ManufacturerType;
import info.nightscout.androidaps.plugins.pump.common.PumpPluginAbstract;
+import info.nightscout.androidaps.plugins.pump.common.R;
+import info.nightscout.androidaps.plugins.pump.common.data.PumpStatus;
import info.nightscout.androidaps.plugins.pump.common.defs.PumpType;
import info.nightscout.androidaps.plugins.pump.common.dialog.RefreshableInterface;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs.RileyLinkFirmwareVersion;
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.common.utils.StringUtil;
-import info.nightscout.androidaps.plugins.pump.medtronic.driver.MedtronicPumpStatus;
-import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil;
-import info.nightscout.androidaps.plugins.pump.omnipod.OmnipodPumpPlugin;
-import info.nightscout.androidaps.plugins.pump.omnipod.defs.state.PodStateManager;
-import info.nightscout.androidaps.plugins.pump.omnipod.driver.OmnipodPumpStatus;
+import info.nightscout.androidaps.utils.DateUtil;
import info.nightscout.androidaps.utils.resources.ResourceHelper;
/**
@@ -39,9 +36,10 @@ public class RileyLinkStatusGeneralFragment extends DaggerFragment implements Re
@Inject ActivePluginProvider activePlugin;
@Inject ResourceHelper resourceHelper;
- @Inject MedtronicUtil medtronicUtil;
+ //@Inject MedtronicUtil medtronicUtil;
@Inject AAPSLogger aapsLogger;
@Inject RileyLinkServiceData rileyLinkServiceData;
+ @Inject DateUtil dateUtil;
TextView connectionStatus;
TextView configuredAddress;
@@ -113,7 +111,6 @@ public class RileyLinkStatusGeneralFragment extends DaggerFragment implements Re
"-"
: resourceHelper.gs(rileyLinkServiceData.rileyLinkError.getResourceId(targetDevice)));
-
RileyLinkFirmwareVersion firmwareVersion = rileyLinkServiceData.versionCC110;
if (firmwareVersion == null) {
@@ -128,15 +125,17 @@ public class RileyLinkStatusGeneralFragment extends DaggerFragment implements Re
PumpPluginAbstract pumpPlugin = (PumpPluginAbstract)activePlugin.getActivePump();
if (pumpPlugin.manufacturer()== ManufacturerType.Medtronic) {
- MedtronicPumpStatus medtronicPumpStatus = (MedtronicPumpStatus)pumpPlugin.getPumpStatusData();
+ //MedtronicPumpStatus medtronicPumpStatus = (MedtronicPumpStatus)pumpPlugin.getPumpStatusData();
+
+ PumpStatus pumpStatusData = pumpPlugin.getPumpStatusData();
this.deviceType.setText(resourceHelper.gs(RileyLinkTargetDevice.MedtronicPump.getResourceId()));
this.deviceModel.setText(pumpPlugin.getPumpType().getDescription());
- this.serialNumber.setText(medtronicPumpStatus.serialNumber);
- this.pumpFrequency.setText(resourceHelper.gs(medtronicPumpStatus.pumpFrequency.equals("medtronic_pump_frequency_us_ca") ? R.string.medtronic_pump_frequency_us_ca : R.string.medtronic_pump_frequency_worldwide));
+ this.serialNumber.setText(pumpStatusData.getCustomDataAsString("SERIAL_NUMBER")); // medtronicPumpStatus.serialNumber);
+ this.pumpFrequency.setText(resourceHelper.gs(pumpStatusData.getCustomDataAsString("PUMP_FREQUENCY").equals("medtronic_pump_frequency_us_ca") ? R.string.medtronic_pump_frequency_us_ca : R.string.medtronic_pump_frequency_worldwide));
- if (medtronicUtil.getMedtronicPumpModel() != null)
- this.connectedDevice.setText("Medtronic " + medtronicUtil.getMedtronicPumpModel().getPumpModel());
+ if (pumpStatusData.getCustomDataAsString("PUMP_MODEL") != null)
+ this.connectedDevice.setText("Medtronic " + pumpStatusData.getCustomDataAsString("PUMP_MODEL"));
else
this.connectedDevice.setText("???");
@@ -144,14 +143,15 @@ public class RileyLinkStatusGeneralFragment extends DaggerFragment implements Re
this.lastUsedFrequency.setText(String.format(Locale.ENGLISH, "%.2f MHz",
rileyLinkServiceData.lastGoodFrequency));
- if (medtronicPumpStatus.lastConnection != 0)
- this.lastDeviceContact.setText(StringUtil.toDateTimeString(new LocalDateTime(
- medtronicPumpStatus.lastDataTime)));
+ if (pumpStatusData.lastConnection != 0)
+ this.lastDeviceContact.setText(StringUtil.toDateTimeString(dateUtil, new LocalDateTime(
+ pumpStatusData.lastDataTime)));
else
this.lastDeviceContact.setText(resourceHelper.gs(R.string.common_never));
} else {
- OmnipodPumpStatus omnipodPumpStatus = (OmnipodPumpStatus)pumpPlugin.getPumpStatusData();
+ //OmnipodPumpStatus omnipodPumpStatus = (OmnipodPumpStatus)pumpPlugin.getPumpStatusData();
+ PumpStatus pumpStatusData = pumpPlugin.getPumpStatusData();
this.deviceType.setText(resourceHelper.gs(RileyLinkTargetDevice.Omnipod.getResourceId()));
this.deviceModel.setText(pumpPlugin.getPumpType() == PumpType.Insulet_Omnipod ? "Eros" : "Dash");
@@ -164,31 +164,31 @@ public class RileyLinkStatusGeneralFragment extends DaggerFragment implements Re
this.pumpFrequency.setText(resourceHelper.gs(R.string.omnipod_frequency));
- // TODO needs improvement
- if (omnipodPumpStatus != null) {
- PodStateManager podStateManager = ((OmnipodPumpPlugin) pumpPlugin).getPodStateManager();
- if (podStateManager.isPodInitialized()) {
- this.serialNumber.setText(String.valueOf(podStateManager.getLot()));
- this.connectedDevice.setText(omnipodPumpStatus.pumpType == PumpType.Insulet_Omnipod ? "Eros Pod" : "Dash Pod");
+ if (pumpStatusData != null) {
+
+ // TODO show info about active Pod
+ /*
+ if (pumpStatusData.getCustomData("POD_AVAILABLE", Boolean.class)) {
+ this.serialNumber.setText(pumpStatusData.getCustomDataAsString("POD_LOT_NUMBER"));
+ this.connectedDevice.setText(pumpStatusData.pumpType == PumpType.Insulet_Omnipod ? "Eros Pod" : "Dash Pod");
} else {
this.serialNumber.setText("??");
this.connectedDevice.setText("-");
}
+ */
if (rileyLinkServiceData.lastGoodFrequency != null)
this.lastUsedFrequency.setText(String.format(Locale.ENGLISH, "%.2f MHz",
rileyLinkServiceData.lastGoodFrequency));
- if (omnipodPumpStatus.lastConnection != 0)
- this.lastDeviceContact.setText(StringUtil.toDateTimeString(new LocalDateTime(
- omnipodPumpStatus.lastDataTime)));
+ if (pumpStatusData.lastConnection != 0)
+ this.lastDeviceContact.setText(StringUtil.toDateTimeString(dateUtil, new LocalDateTime(
+ pumpStatusData.lastDataTime)));
else
this.lastDeviceContact.setText(resourceHelper.gs(R.string.common_never));
}
}
-
}
-
}
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusHistoryFragment.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusHistoryFragment.java
similarity index 95%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusHistoryFragment.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusHistoryFragment.java
index f8f79c821a..11c8ac2f80 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusHistoryFragment.java
+++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/dialog/RileyLinkStatusHistoryFragment.java
@@ -18,11 +18,13 @@ import java.util.List;
import javax.inject.Inject;
import dagger.android.support.DaggerFragment;
-import info.nightscout.androidaps.R;
+
+import info.nightscout.androidaps.plugins.pump.common.R;
+import info.nightscout.androidaps.plugins.pump.common.defs.PumpDeviceState;
import info.nightscout.androidaps.plugins.pump.common.dialog.RefreshableInterface;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkUtil;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.data.RLHistoryItem;
-import info.nightscout.androidaps.plugins.pump.medtronic.defs.PumpDeviceState;
+
import info.nightscout.androidaps.utils.DateUtil;
import info.nightscout.androidaps.utils.resources.ResourceHelper;
@@ -34,6 +36,7 @@ public class RileyLinkStatusHistoryFragment extends DaggerFragment implements Re
@Inject RileyLinkUtil rileyLinkUtil;
@Inject ResourceHelper resourceHelper;
+ @Inject DateUtil dateUtil;
RecyclerView recyclerView;
RecyclerViewAdapter recyclerViewAdapter;
@@ -136,7 +139,7 @@ public class RileyLinkStatusHistoryFragment extends DaggerFragment implements Re
RLHistoryItem item = historyList.get(position);
if (item != null) {
- holder.timeView.setText(DateUtil.dateAndTimeAndSecondsString(item.getDateTime().toDateTime().getMillis()));
+ holder.timeView.setText(dateUtil.dateAndTimeAndSecondsString(item.getDateTime().toDateTime().getMillis()));
holder.typeView.setText(item.getSource().getDesc());
holder.valueView.setText(item.getDescription(resourceHelper));
}
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkBluetoothStateReceiver.kt b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkBluetoothStateReceiver.kt
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkBluetoothStateReceiver.kt
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkBluetoothStateReceiver.kt
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkBroadcastReceiver.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkBroadcastReceiver.java
similarity index 97%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkBroadcastReceiver.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkBroadcastReceiver.java
index 5cec5ccccf..e8e0139524 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkBroadcastReceiver.java
+++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkBroadcastReceiver.java
@@ -81,13 +81,6 @@ public class RileyLinkBroadcastReceiver extends DaggerBroadcastReceiver {
RileyLinkConst.Intents.RileyLinkDisconnected, //
RileyLinkConst.Intents.RileyLinkNewAddressSet, //
RileyLinkConst.Intents.RileyLinkDisconnect));
-
- // Device Specific
- // TODO remove from service instance
- //deviceSpecificPrefix = serviceInstance.getDeviceSpecificBroadcastsIdentifierPrefix();
-
- // Application specific
-
}
private RileyLinkService getServiceInstance() {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkService.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkService.java
similarity index 97%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkService.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkService.java
index 2a32ffe4a9..c0ae9d3140 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkService.java
+++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkService.java
@@ -15,6 +15,7 @@ import info.nightscout.androidaps.interfaces.ActivePluginProvider;
import info.nightscout.androidaps.logging.AAPSLogger;
import info.nightscout.androidaps.logging.LTag;
import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
+import info.nightscout.androidaps.plugins.pump.common.defs.PumpDeviceState;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkCommunicationManager;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkConst;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkUtil;
@@ -26,9 +27,6 @@ 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.data.ServiceResult;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.data.ServiceTransport;
-import info.nightscout.androidaps.plugins.pump.medtronic.defs.PumpDeviceState;
-import info.nightscout.androidaps.plugins.pump.medtronic.driver.MedtronicPumpStatus;
-import info.nightscout.androidaps.plugins.pump.medtronic.util.MedtronicUtil;
import info.nightscout.androidaps.utils.resources.ResourceHelper;
import info.nightscout.androidaps.utils.sharedPreferences.SP;
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkServiceData.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkServiceData.java
similarity index 86%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkServiceData.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkServiceData.java
index ed2ed072cd..13bebc22b8 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkServiceData.java
+++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/RileyLinkServiceData.java
@@ -7,7 +7,7 @@ import info.nightscout.androidaps.interfaces.ActivePluginProvider;
import info.nightscout.androidaps.logging.AAPSLogger;
import info.nightscout.androidaps.logging.LTag;
import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
-import info.nightscout.androidaps.plugins.common.ManufacturerType;
+import info.nightscout.androidaps.plugins.pump.common.events.EventRileyLinkDeviceStatusChange;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.RileyLinkUtil;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs.RileyLinkFirmwareVersion;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.ble.defs.RileyLinkTargetFrequency;
@@ -15,8 +15,6 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.data.RLHistor
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkError;
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.medtronic.events.EventMedtronicDeviceStatusChange;
-import info.nightscout.androidaps.plugins.pump.omnipod.events.EventOmnipodDeviceStatusChange;
/**
* Created by andy on 16/05/2018.
@@ -88,11 +86,7 @@ public class RileyLinkServiceData {
aapsLogger.info(LTag.PUMP, "RileyLink State Changed: {} {}", newState, errorCode == null ? "" : " - Error State: " + errorCode.name());
rileyLinkUtil.getRileyLinkHistory().add(new RLHistoryItem(rileyLinkServiceState, errorCode, targetDevice));
- if (activePlugin.getActivePump().manufacturer() == ManufacturerType.Medtronic)
- rxBus.send(new EventMedtronicDeviceStatusChange(newState, errorCode));
- else {
- rxBus.send(new EventOmnipodDeviceStatusChange(newState, errorCode));
- }
+ rxBus.send(new EventRileyLinkDeviceStatusChange(newState, errorCode));
return null;
} else {
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/data/ServiceCommand.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/data/ServiceCommand.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/data/ServiceCommand.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/data/ServiceCommand.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/data/ServiceMessage.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/data/ServiceMessage.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/data/ServiceMessage.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/data/ServiceMessage.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/data/ServiceNotification.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/data/ServiceNotification.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/data/ServiceNotification.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/data/ServiceNotification.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/data/ServiceResult.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/data/ServiceResult.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/data/ServiceResult.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/data/ServiceResult.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/data/ServiceTransport.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/data/ServiceTransport.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/data/ServiceTransport.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/data/ServiceTransport.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/data/ServiceTransportType.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/data/ServiceTransportType.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/data/ServiceTransportType.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/data/ServiceTransportType.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/DiscoverGattServicesTask.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/DiscoverGattServicesTask.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/DiscoverGattServicesTask.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/DiscoverGattServicesTask.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/InitializePumpManagerTask.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/InitializePumpManagerTask.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/InitializePumpManagerTask.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/InitializePumpManagerTask.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/PumpTask.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/PumpTask.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/PumpTask.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/PumpTask.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/ResetRileyLinkConfigurationTask.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/ResetRileyLinkConfigurationTask.java
similarity index 70%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/ResetRileyLinkConfigurationTask.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/ResetRileyLinkConfigurationTask.java
index 370015ab95..3263253e5e 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/ResetRileyLinkConfigurationTask.java
+++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/ResetRileyLinkConfigurationTask.java
@@ -4,18 +4,13 @@ import javax.inject.Inject;
import dagger.android.HasAndroidInjector;
import info.nightscout.androidaps.interfaces.ActivePluginProvider;
-import info.nightscout.androidaps.plugins.bus.RxBus;
import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
-import info.nightscout.androidaps.plugins.common.ManufacturerType;
-import info.nightscout.androidaps.plugins.pump.common.PumpPluginAbstract;
+import info.nightscout.androidaps.plugins.pump.common.events.EventRefreshButtonState;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkPumpDevice;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.data.ServiceTransport;
-import info.nightscout.androidaps.plugins.pump.medtronic.MedtronicPumpPlugin;
-import info.nightscout.androidaps.plugins.pump.medtronic.events.EventRefreshButtonState;
-import info.nightscout.androidaps.plugins.pump.medtronic.service.RileyLinkMedtronicService;
/**
- * Created by geoff on 7/16/16.
+ * Created by andy on 9/16/18.
*/
public class ResetRileyLinkConfigurationTask extends PumpTask {
@@ -34,7 +29,7 @@ public class ResetRileyLinkConfigurationTask extends PumpTask {
@Override
public void run() {
- RileyLinkPumpDevice pumpAbstract = (RileyLinkPumpDevice)activePlugin.getActivePump();
+ RileyLinkPumpDevice pumpAbstract = (RileyLinkPumpDevice) activePlugin.getActivePump();
rxBus.send(new EventRefreshButtonState(false));
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/ServiceTask.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/ServiceTask.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/ServiceTask.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/ServiceTask.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/ServiceTaskExecutor.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/ServiceTaskExecutor.java
similarity index 100%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/ServiceTaskExecutor.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/ServiceTaskExecutor.java
diff --git a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/WakeAndTuneTask.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/WakeAndTuneTask.java
similarity index 84%
rename from app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/WakeAndTuneTask.java
rename to rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/WakeAndTuneTask.java
index 219da8bf3f..d3011eede2 100644
--- a/app/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/WakeAndTuneTask.java
+++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/service/tasks/WakeAndTuneTask.java
@@ -5,11 +5,9 @@ import javax.inject.Inject;
import dagger.android.HasAndroidInjector;
import info.nightscout.androidaps.interfaces.ActivePluginProvider;
import info.nightscout.androidaps.plugins.bus.RxBusWrapper;
-import info.nightscout.androidaps.plugins.pump.common.PumpPluginAbstract;
+import info.nightscout.androidaps.plugins.pump.common.events.EventRefreshButtonState;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLinkPumpDevice;
import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.data.ServiceTransport;
-import info.nightscout.androidaps.plugins.pump.medtronic.MedtronicPumpPlugin;
-import info.nightscout.androidaps.plugins.pump.medtronic.events.EventRefreshButtonState;
/**
* Created by geoff on 7/16/16.
diff --git a/app/src/main/res/layout/rileylink_scan_activity.xml b/rileylink/src/main/res/layout/rileylink_scan_activity.xml
similarity index 100%
rename from app/src/main/res/layout/rileylink_scan_activity.xml
rename to rileylink/src/main/res/layout/rileylink_scan_activity.xml
diff --git a/app/src/main/res/layout/rileylink_scan_item.xml b/rileylink/src/main/res/layout/rileylink_scan_item.xml
similarity index 100%
rename from app/src/main/res/layout/rileylink_scan_item.xml
rename to rileylink/src/main/res/layout/rileylink_scan_item.xml
diff --git a/app/src/main/res/layout/rileylink_status.xml b/rileylink/src/main/res/layout/rileylink_status.xml
similarity index 100%
rename from app/src/main/res/layout/rileylink_status.xml
rename to rileylink/src/main/res/layout/rileylink_status.xml
diff --git a/app/src/main/res/layout/rileylink_status_device.xml b/rileylink/src/main/res/layout/rileylink_status_device.xml
similarity index 100%
rename from app/src/main/res/layout/rileylink_status_device.xml
rename to rileylink/src/main/res/layout/rileylink_status_device.xml
diff --git a/app/src/main/res/layout/rileylink_status_device_item.xml b/rileylink/src/main/res/layout/rileylink_status_device_item.xml
similarity index 100%
rename from app/src/main/res/layout/rileylink_status_device_item.xml
rename to rileylink/src/main/res/layout/rileylink_status_device_item.xml
diff --git a/app/src/main/res/layout/rileylink_status_general.xml b/rileylink/src/main/res/layout/rileylink_status_general.xml
similarity index 100%
rename from app/src/main/res/layout/rileylink_status_general.xml
rename to rileylink/src/main/res/layout/rileylink_status_general.xml
diff --git a/app/src/main/res/layout/rileylink_status_history.xml b/rileylink/src/main/res/layout/rileylink_status_history.xml
similarity index 100%
rename from app/src/main/res/layout/rileylink_status_history.xml
rename to rileylink/src/main/res/layout/rileylink_status_history.xml
diff --git a/app/src/main/res/layout/rileylink_status_history_item.xml b/rileylink/src/main/res/layout/rileylink_status_history_item.xml
similarity index 100%
rename from app/src/main/res/layout/rileylink_status_history_item.xml
rename to rileylink/src/main/res/layout/rileylink_status_history_item.xml
diff --git a/app/src/main/res/menu/menu_rileylink_ble_scan.xml b/rileylink/src/main/res/menu/menu_rileylink_ble_scan.xml
similarity index 100%
rename from app/src/main/res/menu/menu_rileylink_ble_scan.xml
rename to rileylink/src/main/res/menu/menu_rileylink_ble_scan.xml
diff --git a/rileylink/src/main/res/values-af-rZA/strings.xml b/rileylink/src/main/res/values-af-rZA/strings.xml
new file mode 100644
index 0000000000..e6112f8f89
--- /dev/null
+++ b/rileylink/src/main/res/values-af-rZA/strings.xml
@@ -0,0 +1,53 @@
+
+
+
+ SKAN
+ STOP
+ Verkose
+ RileyLink Skan
+ Aktiveer
+ Skandeer
+ Skandering voltooi
+ Skaderings fout: %1$d
+
+ Instellings
+ Geskiedenis
+ RileyLink Status
+ Pomp Status
+ RileyLink Instellings
+ RileyLink
+ Adres opgestel
+ Gekoppelde toestel
+ Verbindingstatus
+ Verbindingsfout
+ Toestel
+ Toestel Tipe
+ Toestel Model
+ Laaste gebruik frekwensie
+ Laaste toestel verbinding
+ RL Firmware
+
+ Bluetooth Inisiasie…
+ Bluetooth Fout
+ Bluetooth Gereed
+ Nie Begin
+ RileyLink inisiasie…
+ RileyLink Fout
+ Probleel om met pomp te praat
+
+ Toestel is nie RileyLink
+ RileyLink onverkry
+ Bluetooth afgeskakel
+ Geen Bluetooth Toestel
+ Opstel het gefaal
+ Pod onbereikbaar
+
+ Medtronic Pomp
+ Omnipod
+ US & Canada (916 MHz)
+ Wêreldwyd (868 Mhz)
+
+
+
+
+
diff --git a/rileylink/src/main/res/values-ar-rSA/strings.xml b/rileylink/src/main/res/values-ar-rSA/strings.xml
new file mode 100644
index 0000000000..cd28fb925a
--- /dev/null
+++ b/rileylink/src/main/res/values-ar-rSA/strings.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/rileylink/src/main/res/values-bg-rBG/strings.xml b/rileylink/src/main/res/values-bg-rBG/strings.xml
new file mode 100644
index 0000000000..fd1523dc6e
--- /dev/null
+++ b/rileylink/src/main/res/values-bg-rBG/strings.xml
@@ -0,0 +1,59 @@
+
+
+
+ СКАНИРАЙ
+ СТОП
+ Избрано
+ RileyLink скенер
+ Разреши
+ Не
+ Сканиране
+ Завършено сканиране
+ Грешка при сканиране: %1$d
+ Никога
+
+ Настройки
+ История
+ RileyLink статус
+ Статус на помпата
+ RileyLink настройки
+ RileyLink
+ Конфигуриран адрес
+ Свързано устройство
+ Състояние на връзката
+ Грешка при свързване
+ Устройство
+ Тип на устройството
+ Модел
+ Последна честота
+ Последно устройство
+ RL Firmware
+
+ Bluetooth стартиране…
+ Bluetooth грешка
+ Bluetooth готов
+ Не е стартиран
+ RileyLink стартиране…
+ RileyLink грешка
+ Настройка на RileyLink и помпа
+ Проблем при връзка с помпата
+ Свързан
+
+ Устройството не е RileyLink
+ RileyLink недостъпен
+ Bluetooth е изключен
+ Няма Bluetooth адаптер
+ Настройката се провали
+ Помпата е недостъпна
+ Pod е недостъпen
+
+ Medtronic помпа
+ Omnipod
+ Omnipod (433.91 MHz)
+ САЩ & Канада (916 Mhz)
+ Останалата част от света (868 Mhz)
+
+
+
+
+
diff --git a/rileylink/src/main/res/values-cs-rCZ/strings.xml b/rileylink/src/main/res/values-cs-rCZ/strings.xml
new file mode 100644
index 0000000000..c783684d10
--- /dev/null
+++ b/rileylink/src/main/res/values-cs-rCZ/strings.xml
@@ -0,0 +1,71 @@
+
+
+
+ VYHLEDAT
+ ZASTAVIT
+ Vybráno
+ Vyhledávání RileyLinku
+ Povolit
+ Ne
+ Vyhledávání
+ Vyhledávání dokončeno
+ Chyba při vyhledávání: %1$d
+ Nikdy
+
+ Nastavení
+ Historie
+ Status RileyLink
+ Stav pumpy
+ Nastavení RileyLink
+ RileyLink
+ Nastavená adresa
+ Připojené zařízení
+ Stav připojení
+ Chyba spojení
+ Zařízení
+ Typ zařízení
+ Model zařízení
+ Poslední použitá frekvence
+ Poslední spojení se zařízením
+ RL Firmware
+
+ Bluetooth se incializuje…
+ Chyba Bluetooth
+ Bluetooth připraven
+ Nezahájeno
+ RileyLink inicializace…
+ Chyba RileyLink
+ Spojování RileyLinku a pumpy
+ Problém připojení k pumpě
+ Připojeno
+
+ Zařízení není RileyLink
+ RileyLink nedostupný
+ Bluetooth je zakázáno
+ Žádný Bluetooth adaptér
+ Spojování selhalo
+ Pumpa nedostupná
+ Pod nedostupný
+
+ Pumpa Medtronic
+ Omipod
+ Omnipod (433,91 MHz)
+ US & Canada (916 MHz)
+ Celosvětové (868 Mhz)
+
+ %1$d den
+ %1$d dnů
+ %1$d dnů
+ %1$d dnů
+
+
+ %1$d hodina
+ %1$d hodin
+ %1$d hodin
+ %1$d hodin
+
+
+
+
+
+
diff --git a/rileylink/src/main/res/values-cy-rGB/strings.xml b/rileylink/src/main/res/values-cy-rGB/strings.xml
new file mode 100644
index 0000000000..cd28fb925a
--- /dev/null
+++ b/rileylink/src/main/res/values-cy-rGB/strings.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/rileylink/src/main/res/values-de-rDE/strings.xml b/rileylink/src/main/res/values-de-rDE/strings.xml
new file mode 100644
index 0000000000..d5d5b4f9b3
--- /dev/null
+++ b/rileylink/src/main/res/values-de-rDE/strings.xml
@@ -0,0 +1,67 @@
+
+
+
+ SCANNEN
+ STOP
+ Ausgewählt
+ RileyLink Scan
+ Aktivieren
+ Nein
+ Scannt
+ Scannen abgeschlossen
+ Scanfehler: %1$d
+ Nie
+
+ Einstellungen
+ Verlauf
+ RileyLink Status
+ Pumpen-Status
+ RileyLink Einstellungen
+ RileyLink
+ Konfigurierte Adresse
+ Verbundenes Gerät
+ Verbindungsstatus
+ Verbindungsfehler
+ Gerät
+ Geräte-Typ
+ Gerätemodell
+ Zuletzt verwendete Frequenz
+ Letzter Gerätekontakt
+ RL Firmware
+
+ Initialisiere Bluetooth…
+ Bluetooth-Fehler
+ Bluetooth bereit
+ Nicht gestartet
+ RileyLink Initialisierung…
+ RileyLink Fehler
+ RileyLink und Pumpe einstellen
+ Problem beim Verbinden mit Pumpe
+ Verbunden
+
+ Gerät ist kein RileyLink
+ RileyLink nicht erreichbar
+ Bluetooth ist deaktiviert
+ Kein Bluetooth-Adapter
+ TuneUp fehlgeschlagen
+ Pumpe nicht erreichbar
+ Pod nicht erreichbar
+
+ Medtronic Pumpe
+ Omnipod
+ Omnipod (433.91 MHz)
+ US & Kanada (916 MHz)
+ Weltweit (868 Mhz)
+
+ %1$d Tag
+ %1$d Tage
+
+
+ %1$d Stunde
+ %1$d Stunden
+
+
+
+
+
+
diff --git a/rileylink/src/main/res/values-el-rGR/strings.xml b/rileylink/src/main/res/values-el-rGR/strings.xml
new file mode 100644
index 0000000000..e21fe991ef
--- /dev/null
+++ b/rileylink/src/main/res/values-el-rGR/strings.xml
@@ -0,0 +1,54 @@
+
+
+
+ SCAN
+ STOP
+ Επιλεγμένο
+ RileyLink Scan
+ Ενεργοποίηση
+ Σάρωση
+ Η σάρωση ολοκληρώθηκε
+ Λάθος σάρωσης: %1$d
+
+ Ρυθμίσεις
+ Ιστορικό
+ Κατάσταση RileyLink
+ Κατάσταση Αντλίας
+ Ρυθμίσεις RileyLink
+ RileyLink
+ Διαμορφωμένη Διεύθυνση
+ Συνδεδεμένες συσκευές
+ Κατάσταση Σύνδεσης
+ Σφάλμα σύνδεσης
+ Συσκευή
+ Τύπος Συσκευής
+ Μοντέλο συσκευής
+ Τελευταία χρησιμοποιημένη συχνότητα
+ Τελευταία επαφή συσκευής
+ Έκδοση RL
+
+ Επαναφορά Bluetooth…
+ Σφάλμα Bluetooth
+ Bluetooth Έτοιμο
+ Δεν ξεκίνησε
+ Αρχικοποίηση του RileyLink…
+ RileyLink Σφάλμα
+ Συντονισμός RileyLink και Αντλίας
+ Πρόβλημα σύνδεσης με την Αντλία
+
+ Η συσκευή δεν είναι RileyLink
+ Το RileyLink μη προσπελάσιμο
+ Bluetooth απενεργοποιημένο
+ Δεν υπάρχει προσαρμογέας Bluetooth
+ TuneUp απέτυχε
+ Το Pod δεν είναι διαθέσιμο
+
+ Αντλία Medtronic
+ Omnipod
+ US & Canada (916MHz)
+ Παγκοσμίως (868 Mhz)
+
+
+
+
+
diff --git a/rileylink/src/main/res/values-es-rES/strings.xml b/rileylink/src/main/res/values-es-rES/strings.xml
new file mode 100644
index 0000000000..7828f8e36e
--- /dev/null
+++ b/rileylink/src/main/res/values-es-rES/strings.xml
@@ -0,0 +1,54 @@
+
+
+
+ ESCANEAR
+ DETENER
+ Seleccionado
+ Escaneo de RileyLink
+ Habilitar
+ Buscando
+ Búsqueda Finalizada
+ Error de escaneo: %1$d
+
+ Configuración
+ Historico
+ Estado RileyLink
+ Estado de Infusora
+ Ajustes de RileyLink
+ RileyLink
+ Dirección configurada
+ Dispositivo conectado
+ Estado de la conexión
+ Error de conexión
+ Dispositivo
+ Tipo de dispositivo
+ Modelo del dispositivo
+ Última frecuencia usada
+ Último contacto del dispositivo
+ Firmware RL
+
+ Inicializando Bluetooth…
+ Error Bluetooth
+ Bluetooth listo
+ No iniciado
+ Inicialización de RileyLink…
+ Error de RileyLink
+ Configurando RileyLink y la bomba
+ Problema al conectar con la infusora
+
+ El dispositivo no es un RileyLink
+ RileyLink no accesible
+ Bluetooth está desactivado
+ No hay adaptador Bluetooth
+ Error al configurar
+ Infusora no alcanzable
+
+ Infusora Medtronic
+ Omnipod
+ US & Canadá (916 MHz)
+ A nivel mundial (868 Mhz)
+
+
+
+
+
diff --git a/rileylink/src/main/res/values-fi-rFI/strings.xml b/rileylink/src/main/res/values-fi-rFI/strings.xml
new file mode 100644
index 0000000000..cd28fb925a
--- /dev/null
+++ b/rileylink/src/main/res/values-fi-rFI/strings.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/rileylink/src/main/res/values-fr-rFR/strings.xml b/rileylink/src/main/res/values-fr-rFR/strings.xml
new file mode 100644
index 0000000000..590a06408e
--- /dev/null
+++ b/rileylink/src/main/res/values-fr-rFR/strings.xml
@@ -0,0 +1,67 @@
+
+
+
+ SCANNER
+ ARRÊT
+ Sélectionné
+ Scanner RileyLink
+ Activer
+ Non
+ Recherche en cours
+ Recherche finie
+ Erreur de recherche : %1$d
+ Jamais
+
+ Paramètres
+ Historique
+ État du RileyLink
+ État de la pompe
+ Paramètres RileyLink
+ RileyLink
+ Adresse configurée
+ Appareil connecté
+ État de la connexion
+ Erreur de Connexion
+ Appareil
+ Type d\'appareil
+ Modèle d’appareil
+ Dernière fréquence utilisée
+ Dernier contact appareil
+ RL Firmware
+
+ Initialisation Bluetooth…
+ Erreur Bluetooth
+ Bluetooth Prêt
+ Non démarré
+ Initialisation du RileyLink…
+ Erreur RileyLink
+ Association du RileyLink et de la Pompe
+ Problème communication avec la pompe
+ Connecté
+
+ L\'appareil n\'est pas RileyLink
+ RileyLink non accessible
+ Bluetooth est désactivé
+ Aucun adaptateur Bluetooth
+ Échec du réglage
+ Pompe hors de portée
+ Pod inaccessible
+
+ Pompe Medtronic
+ Omnipod
+ Omnipod (433.91 MHz)
+ US & Canada (916 MHz)
+ Mondial (868 Mhz)
+
+ %1$d jour
+ %1$d jours
+
+
+ %1$d heure
+ %1$d heures
+
+
+
+
+
+
diff --git a/rileylink/src/main/res/values-ga-rIE/strings.xml b/rileylink/src/main/res/values-ga-rIE/strings.xml
new file mode 100644
index 0000000000..cd28fb925a
--- /dev/null
+++ b/rileylink/src/main/res/values-ga-rIE/strings.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/rileylink/src/main/res/values-hr-rHR/strings.xml b/rileylink/src/main/res/values-hr-rHR/strings.xml
new file mode 100644
index 0000000000..cd28fb925a
--- /dev/null
+++ b/rileylink/src/main/res/values-hr-rHR/strings.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/rileylink/src/main/res/values-it-rIT/strings.xml b/rileylink/src/main/res/values-it-rIT/strings.xml
new file mode 100644
index 0000000000..db034c4f67
--- /dev/null
+++ b/rileylink/src/main/res/values-it-rIT/strings.xml
@@ -0,0 +1,67 @@
+
+
+
+ SCAN
+ STOP
+ Selezionato
+ Scansione RileyLink
+ Abilita
+ No
+ Scansione
+ Scansione terminata
+ Errore scansione: %1$d
+ Mai
+
+ Impostazioni
+ Storico
+ Stato RileyLink
+ Stato micro
+ Impostazioni RileyLink
+ RileyLink
+ Indirizzo configurato
+ Dispositivo connesso
+ Stato connessione
+ Errore connessione
+ Dispositivo
+ Tipo dispositivo
+ Modello dispositivo
+ Ultima frequenza utilizzata
+ Ultimo contatto dispositivo
+ RL firmware
+
+ Inizializzazione bluetooth…
+ Errore bluetooth
+ Bluetooth pronto
+ Non avviato
+ Inizializzazione RileyLink…
+ Errore RileyLink
+ Sintonizzazione RileyLink e micro
+ Problema di connessione al micro
+ Connesso
+
+ Il dispositivo non è RileyLink
+ RileyLink irraggiungibile
+ Bluetooth disabilitato
+ Nessun adattatore bluetooth
+ Sintonizzazione fallita
+ Micro irraggiungibile
+ Pod irraggiungibile
+
+ Micro Medtronic
+ Omnipod
+ Omnipod (433.91 MHz)
+ US & Canada (916 MHz)
+ Globale (868 Mhz)
+
+ %1$d giorno
+ %1$d giorni
+
+
+ %1$d ora
+ %1$d ore
+
+
+
+
+
+
diff --git a/rileylink/src/main/res/values-iw-rIL/strings.xml b/rileylink/src/main/res/values-iw-rIL/strings.xml
new file mode 100644
index 0000000000..cd28fb925a
--- /dev/null
+++ b/rileylink/src/main/res/values-iw-rIL/strings.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/rileylink/src/main/res/values-ko-rKR/strings.xml b/rileylink/src/main/res/values-ko-rKR/strings.xml
new file mode 100644
index 0000000000..386a7f4c15
--- /dev/null
+++ b/rileylink/src/main/res/values-ko-rKR/strings.xml
@@ -0,0 +1,54 @@
+
+
+
+ 스캔
+ 중지
+ 선택됨
+ RileyLink 스캔
+ 활성화
+ 스캔중
+ 스캔 완료
+ 스캔 에러: %1$d
+
+ 설정
+ 이력
+ RileyLink 상태
+ 펌프 상태
+ RileyLink 설정
+ RileyLink
+ 구성된 주소
+ 연결된 장치
+ 연결상태
+ 연결에러
+ 장치
+ 장치타입
+ 장치모델
+ 최근사용 주파수
+ 최근장치연결
+ RL 펌웨어
+
+ 블루투스 초기화중...
+ 블루투스 에러
+ 블루투스 준비
+ 시작되지 않았습니다.
+ RileyLink 초기화…
+ RileyLink 에러
+ RileyLink 와 펌프 튜닝
+ 펌프 연결 문제
+
+ 장치가 RileyLink가 아닙니다.
+ RileyLink에 연결할 수 없음
+ 블루투스 비활성
+ 블루투스 어댑터 없음
+ 튜닝 실패
+ 포드에 연결할 수 없습니다.
+
+ 메드트로닉 펌프
+ 옴니포드
+ 미국 & 캐나다(916 MHz)
+ 타국가(868 Mhz)
+
+
+
+
+
diff --git a/rileylink/src/main/res/values-lt-rLT/strings.xml b/rileylink/src/main/res/values-lt-rLT/strings.xml
new file mode 100644
index 0000000000..5732fe3862
--- /dev/null
+++ b/rileylink/src/main/res/values-lt-rLT/strings.xml
@@ -0,0 +1,54 @@
+
+
+
+ SKENAVIMAS
+ STOP
+ Parinkta
+ RileyLink skanavimas
+ Įjungti
+ Skanuojama
+ Skanavimas baigtas
+ Skanavimo klaida: %1$d
+
+ Parametrai
+ Istorija
+ RileyLink statusas
+ Pompos statusas
+ RileyLink parametrai
+ RileyLink
+ Nustatytas adresas
+ Prijungtas įrenginys
+ Ryšio būsena
+ Prisijungimo klaida
+ Įrenginys
+ Įrenginio tipas
+ Įrenginio modelis
+ Paskutinis naudotas dažnis
+ Paskutinis įrenginio kontaktas
+ RL Programinė įranga
+
+ Inicijuojamas Bluetooth…
+ Bluetooth klaida
+ Bluetooth paruošta
+ Nepradėta
+ RileyLink inicijavimas…
+ RileyLink klaida
+ RileyLink ir Pompos suderinimas
+ Sujungimo su pompa problema
+
+ Įrenginys nėra RileyLink
+ RileyLink nepasiekiama
+ Bluetooth išjungtas
+ Nėra Bluetooth adapterio
+ TuneUp klaida
+ Pod nepasiekiamas
+
+ Pompa Medtronic
+ Omnipod
+ US & Kanada (916 MHz)
+ Pasaulinis (868 Mhz)
+
+
+
+
+
diff --git a/rileylink/src/main/res/values-nl-rNL/strings.xml b/rileylink/src/main/res/values-nl-rNL/strings.xml
new file mode 100644
index 0000000000..5bed2a08e8
--- /dev/null
+++ b/rileylink/src/main/res/values-nl-rNL/strings.xml
@@ -0,0 +1,54 @@
+
+
+
+ SCAN
+ STOP
+ Geselecteerd
+ RileyLink Scan
+ Inschakelen
+ Scannen
+ Scannen voltooid
+ Scanfout: %1$d
+
+ Instellingen
+ Geschiedenis
+ RileyLink Status
+ Pompstatus
+ RileyLink Instellingen
+ RileyLink
+ Geconfigureerd Adres
+ Aangesloten Apparaat
+ Verbinding Status
+ Verbindingsfout
+ Apparaat
+ Apparaat type
+ Apparaat model
+ Laatst gebruikte frequentie
+ Laatste contact met apparaat
+ RL Firmware
+
+ Bluetooth initialiseren…
+ Bluetooth fout
+ Bluetooth gekoppeld
+ Niet gestart
+ RileyLink initialiseren…
+ RileyLink fout
+ Tuning van RileyLink en Pomp
+ Probleem tijdens verbinden met de pomp
+
+ Apparaat is geen RileyLink
+ RileyLink onbereikbaar
+ Bluetooth is uitgeschakeld
+ Geen Bluetooth Adapter
+ Verbinding maken mislukt
+ Pod niet bereikbaar
+
+ Medtronic Pomp
+ Omnipod
+ VS & Canada (916 MHz)
+ Wereldwijd (868 Mhz)
+
+
+
+
+
diff --git a/rileylink/src/main/res/values-pl-rPL/strings.xml b/rileylink/src/main/res/values-pl-rPL/strings.xml
new file mode 100644
index 0000000000..f3425b5b3e
--- /dev/null
+++ b/rileylink/src/main/res/values-pl-rPL/strings.xml
@@ -0,0 +1,54 @@
+
+
+
+ SKANUJ
+ ZATRZYMAJ
+ Wybrany
+ Skan RileyLink
+ Uruchom
+ Skanowanie
+ Skanowanie zakończono
+ Błąd skanowania: %1$d
+
+ Ustawienia
+ Historia
+ Stan RileyLink
+ Stan pompy
+ Ustawienia RileyLink
+ RileyLink
+ Ustawiony adres
+ Połączone urządzenie
+ Status połączenia
+ Błąd połączenia
+ Urządzenie
+ Typ urządzenia
+ Model urządzenia
+ Ostatnio używana częstotliwość
+ Ostatnie połączenie z urządzeniem
+ Oprogramowanie RL
+
+ Uruchamianie Bluetooth…
+ Błąd Bluetooth
+ Bluetooth gotowy
+ Nie rozpoczęto
+ Uruchamianie RileyLink…
+ Błąd RileyLink
+ Dostrojenie RileyLink i pompy
+ Problem z połączeniem z pompą
+
+ Urządzenie to nie RileyLink
+ RileyLink nie osiągalny
+ Bluetooth wyłączony
+ Brak modułu Bluetooth
+ Dostrojenie nie powiodło się
+ Pod nieosiągalny
+
+ Pompa Medtronic
+ Omnipod
+ US & Kanada (916 MHz)
+ Reszta świata (868 Mhz)
+
+
+
+
+
diff --git a/rileylink/src/main/res/values-pt-rBR/strings.xml b/rileylink/src/main/res/values-pt-rBR/strings.xml
new file mode 100644
index 0000000000..af6835dcb4
--- /dev/null
+++ b/rileylink/src/main/res/values-pt-rBR/strings.xml
@@ -0,0 +1,55 @@
+
+
+
+ PROCURAR
+ PARAR
+ Seleccionado
+ Procura RileyLink
+ Ativar
+ A procurar
+ Procura terminada
+ Erro de Procura: %1$d
+
+ Definições
+ Histórico
+ Estado do RileyLink
+ Estado da Bomba
+ Configurações do RileyLink
+ RileyLink
+ Endereço Configurado
+ Dispositivo Ligado
+ Estado de Ligação
+ Erro de Ligação
+ Dispositivo
+ Tipo de dispositivo
+ Modelo do dispositivo
+ Frequência da última utilização
+ Último contacto do dispositivo
+ Firmware RL
+
+ A iniciar o Bluetooth...
+ Erro de Bluetooth
+ Bluetooth Pronto
+ Não Iniciado
+ Inicialização do RileyLink…
+ Erro no RileyLink
+ Configurando RileyLink e a Bomba
+ Problema ao ligar à Bomba
+ Ligado
+
+ Dispositivo não é RileyLink
+ RileyLink inacessível
+ Bluetooth desactivado
+ Nenhum Adaptador Bluetooth
+ TuneUp Falhou
+ Pod inacessível
+
+ Bomba Medtronic
+ Omnipod
+ EUA & Canadá (916 MHz)
+ Em todo o Mundo (868 Mhz)
+
+
+
+
+
diff --git a/rileylink/src/main/res/values-pt-rPT/strings.xml b/rileylink/src/main/res/values-pt-rPT/strings.xml
new file mode 100644
index 0000000000..45e3cf8e45
--- /dev/null
+++ b/rileylink/src/main/res/values-pt-rPT/strings.xml
@@ -0,0 +1,67 @@
+
+
+
+ PROCURAR
+ PARAR
+ Seleccionado
+ Procura RileyLink
+ Activar
+ Não
+ A procurar
+ Procura terminada
+ Erro de Procura: %1$d
+ Nunca
+
+ Definições
+ Histórico
+ Estado do RileyLink
+ Estado da Bomba
+ Definições do RileyLink
+ RileyLink
+ Endereço Configurado
+ Dispositivo Ligado
+ Estado de Ligação
+ Erro de Ligação
+ Dispositivo
+ Tipo de dispositivo
+ Modelo do dispositivo
+ Frequência da última utilização
+ Último contacto do dispositivo
+ Firmware RL
+
+ A iniciar o Bluetooth...
+ Erro de Bluetooth
+ Bluetooth Pronto
+ Não Iniciado
+ Inicialização do RileyLink…
+ Erro no RileyLink
+ A ajustar RileyLink e a Bomba
+ Problema ao ligar à Bomba
+ Ligado
+
+ Dispositivo não é RileyLink
+ RileyLink inacessível
+ Bluetooth desactivado
+ Nenhum Adaptador Bluetooth
+ TuneUp Falhou
+ Bomba inacessível
+ Pod inacessível
+
+ Bomba Medtronic
+ Omnipod
+ Omnipod (433.91 MHz)
+ EUA & Canadá (916 MHz)
+ Em todo o Mundo (868 Mhz)
+
+ %1$d dia
+ %1$d dias
+
+
+ %1$d hora
+ %1$d horas
+
+
+
+
+
+
diff --git a/rileylink/src/main/res/values-ro-rRO/strings.xml b/rileylink/src/main/res/values-ro-rRO/strings.xml
new file mode 100644
index 0000000000..a5d5d51f31
--- /dev/null
+++ b/rileylink/src/main/res/values-ro-rRO/strings.xml
@@ -0,0 +1,69 @@
+
+
+
+ SCAN
+ STOP
+ Selectat
+ Scanare RileyLink
+ Activează
+ Nu
+ Scanează
+ Scanare terminată
+ Eroare la scanare: %1$d
+ Niciodată
+
+ Setări
+ Istoric
+ Stare RileyLink
+ Stare pompă
+ Setări RileyLink
+ RileyLink
+ Adresă configurate
+ Dispozitiv conectat
+ Stare conexiune
+ Eroare conexiune
+ Dispozitiv
+ Tip dispozitiv
+ Model dispozitiv
+ Ultima frecvență utilizată
+ Ultima conexiune cu dispozitivul
+ Firmware RL
+
+ Se inițializează conexiunea Bluetooth…
+ Eroare Bluetooth
+ Conexiune Bluetooth pregătită
+ Nepornit
+ Se inițializează RileyLink…
+ Eroare RileyLink
+ Se îmbunătățește RileyLink și pompa
+ Probleme la conectarea cu pompa
+ Conectat
+
+ Dispozitivul nu este RileyLink
+ Nu se poate găsi RileyLink
+ Bluetooth dezactivat
+ Nu există un adaptor Bluetooth
+ Conectare eșuată
+ Pompă indisponibilă
+ Nu se poate comunica cu pod-ul
+
+ Pompă Medtronic
+ Omnipod
+ Omnipod (433.91 MHz)
+ US & Canada (916 MHz)
+ Globală (868 Mhz)
+
+ %1$d zi
+ %1$d zile
+ %1$d zile
+
+
+ %1$d oră
+ %1$d ore
+ %1$d ore
+
+
+
+
+
+
diff --git a/rileylink/src/main/res/values-ru-rRU/strings.xml b/rileylink/src/main/res/values-ru-rRU/strings.xml
new file mode 100644
index 0000000000..946769e149
--- /dev/null
+++ b/rileylink/src/main/res/values-ru-rRU/strings.xml
@@ -0,0 +1,71 @@
+
+
+
+ СКАН
+ СТОП
+ Выбрано
+ Сканирование RileyLink
+ Включить
+ Нет
+ Сканирование
+ Сканирование завершено
+ Ошибка сканирования: %1$d
+ Никогда
+
+ Настройки
+ История
+ Статус RileyLink
+ Статус помпы
+ Настройки RileyLink
+ RileyLink
+ Настроенный адрес
+ Подключенное устройство
+ Статус подключения
+ Ошибка подключения
+ Устройство
+ Тип устройства
+ Модель устройства
+ Последняя использованная частота
+ Контакт последнего устройства
+ Прошивка RileyLink
+
+ Инициализация Bluetooth…
+ Ошибка Bluetooth
+ Bluetooth готов
+ Не запущено
+ Инициализация RileyLink…
+ Ошибка RileyLink
+ Настройка RileyLink и помпы
+ Проблема подключения к помпе
+ Соединение установлено
+
+ Устройство не является RileyLink
+ RileyLink недоступен
+ Bluetooth выключен
+ Нет Bluetooth-адаптера
+ Ошибка TuneUp
+ Помпа недоступна
+ POD недоступен
+
+ Помпа Medtronic
+ Omnipod
+ Omnipod (433.91 МГц)
+ US & Canada (916 MHz)
+ Глобальн (868 Мгц)
+
+ %1$d день
+ %1$d дня
+ %1$d дней
+ %1$d дн
+
+
+ %1$d час
+ %1$d ч
+ %1$d ч
+ %1$d ч
+
+
+
+
+
+
diff --git a/rileylink/src/main/res/values-sk-rSK/strings.xml b/rileylink/src/main/res/values-sk-rSK/strings.xml
new file mode 100644
index 0000000000..2ba7d2863f
--- /dev/null
+++ b/rileylink/src/main/res/values-sk-rSK/strings.xml
@@ -0,0 +1,71 @@
+
+
+
+ VYHĽADAŤ
+ ZASTAVIŤ
+ Vybrané
+ Vyhľadávanie RileyLinku
+ Aktivovať
+ Nie
+ Vyhľadávanie
+ Vyhľadávanie dokončené
+ Chyba vyhľadávania: %1$d
+ Nikdy
+
+ Nastavenia
+ História
+ Stav RileyLinku
+ Stav pumpy
+ Nastavenie RileyLink
+ RileyLink
+ Nastavená adresa
+ Pripojené zariadenie
+ Stav pripojenia
+ Chyba pripojenia
+ Zariadenie
+ Typ zariadenia
+ Model zariadenia
+ Posledná použitá frekvencia
+ Posledné spojenie zo zariadením
+ RL Firmware
+
+ Inicializácia Bluetooth...
+ Chyba Bluetooth
+ Bluetooth pripravené
+ Nespustené
+ Inicializácia RileyLink...
+ Chyba RileyLink
+ Ladenie RileyLinku a pumpy
+ Problém s pripojením k pumpe
+ Pripojené
+
+ Zariadenie nie je RileyLink
+ RileyLink nedostupný
+ Bluetooth je deaktivované
+ Žiadny Bluetooth adaptér
+ Ladenie zlyhalo
+ Pumpa nedostupná
+ Pod nedostupný
+
+ Pumpa Medtronic
+ Omnipod
+ Omnipod (433,91 MHz)
+ US & Canada (916 MHz)
+ Celosvetovo (868 MHz)
+
+ %1$d deň
+ %1$d dní
+ %1$d dní
+ %1$d dní
+
+
+ %1$d hodina
+ %1$d hodín
+ %1$d hodín
+ %1$d hodín
+
+
+
+
+
+
diff --git a/rileylink/src/main/res/values-sl-rSI/strings.xml b/rileylink/src/main/res/values-sl-rSI/strings.xml
new file mode 100644
index 0000000000..cd28fb925a
--- /dev/null
+++ b/rileylink/src/main/res/values-sl-rSI/strings.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/rileylink/src/main/res/values-sv-rSE/strings.xml b/rileylink/src/main/res/values-sv-rSE/strings.xml
new file mode 100644
index 0000000000..ef2aafebaa
--- /dev/null
+++ b/rileylink/src/main/res/values-sv-rSE/strings.xml
@@ -0,0 +1,54 @@
+
+
+
+ SÖK
+ AVBRYT
+ Vald
+ Riley Link-sökning
+ Aktivera
+ Söker
+ Sökning avslutad
+ Fel vid sökning: %1$d
+
+ Inställningar
+ Historik
+ Riley Link Status
+ Pumpstatus
+ Inställningar för Riley Link
+ Riley Link
+ Konfigurerad adress
+ Ansluten enhet
+ Anslutningsstatus
+ Anslutningsproblem
+ Enhet
+ Enhetstyp
+ Modell
+ Senast använda frekvens
+ Senaste anslutning
+ Firmware
+
+ Bluetooth initieras…
+ Bluetoothfel
+ Bluetooth redo
+ Inte startad
+ Riley Link initierar…
+ Riley Link-fel
+ Justerar Riley Link mot pump
+ Problem att ansluta till pumpen
+
+ Enheten är inte en Riley Link
+ Riley Link kan inte nås
+ Bluetooth avstängt
+ Ingen bluetoothadapter
+ Frekvensjustering misslyckades
+ Podden kan inte nås
+
+ Medtronicpump
+ Omnipod
+ USA & Kanada (916 MHz)
+ Resten av världen (868 MHz)
+
+
+
+
+
diff --git a/rileylink/src/main/res/values-tr-rTR/strings.xml b/rileylink/src/main/res/values-tr-rTR/strings.xml
new file mode 100644
index 0000000000..cd28fb925a
--- /dev/null
+++ b/rileylink/src/main/res/values-tr-rTR/strings.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/rileylink/src/main/res/values-zh-rCN/strings.xml b/rileylink/src/main/res/values-zh-rCN/strings.xml
new file mode 100644
index 0000000000..05fcb2f739
--- /dev/null
+++ b/rileylink/src/main/res/values-zh-rCN/strings.xml
@@ -0,0 +1,54 @@
+
+
+
+ 扫描
+ 停止
+ 已选择
+ RileyLink 扫描
+ 启用
+ 扫描中
+ 扫描完成
+ 扫描错误: %1$d
+
+ 设置
+ 历史
+ RileyLink 状态
+ 泵状态
+ RileyLink 设置
+ RileyLink
+ 已配置地址
+ 已连接的设备
+ 连接状态
+ 连接错误
+ 设备
+ 设备类型
+ 设备型号
+ 上次使用频率
+ 最后一个设备联系人
+ 固件
+
+ 蓝牙初始化…
+ 蓝牙错误
+ Bluetooth 已配对
+ 尚未提交
+ RileyLink 初始化…
+ RileyLink 错误
+ 调整 RileyLink 和泵
+ 连接至泵时出现问题
+
+ 设备不是 RileyLink
+ 无法访问 RileyLink
+ 蓝牙已禁用
+ 未找到蓝牙适配器
+ 调整失败
+ 无法连接主机
+
+ 美敦力泵
+ Omnipod
+ 美国 & 加拿大 (916MHz)
+ 全球 (868 Mhz)
+
+
+
+
+
diff --git a/rileylink/src/main/res/values/strings.xml b/rileylink/src/main/res/values/strings.xml
new file mode 100644
index 0000000000..ddb9beaf9b
--- /dev/null
+++ b/rileylink/src/main/res/values/strings.xml
@@ -0,0 +1,89 @@
+
+
+
+
+ SCAN
+ STOP
+ Selected
+ RileyLink Scan
+ Enable
+ No
+ Scanning
+ Scanning finished
+ Scanning error: %1$d
+ Never
+
+
+ Settings
+ History
+ RileyLink Status
+ Pump Status
+ RileyLink Settings
+ RileyLink
+ Configured Address
+ Connected Device
+ Connection Status
+ Connection Error
+ Device
+ Device Type
+ Device Model
+ Last used frequency
+ Last device contact
+ RL Firmware
+
+
+
+ Bluetooth Initializing…
+ Bluetooth Error
+ Bluetooth Ready
+ Not Started
+ RileyLink Initialization…
+ RileyLink Error
+ Tuning up RileyLink and Pump
+ Problem connecting to Pump
+ Connected
+
+
+ Device is not RileyLink
+ RileyLink unreachable
+ Bluetooth disabled
+ No Bluetooth Adapter
+ TuneUp Failed
+ Pump unreachable
+ Pod unreachable
+
+
+ Medtronic Pump
+ Omnipod
+
+
+ Omnipod (433.91 MHz)
+ US & Canada (916 MHz)
+ Worldwide (868 Mhz)
+
+ medtronic_pump_encoding_4b6b_local
+ medtronic_pump_encoding_4b6b_rileylink
+
+ pref_rileylink_mac_address
+ pref_medtronic_encoding
+
+ %1$.1f %2$s (%3$s)
+
+
+
+
+
+ %1$d day
+ %1$d days
+
+
+ %1$d hour
+ %1$d hours
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RFToolsParametrizedUTest.java b/rileylink/src/test/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RFToolsParametrizedUTest.java
similarity index 100%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RFToolsParametrizedUTest.java
rename to rileylink/src/test/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RFToolsParametrizedUTest.java
diff --git a/app/src/test/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RFToolsUTest.java b/rileylink/src/test/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RFToolsUTest.java
similarity index 100%
rename from app/src/test/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RFToolsUTest.java
rename to rileylink/src/test/java/info/nightscout/androidaps/plugins/pump/common/hw/rileylink/ble/RFToolsUTest.java
diff --git a/settings.gradle b/settings.gradle
index f7c8a5fc0a..19da851b52 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1 +1,2 @@
-include ':app', ':wear', ':core'
\ No newline at end of file
+include ':app', ':wear', ':core', ':dana', ':danar', ':danars', ':rileylink', ':medtronic'
+
diff --git a/wear/build.gradle b/wear/build.gradle
index ffe7617086..2443fd17c8 100644
--- a/wear/build.gradle
+++ b/wear/build.gradle
@@ -1,14 +1,17 @@
buildscript {
repositories {
jcenter()
+ maven { url "https://plugins.gradle.org/m2/" } // jacoco 0.2
}
dependencies {
- classpath 'com.dicedmelon.gradle:jacoco-android:0.1.4'
+ //classpath 'com.dicedmelon.gradle:jacoco-android:0.1.4'
+ classpath 'com.hiya:jacoco-android:0.2'
}
}
apply plugin: 'com.android.application'
-apply plugin: 'jacoco-android'
+//apply plugin: 'jacoco-android'
+apply plugin: 'com.hiya.jacoco-android'
jacoco {
toolVersion = "0.8.3"
@@ -46,7 +49,7 @@ android {
defaultConfig {
applicationId "info.nightscout.androidaps"
- minSdkVersion 23
+ minSdkVersion 24
targetSdkVersion 28
versionCode 1
versionName "1.0.2"
@@ -124,8 +127,8 @@ dependencies {
implementation('com.github.lecho:hellocharts-library:1.5.8@aar')
testImplementation 'junit:junit:4.13'
- testImplementation 'org.json:json:20190722'
- testImplementation ("org.mockito:mockito-core:2.8.47") {
+ testImplementation 'org.json:json:20200518'
+ testImplementation("org.mockito:mockito-core:2.8.47") {
exclude group: 'net.bytebuddy', module: 'byte-buddy'
exclude group: 'net.bytebuddy', module: 'byte-buddy-android'
exclude group: 'net.bytebuddy', module: 'byte-buddy-agent'
diff --git a/wear/src/main/java/info/nightscout/androidaps/watchfaces/BgGraphBuilder.java b/wear/src/main/java/info/nightscout/androidaps/watchfaces/BgGraphBuilder.java
index ee17d91e76..90a3ea81d5 100644
--- a/wear/src/main/java/info/nightscout/androidaps/watchfaces/BgGraphBuilder.java
+++ b/wear/src/main/java/info/nightscout/androidaps/watchfaces/BgGraphBuilder.java
@@ -396,8 +396,8 @@ public class BgGraphBuilder {
if(singleLine) {
for (BgWatchData bgReading : bgDataList) {
if(bgReading.timestamp > start_time) {
- if (bgReading.sgv >= 400) {
- inRangeValues.add(new PointValue(fuzz(bgReading.timestamp), (float) 400));
+ if (bgReading.sgv >= 450) {
+ inRangeValues.add(new PointValue(fuzz(bgReading.timestamp), (float) 450));
} else if (bgReading.sgv >= highMark) {
inRangeValues.add(new PointValue(fuzz(bgReading.timestamp), (float) bgReading.sgv));
} else if (bgReading.sgv >= lowMark) {
@@ -412,8 +412,8 @@ public class BgGraphBuilder {
} else {
for (BgWatchData bgReading : bgDataList) {
if (bgReading.timestamp > start_time) {
- if (bgReading.sgv >= 400) {
- highValues.add(new PointValue(fuzz(bgReading.timestamp), (float) 400));
+ if (bgReading.sgv >= 450) {
+ highValues.add(new PointValue(fuzz(bgReading.timestamp), (float) 450));
} else if (bgReading.sgv >= highMark) {
highValues.add(new PointValue(fuzz(bgReading.timestamp), (float) bgReading.sgv));
} else if (bgReading.sgv >= lowMark) {
diff --git a/wear/src/main/res/values-ar-rSA/strings.xml b/wear/src/main/res/values-ar-rSA/strings.xml
new file mode 100644
index 0000000000..3ea04e700d
--- /dev/null
+++ b/wear/src/main/res/values-ar-rSA/strings.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/wear/src/main/res/values-bg-rBG/strings.xml b/wear/src/main/res/values-bg-rBG/strings.xml
index 3ea04e700d..0e633049af 100644
--- a/wear/src/main/res/values-bg-rBG/strings.xml
+++ b/wear/src/main/res/values-bg-rBG/strings.xml
@@ -1,2 +1,109 @@
-
+
+ AAPS
+ AAPS
+ AAPS
+ AAPS(голям)
+ AAPS(Графика)
+ AAPS(без рафика)
+ AAPS(Кръгъл)
+ AAPSv2
+ AAPS(Самолет)
+ AAPS(Steampunk)
+ Няма данни!
+ Стари данни!
+ От %1$s
+ Свържи с AAPS!
+ Няма данни от %1$s! Проверете дали AAPS на телефона изпраща данни до часовника
+ Данните са %1$s стари! Проверете сензора, xDrip+, HС, AAPS конфигурацията и други!
+ Вкл
+ Изкл
+ Вибрация при болус
+ Единици за Действие
+ Покажи дата
+ Покажи инсулин
+ Покажи въгл
+ Покажи Делта
+ Покажи средна делта
+ Батерия на телефон
+ Батерия на устройство
+ Покажи базал
+ Статус
+ КЗ
+ Делта стрелка
+ Преди
+ Тъмна
+ Маркирай базали
+ Подходящ разделител
+ Часови разделители
+ 1 час
+ 2 часа
+ 3 часа
+ 4 часа
+ 5 часа
+ Дизайн на въвеждане
+ Стандартен
+ Десничар
+ Левичар
+ Модерен
+ Делта грануларност (Steampunk)
+ Ниско
+ Среден
+ Висока
+ Автом
+ Големи Цифри
+ История
+ Олекотена история
+ Анимации
+ Калкулатор в менюто
+ Пълнене в менюто
+ Единична цел
+ Калкулатор с %
+ Допълнителни действия при почукване
+ Unicode кодиране
+ Версия:
+ Врем цел
+ Калкулатор
+ Болус
+ уд. въгл.
+ Настройки
+ Статус
+ Пълнене на сет
+ Без
+ Стандартен
+ Меню
+ продължителност
+ цел
+ ниско
+ висока
+ вълехидрати
+ % от профила
+ старт [min]
+ прод [h]
+ инсулин
+ Шаблон 1
+ Шаблон 2
+ Шаблон 3
+ Неограничено кол
+ ПОТВЪРДИ
+ ПОМПА СТАТУС
+ СТАТУС НА ЦИКЪЛА
+ отместване
+ ОДД средно
+ болус
+ Помпа
+ Режим на APS - Loop
+ CPP
+ TDD
+ ВХ
+ IOB
+ няма Статус
+ мг/дл
+ ммол/л
+ гр.
+ Е
+ Е/ч
+ ч
+ д
+ с
+
diff --git a/wear/src/main/res/values-cy-rGB/strings.xml b/wear/src/main/res/values-cy-rGB/strings.xml
new file mode 100644
index 0000000000..3ea04e700d
--- /dev/null
+++ b/wear/src/main/res/values-cy-rGB/strings.xml
@@ -0,0 +1,2 @@
+
+
diff --git a/wear/src/main/res/values-it-rIT/strings.xml b/wear/src/main/res/values-it-rIT/strings.xml
index 0f7282e210..e843401e23 100644
--- a/wear/src/main/res/values-it-rIT/strings.xml
+++ b/wear/src/main/res/values-it-rIT/strings.xml
@@ -19,14 +19,14 @@
OnOffVibra durante bolo
- Unità per Azioni
+ Unità per azioniMostra dataMostra IOBMostra COBMostra deltaMostra AvgDeltaMostra batteria telefono
- Mostra Batteria Rig
+ Mostra batteria rigMostra velocità basaleMostra stato loopMostra BG
@@ -52,8 +52,8 @@
AltoAutoNumeri grandi
- Storico Ring
- Storico Light Ring
+ Ring History
+ Light Ring HistoryAnimazioniWizard in MenuCarica in Menu
diff --git a/wear/src/main/res/values-pl-rPL/strings.xml b/wear/src/main/res/values-pl-rPL/strings.xml
index 805bd3677f..27cdfebbe2 100644
--- a/wear/src/main/res/values-pl-rPL/strings.xml
+++ b/wear/src/main/res/values-pl-rPL/strings.xml
@@ -50,6 +50,7 @@
NiskaŚredniaWysoka
+ AutoDuże CyfryHistoria glikemiDyskretniejsza historia
diff --git a/wear/src/main/res/values-pt-rBR/strings.xml b/wear/src/main/res/values-pt-rBR/strings.xml
index 28339639d6..1390a92cc7 100644
--- a/wear/src/main/res/values-pt-rBR/strings.xml
+++ b/wear/src/main/res/values-pt-rBR/strings.xml
@@ -19,7 +19,7 @@
Lig.Desl.Vibrar no Bólus
- Unidades para Acções
+ Unidades para AçõesMostrar DataMostrar IOBMostrar COB
@@ -30,7 +30,7 @@
Mostrar Taxa BasalMostrar Estado LoopMostrar Glic.
- Mostrar Seta Direcção
+ Mostrar Seta DireçãoMostrar AtrásEscuroDestacar Basais
diff --git a/wear/src/main/res/values-ro-rRO/strings.xml b/wear/src/main/res/values-ro-rRO/strings.xml
index 3ea04e700d..b4b847865f 100644
--- a/wear/src/main/res/values-ro-rRO/strings.xml
+++ b/wear/src/main/res/values-ro-rRO/strings.xml
@@ -1,2 +1,109 @@
-
+
+ AAPS
+ AAPS
+ AAPS
+ AAPS(Mare)
+ AAPS(GraficMare)
+ AAPS(FărăGrafic)
+ AAPS(Cerc)
+ AAPSv2
+ AAPS(Bord)
+ AAPS (Steampunk)
+ Nu există date!
+ Date vechi!
+ De acum %1$s
+ Sincronizare cu AAPS!
+ Nu au fost primite date de acum %1$s! Verificați că AAPS pe telefon trimite date către ceas
+ Datele AAPS sunt vechi de %1$s! Verificați senzorul, xDrip+, NS, configurația AAPS sau altele!
+ Pornit
+ Oprit
+ Vibrare la Bolus
+ Unităţi pentru Acţiuni
+ Arată data
+ Arată IOB
+ Arată COB
+ Arată Delta
+ Arată AvgDelta
+ Arată baterie telefon
+ Arată Baterie Rig
+ Arată rata bazală
+ Arată stare buclă închisă
+ Arată glicemia
+ Arată săgeată pentru evoluție
+ Afişare în urmă
+ Întunecat
+ Evidențiere rate bazale
+ Potrivire divider
+ Grafic Timp
+ 1 oră
+ 2 ore
+ 3 ore
+ 4 ore
+ 5 ore
+ Design de intrare
+ Implicit
+ Drepta rapid
+ Stânga rapid
+ Distanță modernă
+ Granularitate Delta (Steampunk)
+ Mic
+ Mediu
+ Mare
+ Auto
+ Numere Mari
+ Inel istoric
+ Inel istoric simplu
+ Animații
+ Asistent în meniu
+ Amorsare în meniu
+ Țintă unică
+ Procent asistent
+ Acţiuni pentru complicaţii
+ Unicode în complicații
+ Versiune:
+ ŢintăTemporară
+ Asistent
+ Bolus
+ eCarb
+ Setări
+ Stare
+ Amorsare/Umplere
+ Nimic
+ Implicit
+ Meniu
+ durată
+ țintă
+ hipo
+ hiper
+ carbohidrați
+ procentaj
+ start [min]
+ durată [h]
+ insulină
+ Presetare 1
+ Presetare 2
+ Presetare 3
+ Cantitate liberă
+ CONFIRMARE
+ STARE POMPĂ
+ STARE BUCLĂ ÎNCHISĂ
+ timp
+ TDD ponderat
+ bolus
+ Pompă
+ Buclă
+ CPP
+ TDD
+ Carbohidrați
+ IOB
+ niciun status
+ mg/dl
+ mmol/l
+ g
+ U
+ U/h
+ h
+ z
+ s
+
diff --git a/wear/src/main/res/xml/preferences.xml b/wear/src/main/res/xml/preferences.xml
index e8e48e3f51..3c114cb59c 100644
--- a/wear/src/main/res/xml/preferences.xml
+++ b/wear/src/main/res/xml/preferences.xml
@@ -1,5 +1,5 @@
-
-
+