Newer
Older
Endoscope / app / src / main / java / com / casic / endoscope / extensions / Int.kt
package com.casic.endoscope.extensions

import kotlin.math.abs

fun Int.createHorizontalCommand(): ByteArray {
    val temp = this * 100

    val hData1 = temp shr 8
    val hData2 = temp - (hData1 shl 8)
    val hSum = (0x01 + 0x4B + hData1 + hData2) % 0x100
    return byteArrayOf(
        0xFF.toByte(),
        0x01,
        0x00, 0x4B,
        hData1.toByte(),
        hData2.toByte(),
        hSum.toByte()
    )
}

fun Int.createVerticalCommand(): ByteArray {
    val temp = if (this < 0) {
        36000 - abs(this) * 100
    } else {
        this * 100
    }

    val vData1 = temp shr 8
    val vData2 = temp - (vData1 shl 8)

    val vSum = (0x01 + 0x4D + vData1 + vData2) % 0x100
    return byteArrayOf(
        0xFF.toByte(),
        0x01,
        0x00, 0x4D,
        vData1.toByte(),
        vData2.toByte(),
        vSum.toByte()
    )
}