chore(cleanup): NIRS/VIVAMYO 세트 완전 제거 (Category A · 사용자 요청)
배경: NIRS 는 초기 iOS 앱에서 이식했으나 현재 완전 미사용. Piezo 만 실사용.
완전 제거 (6 파일):
· managers/NirsManager.kt (94 L)
· managers/NirsCalcEngine.kt (206 L)
· models/NirsConstants.kt (49 L)
· models/NirsData.kt (106 L · NirsMcjPacket · NirsMagResponse · NirsOxyResult)
· ui/views/monitoring/VivamyoMonitoringView.kt (497 L)
· ui/views/calibration/CalibrationView.kt (216 L) + calibration/ 디렉토리
부분 편집:
· AppState.kt — NirsManager import · NIRS_CALIBRATION/VIVAMYO_MONITORING enum ·
calibrationComplete() · sensor 분기 3곳 (goHome/enterDemoMode/
deviceConnected/backToMonitoring) 모두 PIEZO 로 단순화
· MainActivity.kt — CalibrationView/VivamyoMonitoringView import + Crossfade branch +
back-handler branch 삭제
· BleManager.kt — 콜백 4개 (onNirsPowerOn/SensorActivated/MagReceived/McjReceived) ·
sendRawWrite when-branch 4개 · NIRS Commands 섹션 5 함수 ·
RX branch 4개 삭제
· MeasurementService.kt — performNirsMeasurement 제거 · performMeasurement 단순화 ·
stop() 콜백 정리 · SensorMode 유지 (센서 추가 대비)
· SensorMode.kt — NIRS enum value 삭제 · PIEZO 만 남음 · UserStorage 는
valueOf 실패 시 PIEZO fallback 이라 마이그레이션 불필요
· SensorSelectView.kt — NIRS SensorCard 제거
· strings.xml × 2 — sensor_nirs_desc · calibration_* 10개 · vivamyo_* 17개 삭제
(calibration_continue 는 PiezoPersonalization 사용 → 유지)
합계: 약 1,300 LOC 감소.
빌드: BUILD SUCCESSFUL 17s.
This commit is contained in:
@@ -19,25 +19,11 @@ class MeasurementService private constructor(context: Context) {
|
||||
|
||||
val isMeasuring = mutableStateOf(false)
|
||||
|
||||
// 2026-08-12: NIRS 제거 후 PIEZO 만 남음. 시그니처는 향후 센서 추가 대비 유지.
|
||||
@Suppress("UNUSED_PARAMETER")
|
||||
fun performMeasurement(mode: SensorMode, completion: (Boolean) -> Unit) {
|
||||
isMeasuring.value = true
|
||||
when (mode) {
|
||||
SensorMode.NIRS -> performNirsMeasurement(completion)
|
||||
SensorMode.PIEZO -> performPiezoMeasurement(completion)
|
||||
}
|
||||
}
|
||||
|
||||
// 2026-07-07 fix: MeasurementService 는 singleton. 콜백을 대입만 하고 정리하지 않으면
|
||||
// BleManager 에 stale closure 가 계속 살아있어 이후 응답 이벤트가 이미 완료된
|
||||
// measurement session 의 completion() 을 다시 호출. Self-clearing lambda 로 처리.
|
||||
private fun performNirsMeasurement(completion: (Boolean) -> Unit) {
|
||||
bleManager.onNirsMcjReceived = null // 이전 stale 콜백 해제
|
||||
bleManager.onNirsMcjReceived = { _ ->
|
||||
bleManager.onNirsMcjReceived = null // 응답 1회 처리 후 자동 해제
|
||||
isMeasuring.value = false
|
||||
completion(true)
|
||||
}
|
||||
bleManager.sendMcjQuery()
|
||||
performPiezoMeasurement(completion)
|
||||
}
|
||||
|
||||
private fun performPiezoMeasurement(completion: (Boolean) -> Unit) {
|
||||
@@ -52,8 +38,6 @@ class MeasurementService private constructor(context: Context) {
|
||||
|
||||
fun stop() {
|
||||
isMeasuring.value = false
|
||||
// 대기 중이던 콜백 취소.
|
||||
bleManager.onNirsMcjReceived = null
|
||||
bleManager.onPiezoDataReceived = null
|
||||
bleManager.sendPiezoStop()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user