HealthAdvertisementData

data class HealthAdvertisementData(val deviceId: String, val timestamp: Long, val heartRate: Int? = null, val skinTemperature: Float? = null, val ambientTemperature: Float? = null, val stepCount: Long = 0, val activityIntensity: Int = 0, val accumulatedActivity: Float = 0.0f, val batteryLevel: Int? = null, val isOnBody: Boolean = true, val fallDetected: Boolean = false, val hrvRMSSD: Float? = null, val hrvScore: Int? = null, val stressLevel: Int? = null, val mlModelState: Int? = null, val mlRiskLevel: Int? = null, val mlConfidence: Int? = null)

Estructura de datos optimizada para transmitir información de salud via Bluetooth LE. Con datos de actividad física

Esta clase implementa un formato PHY codec personalizado para máxima eficiencia, permitiendo transmitir métricas de salud y actividad en solo 31 bytes (límite BLE).

Formato del paquete:

  • Header (4 bytes): Magic number (2) + Version (1) + Flags (1)

  • Device ID (4 bytes): Hash del identificador único

  • Timestamp (4 bytes): Tiempo en segundos desde epoch

  • Datos variables: Según flags activos

Constructors

Link copied to clipboard
constructor(deviceId: String, timestamp: Long, heartRate: Int? = null, skinTemperature: Float? = null, ambientTemperature: Float? = null, stepCount: Long = 0, activityIntensity: Int = 0, accumulatedActivity: Float = 0.0f, batteryLevel: Int? = null, isOnBody: Boolean = true, fallDetected: Boolean = false, hrvRMSSD: Float? = null, hrvScore: Int? = null, stressLevel: Int? = null, mlModelState: Int? = null, mlRiskLevel: Int? = null, mlConfidence: Int? = null)

Types

Link copied to clipboard
object Companion

Properties

Link copied to clipboard

Actividad acumulada con decaimiento (0-100)

Link copied to clipboard

Nivel de actividad física (0-4)

Link copied to clipboard

Temperatura ambiente en °C

Link copied to clipboard
val batteryLevel: Int? = null

Nivel de batería en % (0-100)

Link copied to clipboard

Identificador único del dispositivo

Link copied to clipboard
val fallDetected: Boolean = false

Si se detectó una caída

Link copied to clipboard
val heartRate: Int? = null

Frecuencia cardíaca en BPM (0-255)

Link copied to clipboard
val hrvRMSSD: Float? = null

HRV principal (convertido a Float para eficiencia)

Link copied to clipboard
val hrvScore: Int? = null

Score HRV (0-100)

Link copied to clipboard
val isOnBody: Boolean = true

Si el dispositivo está en la muñeca

Link copied to clipboard
val mlConfidence: Int? = null
Link copied to clipboard
val mlModelState: Int? = null
Link copied to clipboard
val mlRiskLevel: Int? = null
Link copied to clipboard
val skinTemperature: Float? = null

Temperatura corporal en °C

Link copied to clipboard
val stepCount: Long = 0

Contador de pasos del día

Link copied to clipboard
val stressLevel: Int? = null

Nivel de estrés (0=bajo, 4=muy alto)

Link copied to clipboard

Marca de tiempo en milisegundos

Functions

Link copied to clipboard
private fun calculateFlags(): Int

Calcula los flags según los datos presentes

Link copied to clipboard

Calcula el tamaño estimado en bytes del paquete

Link copied to clipboard

Convierte los datos a un array de bytes optimizado para transmisión BLE

Link copied to clipboard

Genera un resumen legible de los datos

Link copied to clipboard

Valida que los datos estén en rangos válidos