StatusUpdateManager.swift

Purpose

StatusUpdateManager.swift is a centralized singleton manager that tracks and serializes runtime sensor status for MetaWear and Sensoria devices. It serves as a bridge between native sensor handlers and Flutter, helping present real-time device status.


Singleton Pattern

static let shared = StatusUpdateManager()

Used app-wide to access live status data from any part of the iOS native layer.


Key Properties

var metaWearData = StatusUpdateMetaWearData()
var sensoriaData = StatusUpdatSensoriaData()
  • metaWearData: Holds live status fields for MetaWear devices.

  • sensoriaData: Same for Sensoria smart garments.


Core Methods

getMetaWearCurrentStatus(deviceIndex:)

func getMetaWearCurrentStatus(deviceIndex: Int) -> String
  • Returns a JSON string representing the device’s current runtime state.

  • Delegates JSON building to StatusUpdateMetaWearData.

getSensoriaCurrentStatus(deviceIndex:)

func getSensoriaCurrentStatus(deviceIndex: Int) -> String
  • Mirrors the MetaWear version for Sensoria garments.


JSON Utility

static func serializeToJson(_ statusMap: [String: Any]) -> String
  • Converts a key-value statusMap into a well-formed JSON string.

  • Logs serialized output for debugging.

  • Returns a JSON string or error message if serialization fails.

Example:

{
  "battery": 92,
  "streaming": true,
  "lastUpdate": "2025-07-17T18:00:00Z"
}

Integration

  • Sensor handlers populate metaWearData and sensoriaData fields.

  • When Flutter queries for status, these methods provide serialized snapshots.

  • Ensures real-time visibility and fault tracing for BLE sensors.