Commit graph

1675 commits

Author SHA1 Message Date
Johannes Mockenhaupt
fdc0aea24b
Let CircadianPercentageProfileFragment inherit from SubscriberFragment. 2017-07-21 14:56:14 +02:00
AdrianLxM
31fcf34a2d Fix after merge-conflict cleanup 2017-07-21 11:59:36 +02:00
PoweRGbg
059e58c640 Files renamed 2017-07-21 11:55:12 +02:00
Milos Kozak
c68eccc328 Merge pull request #306 from boikonur/dev 2017-07-20 20:49:35 +02:00
Boyko Kazakov
3b1407b8dd Added icons for home, actions and care portal screens 2017-07-20 20:57:45 +03:00
Radoslav Radev
3098f0bdfa update bg translation 2017-07-20 09:24:35 +03:00
AdrianLxM
42263e979e synchronize interval access from other classes 2017-07-20 02:43:01 +02:00
AdrianLxM
b72482601e remove unnecessary semicolons 2017-07-20 01:06:41 +02:00
AdrianLxM
1ba11ed006 spanish emptiy string 2017-07-20 01:06:21 +02:00
AdrianLxM
b5cb68be73 remove extra strings 2017-07-20 01:06:00 +02:00
AdrianLxM
6daff6fae9 self asignment -> comment 2017-07-20 01:05:25 +02:00
AdrianLxM
c35b7bb9d6 string comparison 2017-07-20 01:05:05 +02:00
AdrianLxM
03ad898562 Merge branch 'dev' into on-resume-update-gui 2017-07-20 00:17:32 +02:00
AdrianLxM
98bb792264 Add color of chart to corresponding lables/scale 2017-07-19 23:46:32 +02:00
Johannes Mockenhaupt
a1564d5bb7
RuffyScripter: only set connected variable in rtConnected, rtDisconnected.
Hopefully fixes intermittent failures to close the connection, as
idleDisconnectMonitorThread sometimes fails to disconnect
because connected == false.
2017-07-19 21:45:28 +02:00
Johannes Mockenhaupt
e322b15e1c
debug: setTbrPercent: 5 minute head start 2017-07-19 21:45:28 +02:00
Johannes Mockenhaupt
a55756367f
ComboPlugin: use CommandResult.completionTime for treatment entries. 2017-07-19 21:45:28 +02:00
Johannes Mockenhaupt
a8ecc85429
ConfigBuilderPlugin.applyApsResult: more verbose logging
Log whether the pump was asked to set a TBR if if that is skipped
since the pump still runs the requested TBR and for how long.
2017-07-19 21:45:28 +02:00
Johannes Mockenhaupt
1cf6448b0e
Add CommandResult.completionTime field and set it in RuffyScripter when the command has finished executing. 2017-07-19 21:45:28 +02:00
Johannes Mockenhaupt
97733848e7
SetTbrCommand: replace static wait with dynamic wait to have completionDate more accurate. 2017-07-19 21:45:28 +02:00
Johannes Mockenhaupt
467cf1e6ed
Pass pre-cmd pump state to command, log it. 2017-07-19 21:45:28 +02:00
Johannes Mockenhaupt
a7c77bc177
Add "pump error (message)" as a field in Combo fragement. 2017-07-19 21:45:28 +02:00
Johannes Mockenhaupt
8cdd604b84
Merge remote-tracking branch 'origin/dev' into combo
* origin/dev:
  bulgarian removed non-translatable
  synchronize interval access
  nsclient remove debug data that puts stress on the broadcast system 3
  nsclient remove debug data that puts stress on the broadcast system 2
  nsclient remove debug data that puts stress on the broadcast system
  Align OpenAS(A)MA fragments with layout of other fragments.
  local broadcasts better setting title
  setting to disable local broadcasts in NSClient
  removed some "unneeded" translations
  wear tdd weighted
  wear TDD status
  wear menu simplification
  Translated latest additions strings.xml
  ns client quickfix now catch all
  NS client quickfix - catch even more
  catch TransactionTooLargeException
  TT new "old" logic for temp targets
  TT refactor OverlappingIntervals to two classes with an abstract superclass Intervals

# Conflicts:
#	app/src/main/res/values/strings.xml
2017-07-19 19:54:50 +02:00
AdrianLxM
732e225c7d bulgarian removed non-translatable 2017-07-19 19:50:40 +02:00
AdrianLxM
f220bb034e Merge pull request #286 from AdrianLxM/temp-target-logic
Temp target logic
2017-07-19 19:33:17 +02:00
AdrianLxM
e51954cec3 Merge pull request #292 from AdrianLxM/wear-tdd
Wear tdd
2017-07-19 19:05:41 +02:00
Milos Kozak
3475b64e1b Merge pull request #299 from MilosKozak/dev-nsclient-quickfix
NSClient quickfix
2017-07-19 18:53:38 +02:00
AdrianLxM
76990b7983 synchronize interval access 2017-07-19 17:39:55 +02:00
Milos Kozak
62ff62a31f Merge pull request #290 from PoweRGbg/patch-1 2017-07-19 17:21:15 +02:00
AdrianLxM
e6ce35485a nsclient remove debug data that puts stress on the broadcast system 3 2017-07-19 16:09:34 +02:00
AdrianLxM
621c32d832 nsclient remove debug data that puts stress on the broadcast system 2 2017-07-19 16:06:36 +02:00
AdrianLxM
c1e030d789 nsclient remove debug data that puts stress on the broadcast system 2017-07-19 16:05:13 +02:00
Johannes Mockenhaupt
c95879e6ad
Align OpenAS(A)MA fragments with layout of other fragments.
Removes a margin that makes the top elements jump up and
down when flipping through tabs.
2017-07-19 12:32:18 +02:00
Johannes Mockenhaupt
7b16716b65
Clean up statusSumary, command result and pump status. 2017-07-19 01:53:37 +02:00
Johannes Mockenhaupt
485b99e260
Show last command and pump state better in the Combo tab.
Gets rid of unhelpful "Unknown error" messaegs.
2017-07-19 01:33:19 +02:00
Johannes Mockenhaupt
5aacf8410d
Fix CancelTbrCommand to return command resutlt not in PumpState but as part of the CommandResult object. 2017-07-19 01:30:26 +02:00
Johannes Mockenhaupt
825a87f474
Use OpenAPS-requested duration for TBRs. 2017-07-18 23:57:48 +02:00
AdrianLxM
cfe8e0a23a local broadcasts better setting title 2017-07-18 22:18:10 +02:00
AdrianLxM
c753873769 setting to disable local broadcasts in NSClient 2017-07-18 22:15:17 +02:00
Johannes Mockenhaupt
9927ab4989
Raise an error upon attempting to cancel a TBR when none is active. 2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
14d7043600
Skip fetching initial pump state if ruffy service isn't ready yet. 2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
f3b508ba2d
Combo tab: refresh on resume
Since we're not getting events when the fragement is not displayed,
since we're unregistering from event in onPause.
2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
3b287df77d
Check active menu again when retrying inputs. 2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
abf9566476
Log exception 2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
ebe14fb0cf
BolusCommand: deal with blinking values.
How did this not trigger with all the  boluses I've issued so far?
2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
7fe9ad7910
Add retries for inputing values.
Rarely there seem to be timing issues and e.g.
10 button down presses to go from 100% to 0% only goes down to 20%.
Retry two more times in that case, restarting the input process on the
active screen (bolus input, tbr percent/duration input).
2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
e52c2a857c
RuffyScripter: log command execution time. 2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
7dda253b88
RuffyScripter: when pump is suspended fail all commands but ReadPumpState.
Safest way for v1 (which I'm trying to stabilize, not rework ;-) ).
2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
bd14b399d5
Comment. 2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
b4950b3037
Provide suspended state information to AAPS.
AAPS seems to still try to issue commands (like cancel TBR,
though none is running?)), despite showing "Pump suspended"
on the home screen.
With the DanaR, AAPS also tries to run commands when the
pump is suspended, but there, the treatment is logged
as being administered despite the pump not having done that.

Here, the pump response with success=false, enacted=false,
which causes the ComboPlugin class to NOT create any
treatments. No errors are raised, as this is considered a regular
state: no treatments are enacted, overview screen shows
"pump suspended" and the combo beeping away.
That AAPS still tries to issue TBR commands ... that's AAPS'
problem for now. Buttons to issue boluses are hiden though.
2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
55e7006967
Remove superfluous code (state is always set later in controlling thread). 2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
599f3ce23c
Order methods in the order they're called, start Alerter service earlier to make sure it can catch early errors. 2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
487e9deb88
Set an error state when the ruffy service can't be bound.
See code comment.
2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
02a9ed6eda
Set an active command before establishing a connection.
Otherwise the disconnect thread will close the connection
due to inactivity. We could add a variable 'isConnecting',
but I'm not sure if adding another (ruffy-) global state
variable will make things simpler to grasp.
2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
c37310685a
Don't count the time establishing a connection towards a command timeout.
Note: connection timeouts are also dealt with. They're now (cleanly)
separated: connect- and command-timeouts.

If the pump's display is one due to the user interacting with the pump
directly, the pump needs a display timeout before being ready for an
incoming connection. What I'm trying to say is, it might take some time,
maybe up to 30s to establish a connection in that cause and can thus
easily create a false timeout error.
2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
36966c8907
Handle the pump being stopped: don't treat it like an error, but don't execute commands either. 2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
222ad0a527
Improve display of error state in Combo tab. 2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
7fa59c6c16
Combo tab: we have set a TBR duration, we're not showing how much time is remaing, but what has been set. 2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
e9fa9b1788
Silly me, of course fragments (and everything else) are recreated by Android all the time. 2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
29e7ea1966
Don't ignore user requests to update pump data, tweak alerter. 2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
338d29630c
Notes from manual timing test (yeah, new timeout code seems to work). 2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
af4ec4d072
BolusCommand: fix contstraint check (doh!) 2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
5f43f0f147
* Fix stale data in Combo tab after error
* Add info about last command ran to the Combo tab
* Don't refresh data more than once a minute.
* Specify not only error, but also command that raised the error in
  alert notification
2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
4dc38e447a
Add first ruffyscripter test (needs ruffy to be available during test somehow). 2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
ac10bdc01c
First stab at dynamic timeout. 2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
44ae79bd50
Move command argument checking out of ctor into a dedicated method and check prior to execution. 2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
6faa1614ac
ComboFragment: rename Update Button to Refresh. 2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
5fad9b3a85
Cleanups. 2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
20a8350c67
Robustness for RuffyScripter. 2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
aa98864d65
... this should have gone into earlier commit, the UI one? 2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
ecf3866b43
Improve alerter. 2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
c131280e91
RuffyScripter.verifyMenuIsDisplayed: don't call waitForMenuUpdate, menu should already be displayed. If not, wait up to 1 second. 2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
ccffa3bfca
Add alerter thread to ComboPlugin that raises an alarm every 6 minutes (Android will by default silence alarms that go off within less than 5 minutes) when the pump state shows an error condition. 2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
362c3681d5
Clean up commands package. 2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
c63c86f98a
RuffyScripter improvements:
* Keep track of connection status rather than relying in IRuffyService.isConnected
* Abort running command if pump stops sending menu updates
* Fail if ruffy goes away (binding becomes invalid), currently only if this happens during disconnect attempts
2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
52b9621e29
Paranoia: check we're in the expected menu before each and every button press. 2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
d619796019
Improving pump status in the UI (combo tab) 2017-07-18 21:20:40 +02:00
Johannes Mockenhaupt
f7586268c7
Dead code be gone. 2017-07-18 21:20:39 +02:00
Johannes Mockenhaupt
93c0147b23
RuffyScripter: take over connection management. Disconnect after 5s of inactivity. Plus some fixes. 2017-07-18 21:20:39 +02:00
Johannes Mockenhaupt
b954ddaa84
Clean up ComoPlugin a bit. 2017-07-18 21:20:39 +02:00
Johannes Mockenhaupt
ccd81c67fd
UI for pump state. 2017-07-18 21:20:39 +02:00
Johannes Mockenhaupt
2ddccd3c31
RuffyScripter.runCommand: Next shot at understanding threading better. 2017-07-18 21:20:39 +02:00
Johannes Mockenhaupt
83e9ec743e
Properly accessing volatile field pumpState. 2017-07-18 21:20:39 +02:00
Johannes Mockenhaupt
69e560baee
Cleanup. 2017-07-18 21:20:39 +02:00
Johannes Mockenhaupt
4c0944b9f8
Optimize cancelling TBR. 2017-07-18 21:20:39 +02:00
Johannes Mockenhaupt
3aecf0f58b
Be more cautious handling command failures. 2017-07-18 21:20:39 +02:00
Johannes Mockenhaupt
8dd714b390
UI crimes 2017-07-18 21:20:39 +02:00
Johannes Mockenhaupt
8ecf6922f7
Misc improvements:
* Make command execution (RuffyScripter/ComoboPlugin.runCommand) more robust (I still suck at threading).
* Return all possible states in PumpState
* Add absolute TBR to PumpState
* Add NoOpCommand to fetch state data from pump
* Display returned pump state in Combo fragment/tab.
2017-07-18 21:20:39 +02:00
Johannes Mockenhaupt
f251427d1b
Remove ReadStateCommand, all state will be return through the PumpState field on CommandResult, so it's passed back after every command. 2017-07-18 21:20:39 +02:00
Johannes Mockenhaupt
ec6491fcb7
Return absolute TBR rate in PumpState. 2017-07-18 21:20:39 +02:00
Johannes Mockenhaupt
69b98c54c6
Polish. 2017-07-18 21:20:39 +02:00
Johannes Mockenhaupt
9653af5501
RuffyScripter.navigateToMenu: detect if we're wrapping around not finding a menu (likely because it's hidden) 2017-07-18 21:20:39 +02:00
Johannes Mockenhaupt
7e538cbcf6
Update PumpState s/errorCode/errorMsg/g 2017-07-18 21:20:39 +02:00
Johannes Mockenhaupt
99830b05b6
Fix detecting error state on connection and fix cancelling TBR.
When there's an error, timing is crucial. Waiting for the blinking error code
to be readable hangs the thread running the command.
2017-07-18 21:20:39 +02:00
Johannes Mockenhaupt
f6c8f3638b
Reflect reject TBR change in comment. 2017-07-18 21:20:39 +02:00
Johannes Mockenhaupt
4ff81e885c
Simplify reading alerts (message doesn't blink) 2017-07-18 21:20:39 +02:00
Johannes Mockenhaupt
e01e85c54f
On connect, check if pump is in an error state. 2017-07-18 21:20:39 +02:00
Johannes Mockenhaupt
364123c261
Fix carb only treatment. 2017-07-18 21:20:39 +02:00
Johannes Mockenhaupt
d0dabf34da
Fix handling TBR CANCELLED alert, remove ill-advised attempts to fake a command queue and have all commands return a state object. 2017-07-18 21:20:39 +02:00
Johannes Mockenhaupt
952aa0e8a2
RuffyScripter.waitForMenuToBeLeft: add timeout. 2017-07-18 21:20:39 +02:00
Johannes Mockenhaupt
77711b2174
ComboPlugin.runCommand: wait if pump is busy with a command. 2017-07-18 21:20:39 +02:00
Johannes Mockenhaupt
d8011aeaa4
Make cancelling TBR more robust to dismiss TBR cancelled alert specifially and only if it is raised.
Cancelling a TBR with a runtime < 60s (0:01 in the display) does NOT raise a TBR cancelled alert.
2017-07-18 21:20:39 +02:00
Johannes Mockenhaupt
2c706e7c22
Remove status logging in Ruffy, now done by command. 2017-07-18 21:20:39 +02:00
Johannes Mockenhaupt
8bc4cd255a
Don't close connection when other cmds are about to be run. 2017-07-18 21:20:39 +02:00
Johannes Mockenhaupt
f5ef666061
Add timestamp to State and rename to PumpState. 2017-07-18 21:20:39 +02:00
Johannes Mockenhaupt
f28a27a93f
Read pump state. 2017-07-18 21:20:39 +02:00
Johannes Mockenhaupt
9d8d12fcb9
Cleanups. 2017-07-18 21:20:39 +02:00
Johannes Mockenhaupt
eab9d8dcd7
Fix reducing duration of OpenAPS TBRs 2017-07-18 21:20:39 +02:00
Johannes Mockenhaupt
e76524a539
Include state in CommandResult.toString. 2017-07-18 21:20:39 +02:00
Johannes Mockenhaupt
375eb46695
ReadStateCommand: properly read TBR %. 2017-07-18 21:20:39 +02:00
Johannes Mockenhaupt
fa039e6961
Note on cancelling TBRs that don't trigger a pump alert. 2017-07-18 21:20:18 +02:00
Johannes Mockenhaupt
0345a01fc1
Make CancelTbrCommand more robust. 2017-07-18 20:59:56 +02:00
Johannes Mockenhaupt
30fc385970
Apply pump specific modifications to OpenAPS suggestion in ComboPlugin. 2017-07-18 20:59:56 +02:00
Johannes Mockenhaupt
5631488cc8
Add ReadStateCommand. 2017-07-18 20:59:56 +02:00
Johannes Mockenhaupt
8b21bb1203
Skip TBR changes smaller than 20%.
~50 TBR changes in a 6 hour night seem excessive, even if pump was
handicapped by not being connected and thus not having any effect
to work with.
2017-07-18 20:59:56 +02:00
Johannes Mockenhaupt
a2b3c26b33
Log pump status on connect. 2017-07-18 20:59:56 +02:00
Johannes Mockenhaupt
347890496b
SetTbrCommand: wain for menu update when switching to TBR_DURATION to make it safer, hopefully. 2017-07-18 20:59:56 +02:00
Johannes Mockenhaupt
8c107cb48a
RuffyScripter: Log button presses. 2017-07-18 20:59:56 +02:00
Johannes Mockenhaupt
df58b6d1c2
CancelTbrCommand: log running TBR to be cancelled. 2017-07-18 20:59:56 +02:00
Johannes Mockenhaupt
8e2cd844a5
Round requested absolute TBR to percent TBR. 2017-07-18 20:59:56 +02:00
Johannes Mockenhaupt
a21da8aba7
Remove pointless events about connection status. 2017-07-18 20:59:56 +02:00
Johannes Mockenhaupt
848a32eade
Logging cleanup. 2017-07-18 20:59:56 +02:00
Johannes Mockenhaupt
9674db8d85
CancelTbrCommand: set enacted=true, even when there was no TBR to cancel.
This helps recover when there was an issue. AAPS thinks there's a TBR
running and by reporting back 'enacted', the plugin will create a
"Cancel temp" treatment.
2017-07-18 20:55:48 +02:00
Johannes Mockenhaupt
264e252300
Set last command date.
Though this is only relevant when starting to fetch data from the pump.
2017-07-18 20:55:48 +02:00
Johannes Mockenhaupt
336315823e
ComboPlugin.getBaseBasalRate: return profile value. 2017-07-18 20:55:48 +02:00
Johannes Mockenhaupt
0729d7a114
RuffyScripter: Abort a running command after 90s timeout 2017-07-18 20:55:47 +02:00
Johannes Mockenhaupt
f34fed1f05
Semi-fix bolusing not logging a treatment when there was an error. 2017-07-18 20:55:47 +02:00
Johannes Mockenhaupt
e29ef5ffce
Update treatment history when setting/cancelling a TBR. 2017-07-18 20:55:47 +02:00
Johannes Mockenhaupt
a27bb28e87
ComboPlugin.deliverTreatment: return command message as comment in PumpEnactResult.
Important when there's an error.
2017-07-18 20:55:47 +02:00
Johannes Mockenhaupt
d35d93ed44
RuffyScripter.verifyMenuIsDisplayed: wait a bit longer if needed.
Sometimes the pump seems to take a bit longer.
2017-07-18 20:55:47 +02:00
Johannes Mockenhaupt
76578872d1
ComoPlugin.deliverTreatment: take more time.
Even if not interacting with the pump, AAPS calculator doesn't dismiss the
dialog if we return within the first 5s.
2017-07-18 20:55:47 +02:00
Johannes Mockenhaupt
d39d58913d
Implement #8, add treatment to history. 2017-07-18 20:55:47 +02:00
Johannes Mockenhaupt
e07d62bf79
Fix setting TBR when existing TBR has runtime < 15m. 2017-07-18 20:55:47 +02:00
Johannes Mockenhaupt
97f9e99437
toString methods for Commands. 2017-07-18 20:55:47 +02:00
Johannes Mockenhaupt
1c1a28f0a8
Ignore requests to issue BolusCommands for zero units. 2017-07-18 20:55:47 +02:00
Johannes Mockenhaupt
5f1ab4e45c
Set duration in PumpEnactResult when issuing SetTbrCommand. 2017-07-18 20:55:47 +02:00
Johannes Mockenhaupt
6842abd157
Provide fake current basal rate. 2017-07-18 20:55:47 +02:00
Johannes Mockenhaupt
3b50a5ae70
Update Combo PumpDescription w.r.t extended bolus. 2017-07-18 20:55:47 +02:00
Johannes Mockenhaupt
1f5c03b64e
Cleanups. 2017-07-18 20:55:47 +02:00
Johannes Mockenhaupt
7cb0268afc
Disconnect after issuing comand to Combo. 2017-07-18 20:55:47 +02:00
Johannes Mockenhaupt
3280092566
Source ruffy scripter for the time being (already some fixes and tweaks in). 2017-07-18 20:55:44 +02:00
Johannes Mockenhaupt
481c63fa57
Initial work on the ComboPlugin. 2017-07-18 20:54:59 +02:00
Johannes Mockenhaupt
ab9908438e
Add Combo short name. 2017-07-18 20:54:57 +02:00
Milos Kozak
30b7697002
adjust combo driver for latest changes 2017-07-18 20:54:14 +02:00
Milos Kozak
e9f5241821
add missing interface functions to combo 2017-07-18 20:54:14 +02:00
Milos Kozak
253c2a34e5
combo plugin skeleton 2017-07-18 20:54:13 +02:00
PoweRGbg
c3f85faede removed some "unneeded" translations 2017-07-18 18:10:24 +03:00
AdrianLxM
c79a5725fd Update InsulinFastactingProlongedFragment.java
... in case DIA has changed.
2017-07-18 13:19:43 +02:00
AdrianLxM
741f6bd866 Update InsulinFastactingFragment.java
... in case DIA has changed
2017-07-18 13:18:41 +02:00
Johannes Mockenhaupt
435ec55580
Extract SubscriberFragment base class. 2017-07-18 12:59:25 +02:00