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
SACoreand 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 viaEventManager.
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.