package com.hboxs.serialport.sbc

import android.util.Log

/**
 * 后台参数数据
 */
object SBCHeartbeat {

    //sbc 是否初始化成功  默认为不成功
    var initIsSuccess: Boolean = false

    var devCode: String = ""
        //机器状态码
        set(value) {
            field = value
            updatePowerState()
        }
    var devStatus: String = ""//机器状态
    var saveDevData: String = "FF"//FF表示设备未保存设备数据 00 表示设备已保存设备数据
    var crateVersion: String = ""//设备机箱版本号
    var devType: String = ""//机型
    var devOType: String = ""//设备存在类型：00为全自动，01为半自动
    var devDogtag: String = ""//设备铭牌号
    var softwareVersion: String = ""//软件版本号
    var softDate: String = ""//单片机软件日期
    var headTemp: String = "40"//炉头温度
    var steamTemp: String = "40"//蒸汽温度
    var thermocoupleTemperature = "0"//热电偶温度3,预留
    var temperatureInsideTheCabinet = "0"//柜内温度(温湿度探头1-温度)
    var humidityInsideTheCabinet="0"//柜内湿度(温湿度探头1-湿度)
    var outsideTemp: String = "40"//柜外温度
    var outsideHumidity: String = "40"//柜外湿度
    var fatalError: String = ""//致命性错误
    var nonFatalError: String = ""//非致命性错误
    var isPowerOn: Boolean = false
    var customizedVersion: String = "0"//定制版本
    var productionDate: String = ""//设备出厂日期
    var isTurningOn = false//是否开机中
    var isShuttingDown = false//
    var isMake = false
    private fun updatePowerState() {
        try {
            // 清理输入：移除前缀（如 0b/0B）和空格
            // 空字符串处理（默认返回 false）
            if (devCode.isEmpty()) {
                isPowerOn = false
                return
            }
            if (devCode.startsWith("0B")) {
                isPowerOn = true
            }
            if (devCode.startsWith("01")) {
                isTurningOn = true
            } else {
                isTurningOn = false
            }
            if (devCode.startsWith("02")) {
                isShuttingDown = true
            } else {
                isShuttingDown = false
            }
            if (devCode.startsWith("15") || devCode.startsWith("16") || devCode.startsWith("17")) {
                isMake = true
            } else {
                isMake = false
            }
            val decimalValue = hexToDecimalSafe(devCode)

            if (decimalValue >= 11) {//开机
                isPowerOn = true
            } else {
                isPowerOn = false//不开机
            }

        } catch (e: Exception) {
            // 非法二进制格式时设为 false
            isPowerOn = false
            // 建议添加日志记录：Log.e("SBC", "无效的二进制 devCode: $devCode", e)
        }
    }

    fun hexToDecimalSafe(hex: String): Int {
        if (hex.length != 2) return -1 // 长度错误
        val highChar = hex[0]
        val lowChar = hex[1]
        // 将字符转换数值（0-15）
        val high = highChar.digitToIntOrNull(16) ?: -1
        val low = lowChar.digitToIntOrNull(16) ?: -1

        if (high == -1 || low == -1) return -1 // 非法字符
        return high * 16 + low
    }


}
