A new major and stable (non-beta) release of CARP Mobile Sensing is now available (version 1.0). This release has several new and improved features:
- First and foremost, CAMS v. 1.0 complies with the CARP Core v. 1.0 domain model.
- Accordingly, different domain classes have been updated, including measures, tasks, task controls, sampling configurations, sampling schemes, etc.
- The new data sub-system has been implemented in CAMS. This entails:
- Sampled data is now stored as
Data
objects which again are stored as part of aMeasurement
. This replaces the oldDataPoint
data model. - Measurements are streamed to the app and/or a CAWS data manager.
- A CARP data manager comes with a buffering mechanism and can be configured only to upload when the phone is connected to WiFi.
- Sampled data is now stored as
- A
Heartbeat
measurement has been added, which sends a measure every 5 minutes for each device (incl. the phone) if connected. This can be used to retrospectively check if sampling has been running (typically used in our so-called Coverage tests). - The device model has been significantly improved, allowing for flexible handling of BLE-connected devices, including handling permissions and connectivity.
There are many more changes – please check the ChangeLog on pub.dev. The CAMS wiki is also updated to reflect this release’s changes and new features.
Both the CARP Mobile Sensing App and the Pulmonary Monitor App are updated to show how to use both passive sensing and active collection of user-generated data, respectively.
One goal of this release has also been to significantly reduce the complexity of the rather advanced software architecture of CAMS. Before this release, setting up the CAMS runtime, configuring it, and starting sampling would entail a lot of coding. Now, this can be done in one line of code:
SmartPhoneClientManager().configure().then(() => SmartPhoneClientManager()
.addStudyProtocol(protocol)
.then(() => SmartPhoneClientManager().start()));
History
CARP Mobile Sensing was initiated in the summer of 2018 as part of the UBISS 2018 Summer School in Oulu. Since then, CAMS has evolved over several releases and has been subject to a series of major refactoring. The plot below illustrates the evolution of the code in the main CAMS GitHub repository.
As shown in the plot, the code base has been subject to major changes over time and most code is being replaced and/or refactored as time goes by. Also, we can note that the size of the repro was almost 40 KLOS in 2021 but has now come down to 25 KLOS – a significant simplification of the whole framework.