package m9z

import (
	"fmt"
)

// RelayStatusData 实际通断状态数据结构
type RelayStatusData struct {
	IsOpen bool // 0x01:闭合(true), 0x00:断开(false)
}

// ParseRelayStatusResponse 解析实际通断状态响应
// 响应格式示例: EE 99 01 00 02 01 00 D0 FF
// Data部分: 01 00 (长度为2，第一个字节为状态)
func ParseRelayStatusResponse(data []byte) (*RelayStatusData, error) {
	if len(data) < 1 {
		return nil, fmt.Errorf("invalid data length %d, expected at least 1 byte", len(data))
	}

	status := data[0]
	return &RelayStatusData{
		IsOpen: status == 0x01,
	}, nil
}

// RelayStatusRead 读取实际通断情况
// CMD = 0x19
func RelayStatusRead(device string) (*RelayStatusData, error) {
	// 调用 ReadCmd，指令码为 relayStatus (0x19)，无索引(0x00)
	readRep, err := ReadCmd(device, relayStatus, "读取实际通断情况", 0)
	if err != nil {
		return nil, err
	}

	return ParseRelayStatusResponse(readRep.Data)
}
