SensoriaHandlerLeft.swift

Purpose

SensoriaHandlerLeft.swift defines a custom handler class for managing connection, scanning, and telemetry for the left Sensoria smart textile device. It manages battery level, connection status, and stream forwarding using a shared central buffer and communicates events to Flutter.


Imports

import Foundation
import CoreBluetooth
import SensoriaiOS
import BoltsSwift
  • CoreBluetooth: Required for low-level BLE device control.

  • SensoriaiOS: Official SDK for Sensoria sensors.

  • BoltsSwift: Optional async task management (not actively used here).


Class: SensoriaHandlerLeft

A subclass of NSObject conforming to SADeviceBluetoothDelegate.


Properties

var eventSink: FlutterEventSink?
var coreIndex: Int = 2
var lastBatteryLevel: UInt8 = 0
var scanTimer: Timer?
var currentLanguageCode: String = "es"
var sacore: SACore!
var centralBuffer: CentralBufferManager
  • eventSink: Optional callback for streaming connection status or telemetry to Flutter.

  • coreIndex: Identifies this core as 2, likely used for Flutter-side mapping.

  • lastBatteryLevel: Tracks last battery value received.

  • scanTimer: Cancels scanning if no device is found in time.

  • currentLanguageCode: Language preference for localization purposes.

  • sacore: Core BLE interface from the Sensoria SDK.

  • centralBuffer: Shared instance for batching and uploading data.


Initializer

init(centralBuffer: CentralBufferManager)
  • Instantiates a new SACore and sets this class as a delegate.

  • Enables BLE callbacks and prepares scanning logic.


Method: updateConnectionStatus(status:)

  • Sends a dictionary of { coreIndex, status } to the Flutter event stream via EventManager.


Method: didBatteryRead(_:)

  • Callback when battery value is received.

  • Updates lastBatteryLevel.


Method: getBatteryLevel()

Returns the most recently cached battery level.


Method: setLocale(languageCode:)

Changes the language context for the handler, if relevant for UI updates or logs.


Method: startScan()

  • Starts BLE scan for left-side device using sacore.startScan().

  • Auto-stops after 10 seconds using a Timer.


Method: stopScan()

Stops the BLE scanning process.


Integration Notes

  • This class is highly modular: you can define additional handler classes for the right foot, hand, or other sensors.

  • Designed to interface natively with Flutter using FlutterEventSink.