- changes on service starting (moved from cnst to onStart method)

- change RileyLinkBLE to stop reader
- added log for start and stop of service
This commit is contained in:
Andy Rozman 2020-05-10 14:08:56 +01:00
parent c00d6344e5
commit 80f5b3cf4b
9 changed files with 112 additions and 105 deletions

View file

@ -114,10 +114,13 @@ public abstract class PumpPluginAbstract extends PumpPluginBase implements PumpI
public abstract void initPumpStatusData(); public abstract void initPumpStatusData();
@Override @Override
protected void onStart() { protected void onStart() {
super.onStart(); super.onStart();
// TODO: moved from constructor .... test if it works
aapsLogger.debug(LTag.PUMP, this.deviceID() + " onStart()");
initPumpStatusData(); initPumpStatusData();
Intent intent = new Intent(context, getServiceClass()); Intent intent = new Intent(context, getServiceClass());
@ -136,6 +139,8 @@ public abstract class PumpPluginAbstract extends PumpPluginBase implements PumpI
@Override @Override
protected void onStop() { protected void onStop() {
aapsLogger.debug(LTag.PUMP, this.deviceID() + " onStop()");
context.unbindService(serviceConnection); context.unbindService(serviceConnection);
serviceRunning = false; serviceRunning = false;

View file

@ -56,7 +56,7 @@ public class RFSpy {
private UUID radioServiceUUID = UUID.fromString(GattAttributes.SERVICE_RADIO); private UUID radioServiceUUID = UUID.fromString(GattAttributes.SERVICE_RADIO);
private UUID radioDataUUID = UUID.fromString(GattAttributes.CHARA_RADIO_DATA); private UUID radioDataUUID = UUID.fromString(GattAttributes.CHARA_RADIO_DATA);
private UUID radioVersionUUID = UUID.fromString(GattAttributes.CHARA_RADIO_VERSION); private UUID radioVersionUUID = UUID.fromString(GattAttributes.CHARA_RADIO_VERSION);
private UUID responseCountUUID = UUID.fromString(GattAttributes.CHARA_RADIO_RESPONSE_COUNT); //private UUID responseCountUUID = UUID.fromString(GattAttributes.CHARA_RADIO_RESPONSE_COUNT);
private RileyLinkFirmwareVersion firmwareVersion; private RileyLinkFirmwareVersion firmwareVersion;
private String bleVersion; // We don't use it so no need of sofisticated logic private String bleVersion; // We don't use it so no need of sofisticated logic
private Double currentFrequencyMHz; private Double currentFrequencyMHz;
@ -421,14 +421,7 @@ public class RFSpy {
} }
public RFSpyResponse resetRileyLink() { public void stopReader() {
RFSpyResponse resp = null; reader.stop();
try {
resp = writeToData(new Reset(), EXPECTED_MAX_BLUETOOTH_LATENCY_MS);
aapsLogger.debug(LTag.PUMPBTCOMM, "Reset command send, response: {}", resp);
} catch (Exception e) {
e.toString();
}
return resp;
} }
} }

View file

@ -29,11 +29,12 @@ public class RFSpyReader {
private int acquireCount = 0; private int acquireCount = 0;
private int releaseCount = 0; private int releaseCount = 0;
private boolean stopAtNull = true; private boolean stopAtNull = true;
private static boolean isRunning = false;
RFSpyReader(AAPSLogger aapsLogger, RileyLinkBLE rileyLinkBle) { RFSpyReader(AAPSLogger aapsLogger, RileyLinkBLE rileyLinkBle) {
this.rileyLinkBle = rileyLinkBle;
this.aapsLogger = aapsLogger; this.aapsLogger = aapsLogger;
setRileyLinkBle(rileyLinkBle);
} }
@ -87,6 +88,8 @@ public class RFSpyReader {
public void start() { public void start() {
isRunning = true;
readerTask = new AsyncTask<Void, Void, Void>() { readerTask = new AsyncTask<Void, Void, Void>() {
@Override @Override
@ -94,7 +97,7 @@ public class RFSpyReader {
UUID serviceUUID = UUID.fromString(GattAttributes.SERVICE_RADIO); UUID serviceUUID = UUID.fromString(GattAttributes.SERVICE_RADIO);
UUID radioDataUUID = UUID.fromString(GattAttributes.CHARA_RADIO_DATA); UUID radioDataUUID = UUID.fromString(GattAttributes.CHARA_RADIO_DATA);
BLECommOperationResult result; BLECommOperationResult result;
while (true) { while (isRunning) {
try { try {
acquireCount++; acquireCount++;
waitForRadioData.acquire(); waitForRadioData.acquire();
@ -129,7 +132,13 @@ public class RFSpyReader {
aapsLogger.error(LTag.PUMPBTCOMM, "Interrupted while waiting for data"); aapsLogger.error(LTag.PUMPBTCOMM, "Interrupted while waiting for data");
} }
} }
return null;
} }
}.execute(); }.execute();
} }
public void stop() {
isRunning = false;
}
} }

View file

@ -101,6 +101,7 @@ public abstract class RileyLinkService extends DaggerService {
super.onDestroy(); super.onDestroy();
//LOG.error("I die! I die!"); //LOG.error("I die! I die!");
rfspy.stopReader();
rileyLinkBLE.disconnect(); // dispose of Gatt (disconnect and close) rileyLinkBLE.disconnect(); // dispose of Gatt (disconnect and close)
if (mBroadcastReceiver != null) { if (mBroadcastReceiver != null) {

View file

@ -160,6 +160,14 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter
this.serviceTaskExecutor = serviceTaskExecutor; this.serviceTaskExecutor = serviceTaskExecutor;
displayConnectionMessages = false; displayConnectionMessages = false;
}
@Override
protected void onStart() {
super.onStart();
aapsLogger.debug(LTag.PUMP, this.deviceID() + " started.");
serviceConnection = new ServiceConnection() { serviceConnection = new ServiceConnection() {
@ -186,12 +194,7 @@ public class MedtronicPumpPlugin extends PumpPluginAbstract implements PumpInter
}).start(); }).start();
} }
}; };
}
@Override
protected void onStart() {
super.onStart();
} }
@Override @Override

View file

@ -187,21 +187,6 @@ public class RileyLinkMedtronicService extends RileyLinkService {
} }
@Override
public String getDeviceSpecificBroadcastsIdentifierPrefix() {
return null;
}
public boolean handleDeviceSpecificBroadcasts(Intent intent) {
return false;
}
@Override
public void registerDeviceSpecificBroadcasts(IntentFilter intentFilter) {
}
public boolean verifyConfiguration() { public boolean verifyConfiguration() {
try { try {
String regexSN = "[0-9]{6}"; String regexSN = "[0-9]{6}";

View file

@ -118,9 +118,10 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump
private Profile currentProfile; private Profile currentProfile;
boolean omnipodServiceRunning = false; //boolean omnipodServiceRunning = false;
private long nextPodCheck = 0L; private long nextPodCheck = 0L;
protected boolean isOmnipodEros = true;
//OmnipodDriverState driverState = OmnipodDriverState.NotInitalized; //OmnipodDriverState driverState = OmnipodDriverState.NotInitalized;
@Inject @Inject
@ -157,71 +158,7 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump
this.omnipodUtil = omnipodUtil; this.omnipodUtil = omnipodUtil;
this.omnipodPumpStatus = omnipodPumpStatus; this.omnipodPumpStatus = omnipodPumpStatus;
//OmnipodUtil.setDriverState(); this.isOmnipodEros = true;
// TODO loop
// if (OmnipodUtil.isOmnipodEros()) {
// OmnipodUtil.setPlugin(this);
// OmnipodUtil.setOmnipodPodType(OmnipodPodType.Eros);
// OmnipodUtil.setPumpType(PumpType.Insulet_Omnipod);
// }
// // TODO ccc
serviceConnection = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
aapsLogger.debug(LTag.PUMP, "RileyLinkOmnipodService is disconnected");
rileyLinkOmnipodService = null;
}
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
aapsLogger.debug(LTag.PUMP, "RileyLinkOmnipodService is connected");
RileyLinkOmnipodService.LocalBinder mLocalBinder = (RileyLinkOmnipodService.LocalBinder) service;
rileyLinkOmnipodService = mLocalBinder.getServiceInstance();
new Thread(() -> {
for (int i = 0; i < 20; i++) {
SystemClock.sleep(5000);
aapsLogger.debug(LTag.PUMP, "Starting Omnipod-RileyLink service");
if (rileyLinkOmnipodService.setNotInPreInit()) {
break;
}
}
// if (OmnipodPumpPlugin.this.omnipodPumpStatus != null) {
//
// aapsLogger.debug(LTag.PUMP, "Starting OmniPod-RileyLink service");
// if (omnipodService.setNotInPreInit()) {
// if (omnipodCommunicationManager == null) {
// omnipodCommunicationManager = AapsOmnipodManager.getInstance();
// omnipodCommunicationManager.setPumpStatus(OmnipodPumpPlugin.this.omnipodPumpStatus);
// omnipodServiceRunning = true;
// } else {
// omnipodCommunicationManager.setPumpStatus(OmnipodPumpPlugin.this.omnipodPumpStatus);
// }
//
// omnipodUtil.setOmnipodPodType(OmnipodPodType.Eros);
// //omnipodUtil.setPlugin(OmnipodPumpPlugin.this);
//
// omnipodUIComm = new OmnipodUIComm(omnipodCommunicationManager, plugin, OmnipodPumpPlugin.this.omnipodPumpStatus);
// break;
// }
// }
//
// SystemClock.sleep(5000);
//}
}).start();
}
};
} }
protected OmnipodPumpPlugin(PluginDescription pluginDescription, PumpType pumpType, protected OmnipodPumpPlugin(PluginDescription pluginDescription, PumpType pumpType,
@ -248,6 +185,76 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump
@Override @Override
protected void onStart() { protected void onStart() {
super.onStart(); super.onStart();
//OmnipodUtil.setDriverState();
// TODO loop
// if (OmnipodUtil.isOmnipodEros()) {
// OmnipodUtil.setPlugin(this);
// OmnipodUtil.setOmnipodPodType(OmnipodPodType.Eros);
// OmnipodUtil.setPumpType(PumpType.Insulet_Omnipod);
// }
// // TODO ccc
if (isOmnipodEros) {
serviceConnection = new ServiceConnection() {
@Override
public void onServiceDisconnected(ComponentName name) {
aapsLogger.debug(LTag.PUMP, "RileyLinkOmnipodService is disconnected");
rileyLinkOmnipodService = null;
}
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
aapsLogger.debug(LTag.PUMP, "RileyLinkOmnipodService is connected");
RileyLinkOmnipodService.LocalBinder mLocalBinder = (RileyLinkOmnipodService.LocalBinder) service;
rileyLinkOmnipodService = mLocalBinder.getServiceInstance();
new Thread(() -> {
for (int i = 0; i < 20; i++) {
SystemClock.sleep(5000);
aapsLogger.debug(LTag.PUMP, "Starting Omnipod-RileyLink service");
if (rileyLinkOmnipodService.setNotInPreInit()) {
break;
}
}
// if (OmnipodPumpPlugin.this.omnipodPumpStatus != null) {
//
// aapsLogger.debug(LTag.PUMP, "Starting OmniPod-RileyLink service");
// if (omnipodService.setNotInPreInit()) {
// if (omnipodCommunicationManager == null) {
// omnipodCommunicationManager = AapsOmnipodManager.getInstance();
// omnipodCommunicationManager.setPumpStatus(OmnipodPumpPlugin.this.omnipodPumpStatus);
// omnipodServiceRunning = true;
// } else {
// omnipodCommunicationManager.setPumpStatus(OmnipodPumpPlugin.this.omnipodPumpStatus);
// }
//
// omnipodUtil.setOmnipodPodType(OmnipodPodType.Eros);
// //omnipodUtil.setPlugin(OmnipodPumpPlugin.this);
//
// omnipodUIComm = new OmnipodUIComm(omnipodCommunicationManager, plugin, OmnipodPumpPlugin.this.omnipodPumpStatus);
// break;
// }
// }
//
// SystemClock.sleep(5000);
//}
}).start();
}
};
}
disposable.add(rxBus disposable.add(rxBus
.toObservable(EventPreferenceChange.class) .toObservable(EventPreferenceChange.class)
.observeOn(Schedulers.io()) .observeOn(Schedulers.io())
@ -261,6 +268,9 @@ public class OmnipodPumpPlugin extends PumpPluginAbstract implements OmnipodPump
rileyLinkOmnipodService.verifyConfiguration(); rileyLinkOmnipodService.verifyConfiguration();
}, fabricPrivacy::logException) }, fabricPrivacy::logException)
); );
//rileyLinkOmnipodService.verifyConfiguration(); //rileyLinkOmnipodService.verifyConfiguration();
//initPumpStatusData(); //initPumpStatusData();
} }

View file

@ -116,12 +116,6 @@ public class RileyLinkOmnipodService extends RileyLinkService {
if (sp.contains(OmnipodConst.Prefs.PodState) && omnipodUtil.getPodSessionState() == null) { if (sp.contains(OmnipodConst.Prefs.PodState) && omnipodUtil.getPodSessionState() == null) {
try { try {
omnipodUtil.loadSessionState(); omnipodUtil.loadSessionState();
// Gson gson = omnipodUtil.getGsonInstance();
// String storedPodState = sp.getString(OmnipodConst.Prefs.PodState, "");
// aapsLogger.info(LTag.PUMPCOMM, "PodSessionState-SP: loaded from SharedPreferences: " + storedPodState);
// podState = gson.fromJson(storedPodState, PodSessionState.class);
// podState.injectDaggerClass(injector);
// omnipodUtil.setPodSessionState(podState);
} catch (Exception ex) { } catch (Exception ex) {
aapsLogger.error(LTag.PUMPCOMM, "Could not deserialize Pod state", ex); aapsLogger.error(LTag.PUMPCOMM, "Could not deserialize Pod state", ex);
} }

View file

@ -152,6 +152,13 @@ public class OmnipodDashPumpPlugin extends OmnipodPumpPlugin implements OmnipodP
} }
@Override
public void onStart() {
this.isOmnipodEros = false;
super.onStart();
}
@Override @Override
public String deviceID() { public String deviceID() {
return "Omnipod Dash"; return "Omnipod Dash";