fix: 모든 BLE 명령어를 테스터 exe와 동일 포맷으로 통일
테스터(vsbtester) buildPacket() 분석 결과: - 파라미터 있는 명령: 16비트 Big Endian (buildCommandBE) - 파라미터 없는 명령: 공백 0x20 추가 (buildCommandASCII " ") 변경: - mpa, mec, msn, mta, mls → buildCommandBE (BE 파라미터) - mps, maa, mqq, mag, mcj, mid, msp, mbb → buildCommandASCII " " (공백) - maa sendChannelsOnly도 공백 방식으로 통일 (기존 LE [0] 제거) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -306,47 +306,51 @@ class BleManager private constructor(private val context: Context) {
|
||||
// Piezo Commands
|
||||
val piezoCollector = PiezoPacketCollector()
|
||||
|
||||
// ── Piezo Commands (테스터 exe와 동일 포맷: 파라미터=BE, 빈 파라미터=공백) ──
|
||||
|
||||
fun sendPiezoPowerOn(freqOption: Int = 2, cycles: Int = 5) {
|
||||
sendRaw(CRC16.buildCommand("mpa", intArrayOf(freqOption, cycles)))
|
||||
sendRaw(CRC16.buildCommandBE("mpa", intArrayOf(freqOption, cycles)))
|
||||
}
|
||||
|
||||
fun sendPiezoStop() {
|
||||
sendRaw(CRC16.buildCommand("mps"))
|
||||
sendRaw(CRC16.buildCommandASCII("mps", " "))
|
||||
}
|
||||
|
||||
fun sendBurst(freqOption: Int, cycles: Int, delayUs: Int, piezoCh: Int = 0) {
|
||||
sendRaw(CRC16.buildCommand("mec", intArrayOf(freqOption, delayUs, 140, cycles, 1, piezoCh)))
|
||||
sendRaw(CRC16.buildCommandBE("mec", intArrayOf(freqOption, delayUs, 140, cycles, 1, piezoCh)))
|
||||
}
|
||||
|
||||
/** 6-channel measurement (maa) */
|
||||
fun sendAllChannels(mode: Int = 0) {
|
||||
piezoCollector.startMultiChannel(6)
|
||||
sendRaw(CRC16.buildCommand("maa", intArrayOf(mode)))
|
||||
sendRaw(CRC16.buildCommandASCII("maa", " "))
|
||||
}
|
||||
|
||||
// NIRS Commands
|
||||
// ── NIRS Commands ──
|
||||
|
||||
fun sendNirsPowerOn() {
|
||||
sendRaw(CRC16.buildCommand("mta", intArrayOf(1)))
|
||||
sendRaw(CRC16.buildCommandBE("mta", intArrayOf(1)))
|
||||
}
|
||||
|
||||
fun sendNirsPowerOff() {
|
||||
sendRaw(CRC16.buildCommand("mta", intArrayOf(0)))
|
||||
sendRaw(CRC16.buildCommandBE("mta", intArrayOf(0)))
|
||||
}
|
||||
|
||||
fun sendMqqQuery() {
|
||||
sendRaw(CRC16.buildCommand("mqq"))
|
||||
sendRaw(CRC16.buildCommandASCII("mqq", " "))
|
||||
}
|
||||
|
||||
fun sendMagQuery() {
|
||||
sendRaw(CRC16.buildCommand("mag"))
|
||||
sendRaw(CRC16.buildCommandASCII("mag", " "))
|
||||
}
|
||||
|
||||
fun sendMcjQuery() {
|
||||
sendRaw(CRC16.buildCommand("mcj"))
|
||||
sendRaw(CRC16.buildCommandASCII("mcj", " "))
|
||||
}
|
||||
|
||||
// ── Common Commands ──
|
||||
|
||||
fun sendBatteryQuery() {
|
||||
sendRaw(CRC16.buildCommand("msn", intArrayOf(0)))
|
||||
sendRaw(CRC16.buildCommandBE("msn", intArrayOf(0)))
|
||||
}
|
||||
|
||||
fun sendDeviceInfoQuery() {
|
||||
@@ -367,10 +371,10 @@ class BleManager private constructor(private val context: Context) {
|
||||
sendRaw(CRC16.buildCommandASCII("mbb", " "))
|
||||
}
|
||||
|
||||
/** 6채널 측정만 (maa, rbb 헤더 없이 바로 reb×6→raa) */
|
||||
/** 6채널 측정만 (maa) */
|
||||
fun sendChannelsOnly() {
|
||||
piezoCollector.startMultiChannel(6)
|
||||
sendRaw(CRC16.buildCommand("maa", intArrayOf(0)))
|
||||
sendRaw(CRC16.buildCommandASCII("maa", " "))
|
||||
}
|
||||
|
||||
fun startBatteryPolling() {
|
||||
|
||||
Reference in New Issue
Block a user