BLE: 연결 직후 CONNECTION_PRIORITY_HIGH 요청
VBTFW0116 펌웨어가 pending slot 1→8로 확장해 TX queue 포화 시 패킷 보관/재전송으로 ADC 유실을 줄였음. 안드로이드 측에서는 Central의 Link Layer ACK 속도를 끌어올려 펌웨어 TX queue 포화 빈도 자체를 낮추는 방향이 가장 효과적. CCCD write 완료(서비스 ready 시점)에 gatt.requestConnectionPriority(HIGH) 호출. peripheral이 수락하면 connection interval이 ~15ms로 협상되어 한 사이클 응답 시간 단축 가능. 거부되어도 패널티 없음. 실제 적용 여부는 sniffer로만 확인 가능. logcat의 "CONN_PRIORITY HIGH requested (ok=...)" 로 호출 성공 여부만 확인 가능. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -308,6 +308,7 @@ class BleManager private constructor(private val context: Context) {
|
|||||||
onReconnectionFailed?.invoke()
|
onReconnectionFailed?.invoke()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Stop any active reconnect scan first
|
// Stop any active reconnect scan first
|
||||||
reconnectScanCallback?.let { cb ->
|
reconnectScanCallback?.let { cb ->
|
||||||
@@ -835,6 +836,13 @@ class BleManager private constructor(private val context: Context) {
|
|||||||
if (status == BluetoothGatt.GATT_SUCCESS) {
|
if (status == BluetoothGatt.GATT_SUCCESS) {
|
||||||
if (txCharacteristic != null && rxCharacteristic != null) {
|
if (txCharacteristic != null && rxCharacteristic != null) {
|
||||||
isServiceReady.value = true
|
isServiceReady.value = true
|
||||||
|
// Connection priority HIGH 요청: peripheral이 수락하면 interval ~15ms로 협상되어
|
||||||
|
// Central Link Layer ACK 속도 ↑ → FW SoftDevice TX queue 포화 빈도 ↓
|
||||||
|
val priorityOk = try {
|
||||||
|
gatt.requestConnectionPriority(BluetoothGatt.CONNECTION_PRIORITY_HIGH)
|
||||||
|
} catch (_: Exception) { false }
|
||||||
|
logd { "requestConnectionPriority(HIGH) → $priorityOk" }
|
||||||
|
debugLogger.info("CONN_PRIORITY HIGH requested (ok=$priorityOk)")
|
||||||
com.example.medilightv2android.services.AdcCsvLogger.newSession()
|
com.example.medilightv2android.services.AdcCsvLogger.newSession()
|
||||||
com.example.medilightv2android.services.BleForegroundService.start(context)
|
com.example.medilightv2android.services.BleForegroundService.start(context)
|
||||||
startBatteryPolling()
|
startBatteryPolling()
|
||||||
|
|||||||
Reference in New Issue
Block a user