Verify RSv1 password
This commit is contained in:
parent
25cc09ec26
commit
bce3d3b6b9
8 changed files with 76 additions and 59 deletions
|
@ -67,7 +67,8 @@ import javax.inject.Singleton
|
||||||
PreferencesModule::class,
|
PreferencesModule::class,
|
||||||
OverviewModule::class,
|
OverviewModule::class,
|
||||||
DataClassesModule::class,
|
DataClassesModule::class,
|
||||||
SMSModule::class
|
SMSModule::class,
|
||||||
|
DanaRSCommModule::class
|
||||||
]
|
]
|
||||||
)
|
)
|
||||||
interface AppComponent : AndroidInjector<MainApp> {
|
interface AppComponent : AndroidInjector<MainApp> {
|
||||||
|
|
|
@ -74,7 +74,7 @@ import info.nightscout.androidaps.utils.wizard.BolusWizard
|
||||||
import info.nightscout.androidaps.utils.wizard.QuickWizardEntry
|
import info.nightscout.androidaps.utils.wizard.QuickWizardEntry
|
||||||
import javax.inject.Singleton
|
import javax.inject.Singleton
|
||||||
|
|
||||||
@Module(includes = [AppModule.AppBindings::class, PluginsModule::class, DanaRSCommModule::class])
|
@Module(includes = [AppModule.AppBindings::class, PluginsModule::class])
|
||||||
open class AppModule {
|
open class AppModule {
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
|
|
|
@ -119,6 +119,7 @@ class DanaRPump @Inject constructor(
|
||||||
|
|
||||||
// DanaRS specific
|
// DanaRS specific
|
||||||
var rsPassword = ""
|
var rsPassword = ""
|
||||||
|
var v3RSPump = false;
|
||||||
|
|
||||||
// User settings
|
// User settings
|
||||||
var timeDisplayType = 0
|
var timeDisplayType = 0
|
||||||
|
@ -219,7 +220,10 @@ class DanaRPump @Inject constructor(
|
||||||
}
|
}
|
||||||
|
|
||||||
val isPasswordOK: Boolean
|
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)
|
||||||
|
|
||||||
fun reset() {
|
fun reset() {
|
||||||
aapsLogger.debug(LTag.PUMP, "DanaRPump reset")
|
aapsLogger.debug(LTag.PUMP, "DanaRPump reset")
|
||||||
|
|
|
@ -81,7 +81,15 @@ class DanaRSPlugin @Inject constructor(
|
||||||
|
|
||||||
override fun updatePreferenceSummary(pref: Preference) {
|
override fun updatePreferenceSummary(pref: Preference) {
|
||||||
super.updatePreferenceSummary(pref)
|
super.updatePreferenceSummary(pref)
|
||||||
if (pref.key == resourceHelper.gs(R.string.key_danars_name)) pref.summary = sp.getString(R.string.key_danars_name, "")
|
|
||||||
|
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.rileylink_error_address_not_set_short)
|
||||||
|
}
|
||||||
|
if (pref.key == resourceHelper.gs(R.string.key_danars_password)) {
|
||||||
|
if (danaRPump.v3RSPump) pref
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onStart() {
|
override fun onStart() {
|
||||||
|
@ -204,7 +212,7 @@ class DanaRSPlugin @Inject constructor(
|
||||||
|
|
||||||
// Pump interface
|
// Pump interface
|
||||||
override fun isInitialized(): Boolean {
|
override fun isInitialized(): Boolean {
|
||||||
return danaRPump.lastConnection > 0 && danaRPump.maxBasal > 0
|
return danaRPump.lastConnection > 0 && danaRPump.maxBasal > 0 && danaRPump.isRSPasswordOK
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun isSuspended(): Boolean {
|
override fun isSuspended(): Boolean {
|
||||||
|
@ -402,7 +410,6 @@ class DanaRSPlugin @Inject constructor(
|
||||||
|
|
||||||
@Synchronized
|
@Synchronized
|
||||||
override fun setTempBasalPercent(percent: Int, durationInMinutes: Int, profile: Profile, enforceNew: Boolean): PumpEnactResult {
|
override fun setTempBasalPercent(percent: Int, durationInMinutes: Int, profile: Profile, enforceNew: Boolean): PumpEnactResult {
|
||||||
val pump = danaRPump
|
|
||||||
val result = PumpEnactResult(injector)
|
val result = PumpEnactResult(injector)
|
||||||
var percentAfterConstraint = constraintChecker.applyBasalPercentConstraints(Constraint(percent), profile).value()
|
var percentAfterConstraint = constraintChecker.applyBasalPercentConstraints(Constraint(percent), profile).value()
|
||||||
if (percentAfterConstraint < 0) {
|
if (percentAfterConstraint < 0) {
|
||||||
|
@ -421,8 +428,8 @@ class DanaRSPlugin @Inject constructor(
|
||||||
result.success = true
|
result.success = true
|
||||||
result.isTempCancel = false
|
result.isTempCancel = false
|
||||||
result.comment = resourceHelper.gs(R.string.virtualpump_resultok)
|
result.comment = resourceHelper.gs(R.string.virtualpump_resultok)
|
||||||
result.duration = pump.tempBasalRemainingMin
|
result.duration = danaRPump.tempBasalRemainingMin
|
||||||
result.percent = pump.tempBasalPercent
|
result.percent = danaRPump.tempBasalPercent
|
||||||
result.isPercent = true
|
result.isPercent = true
|
||||||
aapsLogger.debug(LTag.PUMP, "setTempBasalPercent: Correct value already set")
|
aapsLogger.debug(LTag.PUMP, "setTempBasalPercent: Correct value already set")
|
||||||
return result
|
return result
|
||||||
|
@ -435,13 +442,13 @@ class DanaRSPlugin @Inject constructor(
|
||||||
val durationInHours = max(durationInMinutes / 60, 1)
|
val durationInHours = max(durationInMinutes / 60, 1)
|
||||||
danaRSService?.tempBasal(percentAfterConstraint, durationInHours) ?: false
|
danaRSService?.tempBasal(percentAfterConstraint, durationInHours) ?: false
|
||||||
}
|
}
|
||||||
if (connectionOK && pump.isTempBasalInProgress && pump.tempBasalPercent == percentAfterConstraint) {
|
if (connectionOK && danaRPump.isTempBasalInProgress && danaRPump.tempBasalPercent == percentAfterConstraint) {
|
||||||
result.enacted = true
|
result.enacted = true
|
||||||
result.success = true
|
result.success = true
|
||||||
result.comment = resourceHelper.gs(R.string.virtualpump_resultok)
|
result.comment = resourceHelper.gs(R.string.virtualpump_resultok)
|
||||||
result.isTempCancel = false
|
result.isTempCancel = false
|
||||||
result.duration = pump.tempBasalRemainingMin
|
result.duration = danaRPump.tempBasalRemainingMin
|
||||||
result.percent = pump.tempBasalPercent
|
result.percent = danaRPump.tempBasalPercent
|
||||||
result.isPercent = true
|
result.isPercent = true
|
||||||
aapsLogger.debug(LTag.PUMP, "setTempBasalPercent: OK")
|
aapsLogger.debug(LTag.PUMP, "setTempBasalPercent: OK")
|
||||||
return result
|
return result
|
||||||
|
@ -454,16 +461,15 @@ class DanaRSPlugin @Inject constructor(
|
||||||
}
|
}
|
||||||
|
|
||||||
@Synchronized private fun setHighTempBasalPercent(percent: Int): PumpEnactResult {
|
@Synchronized private fun setHighTempBasalPercent(percent: Int): PumpEnactResult {
|
||||||
val pump = danaRPump
|
|
||||||
val result = PumpEnactResult(injector)
|
val result = PumpEnactResult(injector)
|
||||||
val connectionOK = danaRSService?.highTempBasal(percent) ?: false
|
val connectionOK = danaRSService?.highTempBasal(percent) ?: false
|
||||||
if (connectionOK && pump.isTempBasalInProgress && pump.tempBasalPercent == percent) {
|
if (connectionOK && danaRPump.isTempBasalInProgress && danaRPump.tempBasalPercent == percent) {
|
||||||
result.enacted = true
|
result.enacted = true
|
||||||
result.success = true
|
result.success = true
|
||||||
result.comment = resourceHelper.gs(R.string.virtualpump_resultok)
|
result.comment = resourceHelper.gs(R.string.virtualpump_resultok)
|
||||||
result.isTempCancel = false
|
result.isTempCancel = false
|
||||||
result.duration = pump.tempBasalRemainingMin
|
result.duration = danaRPump.tempBasalRemainingMin
|
||||||
result.percent = pump.tempBasalPercent
|
result.percent = danaRPump.tempBasalPercent
|
||||||
result.isPercent = true
|
result.isPercent = true
|
||||||
aapsLogger.debug(LTag.PUMP, "setHighTempBasalPercent: OK")
|
aapsLogger.debug(LTag.PUMP, "setHighTempBasalPercent: OK")
|
||||||
return result
|
return result
|
||||||
|
@ -477,7 +483,6 @@ class DanaRSPlugin @Inject constructor(
|
||||||
|
|
||||||
@Synchronized
|
@Synchronized
|
||||||
override fun setExtendedBolus(insulin: Double, durationInMinutes: Int): PumpEnactResult {
|
override fun setExtendedBolus(insulin: Double, durationInMinutes: Int): PumpEnactResult {
|
||||||
val pump = danaRPump
|
|
||||||
var insulinAfterConstraint = constraintChecker.applyExtendedBolusConstraints(Constraint(insulin)).value()
|
var insulinAfterConstraint = constraintChecker.applyExtendedBolusConstraints(Constraint(insulin)).value()
|
||||||
// needs to be rounded
|
// needs to be rounded
|
||||||
val durationInHalfHours = max(durationInMinutes / 30, 1)
|
val durationInHalfHours = max(durationInMinutes / 30, 1)
|
||||||
|
@ -488,23 +493,23 @@ class DanaRSPlugin @Inject constructor(
|
||||||
result.enacted = false
|
result.enacted = false
|
||||||
result.success = true
|
result.success = true
|
||||||
result.comment = resourceHelper.gs(R.string.virtualpump_resultok)
|
result.comment = resourceHelper.gs(R.string.virtualpump_resultok)
|
||||||
result.duration = pump.extendedBolusRemainingMinutes
|
result.duration = danaRPump.extendedBolusRemainingMinutes
|
||||||
result.absolute = pump.extendedBolusAbsoluteRate
|
result.absolute = danaRPump.extendedBolusAbsoluteRate
|
||||||
result.isPercent = false
|
result.isPercent = false
|
||||||
result.isTempCancel = false
|
result.isTempCancel = false
|
||||||
aapsLogger.debug(LTag.PUMP, "setExtendedBolus: Correct extended bolus already set. Current: " + pump.extendedBolusAmount + " Asked: " + insulinAfterConstraint)
|
aapsLogger.debug(LTag.PUMP, "setExtendedBolus: Correct extended bolus already set. Current: " + danaRPump.extendedBolusAmount + " Asked: " + insulinAfterConstraint)
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
val connectionOK = danaRSService?.extendedBolus(insulinAfterConstraint, durationInHalfHours)
|
val connectionOK = danaRSService?.extendedBolus(insulinAfterConstraint, durationInHalfHours)
|
||||||
?: false
|
?: false
|
||||||
if (connectionOK && pump.isExtendedInProgress && abs(pump.extendedBolusAbsoluteRate - insulinAfterConstraint) < pumpDescription.extendedBolusStep) {
|
if (connectionOK && danaRPump.isExtendedInProgress && abs(danaRPump.extendedBolusAbsoluteRate - insulinAfterConstraint) < pumpDescription.extendedBolusStep) {
|
||||||
result.enacted = true
|
result.enacted = true
|
||||||
result.success = true
|
result.success = true
|
||||||
result.comment = resourceHelper.gs(R.string.virtualpump_resultok)
|
result.comment = resourceHelper.gs(R.string.virtualpump_resultok)
|
||||||
result.isTempCancel = false
|
result.isTempCancel = false
|
||||||
result.duration = pump.extendedBolusRemainingMinutes
|
result.duration = danaRPump.extendedBolusRemainingMinutes
|
||||||
result.absolute = pump.extendedBolusAbsoluteRate
|
result.absolute = danaRPump.extendedBolusAbsoluteRate
|
||||||
result.bolusDelivered = pump.extendedBolusAmount
|
result.bolusDelivered = danaRPump.extendedBolusAmount
|
||||||
result.isPercent = false
|
result.isPercent = false
|
||||||
aapsLogger.debug(LTag.PUMP, "setExtendedBolus: OK")
|
aapsLogger.debug(LTag.PUMP, "setExtendedBolus: OK")
|
||||||
return result
|
return result
|
||||||
|
@ -562,9 +567,8 @@ class DanaRSPlugin @Inject constructor(
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getJSONStatus(profile: Profile, profileName: String): JSONObject {
|
override fun getJSONStatus(profile: Profile, profileName: String): JSONObject {
|
||||||
val pump = danaRPump
|
|
||||||
val now = System.currentTimeMillis()
|
val now = System.currentTimeMillis()
|
||||||
if (pump.lastConnection + 5 * 60 * 1000L < System.currentTimeMillis()) {
|
if (danaRPump.lastConnection + 5 * 60 * 1000L < System.currentTimeMillis()) {
|
||||||
return JSONObject()
|
return JSONObject()
|
||||||
}
|
}
|
||||||
val pumpJson = JSONObject()
|
val pumpJson = JSONObject()
|
||||||
|
@ -572,13 +576,13 @@ class DanaRSPlugin @Inject constructor(
|
||||||
val status = JSONObject()
|
val status = JSONObject()
|
||||||
val extended = JSONObject()
|
val extended = JSONObject()
|
||||||
try {
|
try {
|
||||||
battery.put("percent", pump.batteryRemaining)
|
battery.put("percent", danaRPump.batteryRemaining)
|
||||||
status.put("status", if (pump.pumpSuspended) "suspended" else "normal")
|
status.put("status", if (danaRPump.pumpSuspended) "suspended" else "normal")
|
||||||
status.put("timestamp", DateUtil.toISOString(pump.lastConnection))
|
status.put("timestamp", DateUtil.toISOString(danaRPump.lastConnection))
|
||||||
extended.put("Version", BuildConfig.VERSION_NAME + "-" + BuildConfig.BUILDVERSION)
|
extended.put("Version", BuildConfig.VERSION_NAME + "-" + BuildConfig.BUILDVERSION)
|
||||||
if (pump.lastBolusTime != 0L) {
|
if (danaRPump.lastBolusTime != 0L) {
|
||||||
extended.put("LastBolus", DateUtil.dateAndTimeString(pump.lastBolusTime))
|
extended.put("LastBolus", DateUtil.dateAndTimeString(danaRPump.lastBolusTime))
|
||||||
extended.put("LastBolusAmount", pump.lastBolusAmount)
|
extended.put("LastBolusAmount", danaRPump.lastBolusAmount)
|
||||||
}
|
}
|
||||||
val tb = treatmentsPlugin.getTempBasalFromHistory(now)
|
val tb = treatmentsPlugin.getTempBasalFromHistory(now)
|
||||||
if (tb != null) {
|
if (tb != null) {
|
||||||
|
@ -601,7 +605,7 @@ class DanaRSPlugin @Inject constructor(
|
||||||
pumpJson.put("battery", battery)
|
pumpJson.put("battery", battery)
|
||||||
pumpJson.put("status", status)
|
pumpJson.put("status", status)
|
||||||
pumpJson.put("extended", extended)
|
pumpJson.put("extended", extended)
|
||||||
pumpJson.put("reservoir", pump.reservoirRemainingUnits.toInt())
|
pumpJson.put("reservoir", danaRPump.reservoirRemainingUnits.toInt())
|
||||||
pumpJson.put("clock", DateUtil.toISOString(now))
|
pumpJson.put("clock", DateUtil.toISOString(now))
|
||||||
} catch (e: JSONException) {
|
} catch (e: JSONException) {
|
||||||
aapsLogger.error("Unhandled exception", e)
|
aapsLogger.error("Unhandled exception", e)
|
||||||
|
@ -626,15 +630,14 @@ class DanaRSPlugin @Inject constructor(
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun shortStatus(veryShort: Boolean): String {
|
override fun shortStatus(veryShort: Boolean): String {
|
||||||
val pump = danaRPump
|
|
||||||
var ret = ""
|
var ret = ""
|
||||||
if (pump.lastConnection != 0L) {
|
if (danaRPump.lastConnection != 0L) {
|
||||||
val agoMillis = System.currentTimeMillis() - pump.lastConnection
|
val agoMillis = System.currentTimeMillis() - danaRPump.lastConnection
|
||||||
val agoMin = (agoMillis / 60.0 / 1000.0).toInt()
|
val agoMin = (agoMillis / 60.0 / 1000.0).toInt()
|
||||||
ret += "LastConn: $agoMin minago\n"
|
ret += "LastConn: $agoMin minago\n"
|
||||||
}
|
}
|
||||||
if (pump.lastBolusTime != 0L)
|
if (danaRPump.lastBolusTime != 0L)
|
||||||
ret += "LastBolus: ${DecimalFormatter.to2Decimal(pump.lastBolusAmount)}U @${DateFormat.format("HH:mm", pump.lastBolusTime)}"
|
ret += "LastBolus: ${DecimalFormatter.to2Decimal(danaRPump.lastBolusAmount)}U @${DateFormat.format("HH:mm", danaRPump.lastBolusTime)}"
|
||||||
|
|
||||||
val activeTemp = treatmentsPlugin.getRealTempBasalFromHistory(System.currentTimeMillis())
|
val activeTemp = treatmentsPlugin.getRealTempBasalFromHistory(System.currentTimeMillis())
|
||||||
if (activeTemp != null)
|
if (activeTemp != null)
|
||||||
|
@ -645,10 +648,10 @@ class DanaRSPlugin @Inject constructor(
|
||||||
ret += "Extended: $activeExtendedBolus\n"
|
ret += "Extended: $activeExtendedBolus\n"
|
||||||
|
|
||||||
if (!veryShort) {
|
if (!veryShort) {
|
||||||
ret += "TDD: ${DecimalFormatter.to0Decimal(pump.dailyTotalUnits)} / ${pump.maxDailyTotalUnits} U"
|
ret += "TDD: ${DecimalFormatter.to0Decimal(danaRPump.dailyTotalUnits)} / ${danaRPump.maxDailyTotalUnits} U"
|
||||||
}
|
}
|
||||||
ret += "Reserv: ${DecimalFormatter.to0Decimal(pump.reservoirRemainingUnits)} U"
|
ret += "Reserv: ${DecimalFormatter.to0Decimal(danaRPump.reservoirRemainingUnits)} U"
|
||||||
ret += "Batt: ${pump.batteryRemaining}"
|
ret += "Batt: ${danaRPump.batteryRemaining}"
|
||||||
return ret
|
return ret
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,7 @@ import info.nightscout.androidaps.logging.AAPSLogger
|
||||||
import info.nightscout.androidaps.logging.LTag
|
import info.nightscout.androidaps.logging.LTag
|
||||||
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
|
import info.nightscout.androidaps.plugins.bus.RxBusWrapper
|
||||||
import info.nightscout.androidaps.plugins.general.nsclient.NSUpload
|
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.events.EventNewNotification
|
||||||
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification
|
import info.nightscout.androidaps.plugins.general.overview.notifications.Notification
|
||||||
import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
|
import info.nightscout.androidaps.plugins.pump.danaR.DanaRPump
|
||||||
|
@ -22,6 +23,7 @@ import info.nightscout.androidaps.plugins.pump.danaRS.comm.DanaRSMessageHashTabl
|
||||||
import info.nightscout.androidaps.plugins.pump.danaRS.comm.DanaRS_Packet
|
import info.nightscout.androidaps.plugins.pump.danaRS.comm.DanaRS_Packet
|
||||||
import info.nightscout.androidaps.plugins.pump.danaRS.encryption.BleEncryption
|
import info.nightscout.androidaps.plugins.pump.danaRS.encryption.BleEncryption
|
||||||
import info.nightscout.androidaps.plugins.pump.danaRS.events.EventDanaRSPairingSuccess
|
import info.nightscout.androidaps.plugins.pump.danaRS.events.EventDanaRSPairingSuccess
|
||||||
|
import info.nightscout.androidaps.utils.T
|
||||||
import info.nightscout.androidaps.utils.ToastUtils
|
import info.nightscout.androidaps.utils.ToastUtils
|
||||||
import info.nightscout.androidaps.utils.extensions.notify
|
import info.nightscout.androidaps.utils.extensions.notify
|
||||||
import info.nightscout.androidaps.utils.extensions.waitMillis
|
import info.nightscout.androidaps.utils.extensions.waitMillis
|
||||||
|
@ -67,6 +69,7 @@ class BLEComm @Inject internal constructor(
|
||||||
set(newValue) {
|
set(newValue) {
|
||||||
bleEncryption.setEnhancedEncryption(newValue)
|
bleEncryption.setEnhancedEncryption(newValue)
|
||||||
field = newValue
|
field = newValue
|
||||||
|
danaRPump.v3RSPump = newValue
|
||||||
}
|
}
|
||||||
private var isEasyMode: Boolean = false
|
private var isEasyMode: Boolean = false
|
||||||
private var isUnitUD: Boolean = false
|
private var isUnitUD: Boolean = false
|
||||||
|
@ -550,11 +553,19 @@ class BLEComm @Inject internal constructor(
|
||||||
var pass: Int = (decryptedBuffer[size - 1].toInt() and 0x000000FF shl 8) + (decryptedBuffer[size - 2].toInt() and 0x000000FF)
|
var pass: Int = (decryptedBuffer[size - 1].toInt() and 0x000000FF shl 8) + (decryptedBuffer[size - 2].toInt() and 0x000000FF)
|
||||||
pass = pass xor 3463
|
pass = pass xor 3463
|
||||||
danaRPump.rsPassword = Integer.toHexString(pass)
|
danaRPump.rsPassword = Integer.toHexString(pass)
|
||||||
aapsLogger.debug(LTag.PUMPBTCOMM, "Pump user password: " + Integer.toHexString(pass))
|
aapsLogger.debug(LTag.PUMPBTCOMM, "Pump user password: " + danaRPump.rsPassword)
|
||||||
rxBus.send(EventPumpStatusChanged(EventPumpStatusChanged.Status.CONNECTED))
|
if (!danaRPump.isRSPasswordOK) {
|
||||||
isConnected = true
|
aapsLogger.error(LTag.PUMPBTCOMM, "Wrong pump password")
|
||||||
isConnecting = false
|
rxBus.send(EventNewNotification(Notification(Notification.WRONG_PUMP_PASSWORD, resourceHelper.gs(R.string.wrongpumppassword), Notification.URGENT)))
|
||||||
aapsLogger.debug(LTag.PUMPBTCOMM, "RS connected and status read")
|
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")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -379,6 +379,7 @@
|
||||||
<string name="danar_history_refill">Refill</string>
|
<string name="danar_history_refill">Refill</string>
|
||||||
<string name="danar_history_syspend">Suspend</string>
|
<string name="danar_history_syspend">Suspend</string>
|
||||||
<string name="danar_history_connectingfor">Connecting for %1$d s</string>
|
<string name="danar_history_connectingfor">Connecting for %1$d s</string>
|
||||||
|
<string name="danars_password_title">Pump password (v1 only)</string>
|
||||||
<string name="danar_password_title">Pump password</string>
|
<string name="danar_password_title">Pump password</string>
|
||||||
<string name="wrongpumppassword">Wrong pump password!</string>
|
<string name="wrongpumppassword">Wrong pump password!</string>
|
||||||
<string name="pumpbusy">Pump is busy</string>
|
<string name="pumpbusy">Pump is busy</string>
|
||||||
|
@ -805,7 +806,6 @@
|
||||||
<string name="danarspump">DanaRS</string>
|
<string name="danarspump">DanaRS</string>
|
||||||
<string name="danarspump_shortname">Dana</string>
|
<string name="danarspump_shortname">Dana</string>
|
||||||
<string name="selectedpump">Selected pump</string>
|
<string name="selectedpump">Selected pump</string>
|
||||||
<string name="pairpump">Pair new pump</string>
|
|
||||||
<string name="bolusspeed">Bolus speed</string>
|
<string name="bolusspeed">Bolus speed</string>
|
||||||
<string name="key_danars_bolusspeed" translatable="false">danars_bolusspeed</string>
|
<string name="key_danars_bolusspeed" translatable="false">danars_bolusspeed</string>
|
||||||
<string name="danar_setbasalstep001">Set basal step to 0.01 U/h</string>
|
<string name="danar_setbasalstep001">Set basal step to 0.01 U/h</string>
|
||||||
|
@ -1844,4 +1844,5 @@
|
||||||
<string name="key_statuslights_copy_ns" translatable="false">statuslights_copy_ns</string>
|
<string name="key_statuslights_copy_ns" translatable="false">statuslights_copy_ns</string>
|
||||||
<string name="copyexistingvalues">Copy NS settings (if exists)?</string>
|
<string name="copyexistingvalues">Copy NS settings (if exists)?</string>
|
||||||
<string name="key_statuslights_overview_advanced" translatable="false">statuslights_overview_advanced</string>
|
<string name="key_statuslights_overview_advanced" translatable="false">statuslights_overview_advanced</string>
|
||||||
|
<string name="key_danars_password">danars_password</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -18,11 +18,13 @@
|
||||||
<string name="error_mustbe6digitnumber">Must be 6 digit number</string>
|
<string name="error_mustbe6digitnumber">Must be 6 digit number</string>
|
||||||
<string name="error_mustbe12hexadidits">Must be 12 characters of ABCDEF0123456789</string>
|
<string name="error_mustbe12hexadidits">Must be 12 characters of ABCDEF0123456789</string>
|
||||||
<string name="error_mustbe8hexadidits">Must be 8 characters of ABCDEF0123456789</string>
|
<string name="error_mustbe8hexadidits">Must be 8 characters of ABCDEF0123456789</string>
|
||||||
|
<string name="error_mustbe4hexadidits">Must be 4 characters of ABCDEF0123456789</string>
|
||||||
<string name="error_not_a_minimum_length">Not a minimum length</string>
|
<string name="error_not_a_minimum_length">Not a minimum length</string>
|
||||||
<string name="error_pin_not_valid">Pin should be 3 to 6 digits, not same or in series</string>
|
<string name="error_pin_not_valid">Pin should be 3 to 6 digits, not same or in series</string>
|
||||||
|
|
||||||
<string name="fourdigitnumber" translatable="false">^\\d{4}</string>
|
<string name="fourdigitnumber" translatable="false">^\\d{4}</string>
|
||||||
<string name="twelvehexanumber" translatable="false">^[A-F0-9]{12}$</string>
|
<string name="twelvehexanumber" translatable="false">^[A-F0-9]{12}$</string>
|
||||||
<string name="eighthexanumber" translatable="false">^[A-F0-9]{8}$</string>
|
<string name="eighthexanumber" translatable="false">^[A-F0-9]{8}$</string>
|
||||||
|
<string name="fourhexanumber" translatable="false">^[A-F0-9]{4}$</string>
|
||||||
|
|
||||||
</resources>
|
</resources>
|
|
@ -8,24 +8,19 @@
|
||||||
app:initialExpandedChildrenCount="0">
|
app:initialExpandedChildrenCount="0">
|
||||||
|
|
||||||
<Preference
|
<Preference
|
||||||
android:key="blescannner"
|
android:key="@string/key_danars_name"
|
||||||
android:title="@string/pairpump">
|
android:summary=""
|
||||||
|
android:title="@string/selectedpump">
|
||||||
<intent android:action="info.nightscout.androidaps.plugins.PumpDanaRS.activities.BLEScanActivity" />
|
<intent android:action="info.nightscout.androidaps.plugins.PumpDanaRS.activities.BLEScanActivity" />
|
||||||
</Preference>
|
</Preference>
|
||||||
|
|
||||||
<EditTextPreference
|
|
||||||
android:key="@string/key_danars_name"
|
|
||||||
android:persistent="false"
|
|
||||||
android:selectable="false"
|
|
||||||
android:summary=""
|
|
||||||
android:title="@string/selectedpump" />
|
|
||||||
|
|
||||||
<info.nightscout.androidaps.utils.textValidator.ValidatingEditTextPreference
|
<info.nightscout.androidaps.utils.textValidator.ValidatingEditTextPreference
|
||||||
android:inputType="numberPassword"
|
android:inputType="numberPassword"
|
||||||
android:key="@string/key_danar_password"
|
android:digits="0123456789ABCDEF"
|
||||||
android:title="@string/danar_password_title"
|
android:key="@string/key_danars_password"
|
||||||
validate:customRegexp="@string/fourdigitnumber"
|
android:title="@string/danars_password_title"
|
||||||
validate:testErrorString="@string/error_mustbe4digitnumber"
|
validate:customRegexp="@string/fourhexanumber"
|
||||||
|
validate:testErrorString="@string/error_mustbe4hexadidits"
|
||||||
validate:testType="regexp" />
|
validate:testType="regexp" />
|
||||||
|
|
||||||
<ListPreference
|
<ListPreference
|
||||||
|
|
Loading…
Reference in a new issue