CAMS v. 1.0 Released

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 a Measurement. This replaces the old DataPoint 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.
  • 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.

Figure 1 – A stacked plot of code in the main CAMS GitHub repository evolving over the years 2018-2023.

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.