diff --git a/medtronic/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 index 1b400b7bde..17f2932200 100644 --- a/medtronic/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 @@ -96,8 +96,9 @@ public class RileyLinkMedtronicService extends RileyLinkService { setPumpIDString(sp.getString(MedtronicConst.Prefs.PumpSerial, "000000")); - // get most recently used RileyLink address - rileyLinkServiceData.rileylinkAddress = sp.getString(RileyLinkConst.Prefs.RileyLinkAddress, ""); + // get most recently used RileyLink address and name + rileyLinkServiceData.rileyLinkAddress = sp.getString(RileyLinkConst.Prefs.RileyLinkAddress, ""); + rileyLinkServiceData.rileyLinkName = sp.getString(RileyLinkConst.Prefs.RileyLinkName, ""); rfspy.startReader(); diff --git a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/rileylink/service/RileyLinkOmnipodService.java b/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/rileylink/service/RileyLinkOmnipodService.java index b92d26f017..b51ab9012d 100644 --- a/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/rileylink/service/RileyLinkOmnipodService.java +++ b/omnipod/src/main/java/info/nightscout/androidaps/plugins/pump/omnipod/rileylink/service/RileyLinkOmnipodService.java @@ -72,7 +72,8 @@ public class RileyLinkOmnipodService extends RileyLinkService { rileyLinkServiceData.targetDevice = RileyLinkTargetDevice.Omnipod; rileyLinkServiceData.rileyLinkTargetFrequency = RileyLinkTargetFrequency.Omnipod; - rileyLinkServiceData.rileylinkAddress = sp.getString(RileyLinkConst.Prefs.RileyLinkAddress, ""); + rileyLinkServiceData.rileyLinkAddress = sp.getString(RileyLinkConst.Prefs.RileyLinkAddress, ""); + rileyLinkServiceData.rileyLinkName = sp.getString(RileyLinkConst.Prefs.RileyLinkName, ""); rfspy.startReader(); diff --git a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/dialog/RileyLinkBLEConfigActivity.java b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/dialog/RileyLinkBLEConfigActivity.java index a99aa7a329..1f694c4285 100644 --- a/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/dialog/RileyLinkBLEConfigActivity.java +++ b/rileylink/src/main/java/info/nightscout/androidaps/plugins/pump/common/dialog/RileyLinkBLEConfigActivity.java @@ -60,7 +60,8 @@ public class RileyLinkBLEConfigActivity extends NoSplashAppCompatActivity { private ScanSettings settings; private List filters; private ListView deviceList; - private TextView currentlySelectedRileyLink; + private TextView currentlySelectedRileyLinkName; + private TextView currentlySelectedRileyLinkAddress; private Button buttonRemoveRileyLink; private Button buttonStartScan; private Button buttonStopScan; @@ -81,7 +82,8 @@ public class RileyLinkBLEConfigActivity extends NoSplashAppCompatActivity { bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); deviceListAdapter = new LeDeviceListAdapter(); handler = new Handler(); - currentlySelectedRileyLink = findViewById(R.id.riley_link_ble_config_currently_selected_riley_link); + currentlySelectedRileyLinkName = findViewById(R.id.riley_link_ble_config_currently_selected_riley_link_name); + currentlySelectedRileyLinkAddress = findViewById(R.id.riley_link_ble_config_currently_selected_riley_link_address); buttonRemoveRileyLink = findViewById(R.id.riley_link_ble_config_button_remove_riley_link); buttonStartScan = findViewById(R.id.riley_link_ble_config_scan_start); buttonStopScan = findViewById(R.id.riley_link_ble_config_button_scan_stop); @@ -94,8 +96,10 @@ public class RileyLinkBLEConfigActivity extends NoSplashAppCompatActivity { } String bleAddress = ((TextView) view.findViewById(R.id.riley_link_ble_config_scan_item_device_address)).getText().toString(); + String deviceName = ((TextView) view.findViewById(R.id.riley_link_ble_config_scan_item_device_name)).getText().toString(); sp.putString(RileyLinkConst.Prefs.RileyLinkAddress, bleAddress); + sp.putString(RileyLinkConst.Prefs.RileyLinkName, deviceName); RileyLinkPumpDevice rileyLinkPump = (RileyLinkPumpDevice) activePlugin.getActivePump(); rileyLinkPump.getRileyLinkService().verifyConfiguration(true); // force reloading of address to assure that the RL gets reconnected (even if the address didn't change) @@ -130,11 +134,15 @@ public class RileyLinkBLEConfigActivity extends NoSplashAppCompatActivity { private void updateCurrentlySelectedRileyLink() { String address = sp.getString(RileyLinkConst.Prefs.RileyLinkAddress, ""); if (StringUtils.isEmpty(address)) { - currentlySelectedRileyLink.setText(R.string.riley_link_ble_config_no_riley_link_selected); + currentlySelectedRileyLinkName.setText(R.string.riley_link_ble_config_no_riley_link_selected); + currentlySelectedRileyLinkAddress.setVisibility(View.GONE); buttonRemoveRileyLink.setVisibility(View.GONE); } else { - currentlySelectedRileyLink.setText(address); + currentlySelectedRileyLinkAddress.setVisibility(View.VISIBLE); buttonRemoveRileyLink.setVisibility(View.VISIBLE); + + currentlySelectedRileyLinkName.setText(sp.getString(RileyLinkConst.Prefs.RileyLinkName, "RileyLink (?)")); + currentlySelectedRileyLinkAddress.setText(address); } } @@ -308,7 +316,7 @@ public class RileyLinkBLEConfigActivity extends NoSplashAppCompatActivity { ViewHolder viewHolder; // General ListView optimization code. if (view == null) { - view = mInflator.inflate(R.layout.rileylink_scan_item, null); + view = mInflator.inflate(R.layout.riley_link_ble_config_scan_item, null); viewHolder = new ViewHolder(); viewHolder.deviceAddress = view.findViewById(R.id.riley_link_ble_config_scan_item_device_address); viewHolder.deviceName = view.findViewById(R.id.riley_link_ble_config_scan_item_device_name); diff --git a/rileylink/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 index 40d17aee84..28f551e188 100644 --- a/rileylink/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 @@ -33,6 +33,7 @@ public class RileyLinkConst { //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 int RileyLinkName = R.string.key_rileylink_name; public static final String LastGoodDeviceCommunicationTime = Prefix + "lastGoodDeviceCommunicationTime"; public static final String LastGoodDeviceFrequency = Prefix + "LastGoodDeviceFrequency"; public static final int Encoding = R.string.key_medtronic_encoding; diff --git a/rileylink/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 index 5a26b80dd8..05744e1845 100644 --- a/rileylink/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 @@ -35,6 +35,7 @@ import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.defs.RileyLin import info.nightscout.androidaps.plugins.pump.common.hw.rileylink.service.RileyLinkServiceData; import info.nightscout.androidaps.plugins.pump.common.utils.ByteUtil; import info.nightscout.androidaps.plugins.pump.common.utils.ThreadUtil; +import info.nightscout.androidaps.utils.sharedPreferences.SP; /** * Created by geoff on 5/26/16. @@ -46,6 +47,7 @@ public class RileyLinkBLE { @Inject AAPSLogger aapsLogger; @Inject RileyLinkServiceData rileyLinkServiceData; @Inject RileyLinkUtil rileyLinkUtil; + @Inject SP sp; private final Context context; private final boolean gattDebugEnabled = true; @@ -393,8 +395,11 @@ public class RileyLinkBLE { aapsLogger.debug(LTag.PUMPBTCOMM, "Gatt Connected."); } - rileyLinkServiceData.rileylinkAddress = bluetoothConnectionGatt.getDevice().getAddress(); + rileyLinkServiceData.rileyLinkAddress = bluetoothConnectionGatt.getDevice().getAddress(); rileyLinkServiceData.rileyLinkName = bluetoothConnectionGatt.getDevice().getName(); + + // Update stored name upon connecting (also for backwards compatibility for device where a name was not yet stored) + sp.putString(RileyLinkConst.Prefs.RileyLinkName, rileyLinkServiceData.rileyLinkName); } } diff --git a/rileylink/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 index c4e06f8ab1..45d2bbbe7b 100644 --- a/rileylink/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 @@ -1,7 +1,6 @@ package info.nightscout.androidaps.plugins.pump.common.hw.rileylink.dialog; import android.os.Bundle; -import android.widget.TextView; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; @@ -19,29 +18,18 @@ import javax.inject.Inject; 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; import info.nightscout.androidaps.utils.resources.ResourceHelper; public class RileyLinkStatusActivity extends NoSplashAppCompatActivity { @Inject ResourceHelper resourceHelper; - @Inject RileyLinkUtil rileyLinkUtil; - @Inject RileyLinkServiceData rileyLinkServiceData; - TextView connectionStatus; - TextView configuredAddress; - TextView connectedDevice; - TextView connectionError; - - private SectionsPagerAdapter mSectionsPagerAdapter; - private FloatingActionButton floatingActionButton; + private SectionsPagerAdapter sectionsPagerAdapter; private TabLayout tabLayout; /** * The {@link ViewPager} that will host the section contents. */ - private ViewPager mViewPager; - + private ViewPager viewPager; @Override public void onCreate(Bundle savedInstanceState) { @@ -52,36 +40,28 @@ public class RileyLinkStatusActivity extends NoSplashAppCompatActivity { // primary sections of the activity. // Set up the ViewPager with the sections adapter. - mViewPager = findViewById(R.id.rileylink_settings_container); + viewPager = findViewById(R.id.rileylink_settings_container); // mViewPager.setAdapter(mSectionsPagerAdapter); - setupViewPager(mViewPager); + setupViewPager(); tabLayout = findViewById(R.id.rileylink_settings_tabs); - tabLayout.setupWithViewPager(mViewPager); + tabLayout.setupWithViewPager(viewPager); - floatingActionButton = findViewById(R.id.rileylink_settings_fab); + FloatingActionButton floatingActionButton = findViewById(R.id.rileylink_settings_fab); floatingActionButton.setOnClickListener(v -> { - RefreshableInterface selectableInterface = (RefreshableInterface) mSectionsPagerAdapter + RefreshableInterface selectableInterface = (RefreshableInterface) sectionsPagerAdapter .getItem(tabLayout.getSelectedTabPosition()); selectableInterface.refreshData(); }); - - this.connectionStatus = findViewById(R.id.rls_t1_connection_status); - this.configuredAddress = findViewById(R.id.rls_t1_configured_address); - this.connectedDevice = findViewById(R.id.rls_t1_connected_device); - this.connectionError = findViewById(R.id.rls_t1_connection_error); } - public void setupViewPager(ViewPager pager) { + public void setupViewPager() { + sectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); - mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); - - mSectionsPagerAdapter.addFragment(new RileyLinkStatusGeneralFragment(), resourceHelper.gs(R.string.rileylink_settings_tab1)); - mSectionsPagerAdapter.addFragment(new RileyLinkStatusHistoryFragment(), resourceHelper.gs(R.string.rileylink_settings_tab2)); - //mSectionsPagerAdapter.addFragment(new RileyLinkStatusDevice(), "Medtronic"); - - mViewPager.setAdapter(mSectionsPagerAdapter); + sectionsPagerAdapter.addFragment(new RileyLinkStatusGeneralFragment(), resourceHelper.gs(R.string.rileylink_settings_tab1)); + sectionsPagerAdapter.addFragment(new RileyLinkStatusHistoryFragment(), resourceHelper.gs(R.string.rileylink_settings_tab2)); + viewPager.setAdapter(sectionsPagerAdapter); } /** @@ -94,32 +74,27 @@ public class RileyLinkStatusActivity extends NoSplashAppCompatActivity { List fragmentTitle = new ArrayList<>(); int lastSelectedPosition = 0; - public SectionsPagerAdapter(FragmentManager fm) { super(fm); } - @Override public Fragment getItem(int position) { this.lastSelectedPosition = position; return fragmentList.get(position); } - @Override public int getCount() { // Show 3 total pages. return fragmentList.size(); } - public void addFragment(Fragment fragment, String title) { this.fragmentList.add(fragment); this.fragmentTitle.add(title); } - @Override public CharSequence getPageTitle(int position) { return fragmentTitle.get(position); diff --git a/rileylink/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 index 7f905f0a12..947c30a1a9 100644 --- a/rileylink/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 @@ -41,8 +41,8 @@ public class RileyLinkStatusGeneralFragment extends DaggerFragment implements Re @Inject DateUtil dateUtil; private TextView connectionStatus; - private TextView configuredAddress; - private TextView connectedRileyLinkName; + private TextView configuredRileyLinkAddress; + private TextView configuredRileyLinkName; private TextView connectedDevice; private TextView connectionError; private TextView deviceType; @@ -63,8 +63,8 @@ public class RileyLinkStatusGeneralFragment extends DaggerFragment implements Re super.onStart(); this.connectionStatus = getActivity().findViewById(R.id.rls_t1_connection_status); - this.configuredAddress = getActivity().findViewById(R.id.rls_t1_configured_address); - this.connectedRileyLinkName = getActivity().findViewById(R.id.rls_t1_connected_riley_link_name); + this.configuredRileyLinkAddress = getActivity().findViewById(R.id.rls_t1_configured_riley_link_address); + this.configuredRileyLinkName = getActivity().findViewById(R.id.rls_t1_configured_riley_link_name); this.connectedDevice = getActivity().findViewById(R.id.rls_t1_connected_device); this.connectionError = getActivity().findViewById(R.id.rls_t1_connection_error); this.deviceType = getActivity().findViewById(R.id.rls_t1_device_type); @@ -85,8 +85,8 @@ public class RileyLinkStatusGeneralFragment extends DaggerFragment implements Re // BS FIXME rileyLinkServiceData is injected so I suppose it cannot be null? if (rileyLinkServiceData != null) { - this.configuredAddress.setText(StringUtils.isEmpty(rileyLinkServiceData.rileylinkAddress) ? PLACEHOLDER : rileyLinkServiceData.rileylinkAddress); - this.connectedRileyLinkName.setText(StringUtils.isEmpty(rileyLinkServiceData.rileyLinkName) ? PLACEHOLDER : rileyLinkServiceData.rileyLinkName); + this.configuredRileyLinkAddress.setText(StringUtils.isEmpty(rileyLinkServiceData.rileyLinkAddress) ? PLACEHOLDER : rileyLinkServiceData.rileyLinkAddress); + this.configuredRileyLinkName.setText(StringUtils.isEmpty(rileyLinkServiceData.rileyLinkName) ? PLACEHOLDER : rileyLinkServiceData.rileyLinkName); this.connectionError.setText(rileyLinkServiceData.rileyLinkError == null ? // PLACEHOLDER : resourceHelper.gs(rileyLinkServiceData.rileyLinkError.getResourceId(targetDevice))); diff --git a/rileylink/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 index 7b4e11fd35..b15da2d175 100644 --- a/rileylink/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 @@ -154,19 +154,19 @@ public abstract class RileyLinkService extends DaggerService { rileyLinkServiceData.setRileyLinkServiceState(RileyLinkServiceState.RileyLinkInitializing); if (rileyLinkBLE.isConnected()) { - if (deviceAddress.equals(rileyLinkServiceData.rileylinkAddress)) { + if (deviceAddress.equals(rileyLinkServiceData.rileyLinkAddress)) { aapsLogger.info(LTag.PUMPBTCOMM, "No change to RL address. Not reconnecting."); return false; } else { - aapsLogger.warn(LTag.PUMPBTCOMM, "Disconnecting from old RL (" + rileyLinkServiceData.rileylinkAddress + aapsLogger.warn(LTag.PUMPBTCOMM, "Disconnecting from old RL (" + rileyLinkServiceData.rileyLinkAddress + "), reconnecting to new: " + deviceAddress); rileyLinkBLE.disconnect(); // prolly need to shut down listening thread too? // SP.putString(MedtronicConst.Prefs.RileyLinkAddress, deviceAddress); - rileyLinkServiceData.rileylinkAddress = deviceAddress; - rileyLinkBLE.findRileyLink(rileyLinkServiceData.rileylinkAddress); + rileyLinkServiceData.rileyLinkAddress = deviceAddress; + rileyLinkBLE.findRileyLink(rileyLinkServiceData.rileyLinkAddress); return true; } } else { @@ -229,7 +229,7 @@ public abstract class RileyLinkService extends DaggerService { if (rileyLinkBLE.isConnected()) { rileyLinkBLE.disconnect(); - rileyLinkServiceData.rileylinkAddress = null; + rileyLinkServiceData.rileyLinkAddress = null; rileyLinkServiceData.rileyLinkName = null; } diff --git a/rileylink/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 index 10eb06373c..ed48733680 100644 --- a/rileylink/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 @@ -34,7 +34,7 @@ public class RileyLinkServiceData { private long lastServiceStateChange = 0L; public RileyLinkFirmwareVersion firmwareVersion; // here we have "compatibility level" version public RileyLinkTargetFrequency rileyLinkTargetFrequency; - public String rileylinkAddress; + public String rileyLinkAddress; public String rileyLinkName; long lastTuneUpTime = 0L; public Double lastGoodFrequency; diff --git a/rileylink/src/main/res/layout/riley_link_ble_config_activity.xml b/rileylink/src/main/res/layout/riley_link_ble_config_activity.xml index f60e1462f2..9746ffb791 100644 --- a/rileylink/src/main/res/layout/riley_link_ble_config_activity.xml +++ b/rileylink/src/main/res/layout/riley_link_ble_config_activity.xml @@ -16,13 +16,26 @@ android:layout_height="wrap_content" android:orientation="horizontal"> - + android:orientation="vertical"> + + + + +