24 lines
1.0 KiB
Markdown
24 lines
1.0 KiB
Markdown
# 변경 요약 (2026-03-04)
|
|
|
|
이 문서는 현재 `git diff` 기준으로 반영된 변경을 정리합니다.
|
|
|
|
## 1) 시리얼 초기 전송 누락(Startup race) 대응
|
|
|
|
### 변경 파일
|
|
- `app/src/main/java/com/laseroptek/raman/ui/MainActivity.kt`
|
|
- `app/src/main/java/com/laseroptek/raman/ui/screens/main/MainViewModel.kt`
|
|
|
|
### 변경 내용
|
|
- `MainActivity.initialize()`의 시리얼 시작 순서를 조정
|
|
- 이전: `txPacketOnce()` -> `rxPacketLoop()` -> `txPacketLoop()`
|
|
- 이후: `rxPacketLoop()` -> `txPacketOnce()` -> `txPacketLoop()`
|
|
- `MainViewModel.txPacketOnce()`를 코루틴(IO)에서 실행하도록 변경
|
|
- `waitUntilSerialReady()` 추가
|
|
- 최대 2초 동안 20ms 간격으로 `FD != -1` 확인
|
|
- 준비 실패 시 에러 로그 후 초기 TX 중단
|
|
- 관련 설명 주석 추가
|
|
|
|
### 의도/효과
|
|
- 앱 시작 직후 `open()` 완료 전 TX가 먼저 발생하는 레이스를 완화/방어
|
|
- 포트 미준비 상태(`FD == -1`)에서 write가 호출되어 초기 패킷이 누락되는 문제를 줄임
|