package com.gnx.earswet /** * Earswet mobile/firmware adapter rule: * candidateValuePresence does not imply rawValueAccess. * If rawValueAccess == false, the app or BLE bridge must not update actual biomarker values. */ data class EarswetDecision( val markerId: String, val rawValueAccess: Boolean, val outputMode: String, val reasonCode: String, val evidencePacketId: String? ) fun shouldUpdateActualValueCharacteristic(decision: EarswetDecision): Boolean { return decision.rawValueAccess && ( decision.outputMode == "full_value" || decision.outputMode == "limited_value" ) }