feat(detection): 데모 METHOD_D dispatch — 사용자앱 (d354a61) 동기화
DetectionMethod.METHOD_D enum 추가 + when 분기 + UI 4-버튼. detection + BV 둘 다 Method D 가능. appshare Python pipeline 일치. - enum DetectionMethod: METHOD_C → +METHOD_D - when (method) METHOD_D 분기: MethodDRunner.detectMultichannel → allWalls - BV path: detectionIsMethodD 일 때 recompute 생략 - Dev panel Detection toggle 3-button → 4-button (D 보라색) Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -12,7 +12,7 @@ package com.example.medilightv2android.managers
|
|||||||
* ⚠ 미세 조정 시 이 파일만 수정하면 전체 파이프라인에 반영됨.
|
* ⚠ 미세 조정 시 이 파일만 수정하면 전체 파이프라인에 반영됨.
|
||||||
* 각 상수의 의미와 영향 범위를 아래 주석 참고.
|
* 각 상수의 의미와 영향 범위를 아래 주석 참고.
|
||||||
*/
|
*/
|
||||||
enum class DetectionMethod { METHOD_A, METHOD_B, METHOD_C }
|
enum class DetectionMethod { METHOD_A, METHOD_B, METHOD_C, METHOD_D }
|
||||||
enum class PlacementGuideMode { SIMPLE, BOUNDARY, SWEEP }
|
enum class PlacementGuideMode { SIMPLE, BOUNDARY, SWEEP }
|
||||||
/**
|
/**
|
||||||
* BV 계산 방법.
|
* BV 계산 방법.
|
||||||
|
|||||||
+24
-4
@@ -407,6 +407,23 @@ fun PiezoMonitoringView(appState: AppState) {
|
|||||||
if (ch.isValid && ch.result != null) Log.d("PiezoMonitor", " CH${ch.channel}[A]: ant=${ch.result.ant} post=${ch.result.post} urine=${ch.result.urineLen}")
|
if (ch.isValid && ch.result != null) Log.d("PiezoMonitor", " CH${ch.channel}[A]: ant=${ch.result.ant} post=${ch.result.post} urine=${ch.result.urineLen}")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
com.example.medilightv2android.managers.DetectionMethod.METHOD_D -> {
|
||||||
|
// 2026-06-30: Detection + BV 통합. MethodDRunner 로 6채널 raw → walls.
|
||||||
|
methodLabel = "D"
|
||||||
|
val signals = (0..5).map { ch ->
|
||||||
|
val cd = channels.find { it.channel == ch }
|
||||||
|
cd?.buffer?.map { it.toDouble() }?.toDoubleArray() ?: DoubleArray(0)
|
||||||
|
}
|
||||||
|
val dets = com.example.medilightv2android.walldetect.MethodDRunner
|
||||||
|
.detectMultichannel(signals)
|
||||||
|
for (i in 0..5) {
|
||||||
|
val r = dets.getOrNull(i)
|
||||||
|
if (r != null) allWalls[i] = Pair(r.ant, r.post)
|
||||||
|
}
|
||||||
|
dets.forEachIndexed { i, r ->
|
||||||
|
if (r != null) Log.d("PiezoMonitor", " CH$i[D]: ant=${r.ant} post=${r.post} urine=${r.urineLen}")
|
||||||
|
}
|
||||||
|
}
|
||||||
else -> {
|
else -> {
|
||||||
methodLabel = "B"
|
methodLabel = "B"
|
||||||
val channelResults = analyzer.analyzeMultiChannelWithTgc(validChannels)
|
val channelResults = analyzer.analyzeMultiChannelWithTgc(validChannels)
|
||||||
@@ -453,9 +470,11 @@ fun PiezoMonitoringView(appState: AppState) {
|
|||||||
com.example.medilightv2android.managers.PiezoHW.distancePerSample).toInt()
|
com.example.medilightv2android.managers.PiezoHW.distancePerSample).toInt()
|
||||||
else 0
|
else 0
|
||||||
|
|
||||||
// 2026-06-30 (사용자앱 동기화): BvMethod.METHOD_D 선택 시 Method D walls 사용.
|
// 2026-06-30: BvMethod.METHOD_D 시 Method D walls 사용. 단 detection 이
|
||||||
|
// 이미 METHOD_D 면 allWalls 가 곧 Method D → recompute 생략.
|
||||||
val useMethodDBv = bvMethodSetting == com.example.medilightv2android.managers.BvMethod.METHOD_D
|
val useMethodDBv = bvMethodSetting == com.example.medilightv2android.managers.BvMethod.METHOD_D
|
||||||
val sourceAllWalls: List<Pair<Int, Int>?> = if (useMethodDBv) {
|
val detectionIsMethodD = method == com.example.medilightv2android.managers.DetectionMethod.METHOD_D
|
||||||
|
val sourceAllWalls: List<Pair<Int, Int>?> = if (useMethodDBv && !detectionIsMethodD) {
|
||||||
val signals = (0..5).map { ch ->
|
val signals = (0..5).map { ch ->
|
||||||
val cd = channels.find { it.channel == ch }
|
val cd = channels.find { it.channel == ch }
|
||||||
cd?.buffer?.map { it.toDouble() }?.toDoubleArray() ?: DoubleArray(0)
|
cd?.buffer?.map { it.toDouble() }?.toDoubleArray() ?: DoubleArray(0)
|
||||||
@@ -1829,9 +1848,10 @@ fun PiezoMonitoringView(appState: AppState) {
|
|||||||
val methods = listOf(
|
val methods = listOf(
|
||||||
com.example.medilightv2android.managers.DetectionMethod.METHOD_A to "A",
|
com.example.medilightv2android.managers.DetectionMethod.METHOD_A to "A",
|
||||||
com.example.medilightv2android.managers.DetectionMethod.METHOD_B to "B",
|
com.example.medilightv2android.managers.DetectionMethod.METHOD_B to "B",
|
||||||
com.example.medilightv2android.managers.DetectionMethod.METHOD_C to "C"
|
com.example.medilightv2android.managers.DetectionMethod.METHOD_C to "C",
|
||||||
|
com.example.medilightv2android.managers.DetectionMethod.METHOD_D to "D"
|
||||||
)
|
)
|
||||||
val colors = listOf(Color(0xFF9C27B0), MlPrimary, Color(0xFFFF5722))
|
val colors = listOf(Color(0xFF9C27B0), MlPrimary, Color(0xFFFF5722), Color(0xFF7C3AED))
|
||||||
Row(horizontalArrangement = Arrangement.spacedBy(4.dp)) {
|
Row(horizontalArrangement = Arrangement.spacedBy(4.dp)) {
|
||||||
methods.forEachIndexed { idx, (m, label) ->
|
methods.forEachIndexed { idx, (m, label) ->
|
||||||
val sel = selectedMethod == m
|
val sel = selectedMethod == m
|
||||||
|
|||||||
Reference in New Issue
Block a user