diff --git a/app/src/main/java/com/example/medilightv2android/ble/BleManager.kt b/app/src/main/java/com/example/medilightv2android/ble/BleManager.kt index fa14a96..20cab69 100644 --- a/app/src/main/java/com/example/medilightv2android/ble/BleManager.kt +++ b/app/src/main/java/com/example/medilightv2android/ble/BleManager.kt @@ -354,7 +354,7 @@ class BleManager private constructor(private val context: Context) { } fun sendLedMode(state: Int) { - sendRaw(CRC16.buildCommandASCII("mls", " $state")) + sendRaw(CRC16.buildCommandBE("mls", intArrayOf(state))) } fun sendImuQuery() { diff --git a/app/src/main/java/com/example/medilightv2android/ble/CRC16.kt b/app/src/main/java/com/example/medilightv2android/ble/CRC16.kt index 28cdbe9..689b2ba 100644 --- a/app/src/main/java/com/example/medilightv2android/ble/CRC16.kt +++ b/app/src/main/java/com/example/medilightv2android/ble/CRC16.kt @@ -54,6 +54,17 @@ object CRC16 { return appendCRC("$cmd?$asciiParams".toByteArray(Charsets.UTF_8)) } + /** 파라미터를 16비트 Big Endian으로 추가 (펌웨어 테스터와 동일 포맷) */ + fun buildCommandBE(cmd: String, params: IntArray = intArrayOf()): ByteArray { + val cmdBytes = "$cmd?".toByteArray(Charsets.UTF_8) + val paramBytes = ByteArray(params.size * 2) + for (i in params.indices) { + paramBytes[i * 2] = ((params[i] shr 8) and 0xFF).toByte() // High byte first + paramBytes[i * 2 + 1] = (params[i] and 0xFF).toByte() // Low byte + } + return appendCRC(cmdBytes + paramBytes) + } + fun buildSimpleCommand(cmd: String): ByteArray { return appendCRC(cmd.toByteArray(Charsets.UTF_8)) }