package modbus

import (
	"encoding/xml"
	"os"
)

// // LoadItems 从 path 中读取并解析 XML 配置
// func LoadItems(path string) (ItemInfo, error) {
// 	name, err := osi.ReadDir(path, DefaultConfigSuffix)
// 	if err != nil {
// 		return nil, err
// 	}
// 	items := make(map[string]ItemInfo)
// 	for i := 0; i < len(name); i++ {
// 		var itemInfo ItemInfo
// 		itemInfo, err = ReadFile(name[i])
// 		if err != nil {
// 			return nil, err
// 		}
// 		items[itemInfo.Name.String()] = itemInfo
// 	}
// 	return items, nil
// }

// ReadFile 解析 name 至 ItemInfo
func ReadFile(name string) (ItemInfo, error) {
	b, err := os.ReadFile(name)
	if err != nil {
		return ItemInfo{}, err
	}
	return ReadFrom(b)
}

func ReadFrom(b []byte) (ItemInfo, error) {
	var itemInfo ItemInfo
	if err := xml.Unmarshal(b, &itemInfo); err != nil {
		return ItemInfo{}, err
	}
	itemInfo.Init()
	return itemInfo, nil
}
