package main

import (
	"errors"
	"github.com/sirupsen/logrus"
	"strconv"

	"lc/common/configor"
	"lc/common/protocol"
	"lc/common/util"
)

var appConfig protocol.AppConfig
var serialConfig protocol.SerialConfig

func GetTopic(devType, id, topic string) string {
	return appConfig.Tenant + "/" + devType + "/" + id + "/" + topic
}

func loadAppConfig() error {
	var o protocol.AppConfig
	err := configor.Load(&o, util.GetPath(0)+"app.json")
	if err == nil && o.GID != "" {
		appConfig = o
	}
	return err
}

func loadSerialConfig() error {
	var o protocol.SerialConfig
	err := configor.Load(&o, util.GetPath(0)+"serial.json")
	if err == nil {
		serialConfig = o
	}
	return err
}

// 加载模型文件
func loadModel(tid uint16) (*protocol.IotModel, error) {
	var o protocol.IotModel
	var fname = util.GetPath(2) + strconv.Itoa(int(tid)) + ".json"
	err := configor.Load(&o, fname)
	if err != nil {
		return nil, err
	} else if o.TID == 0 {
		return nil, errors.New("文件不存在")
	} else if o.TID > 0 && tid != o.TID {
		return nil, errors.New("模型文件名tid和内容tid不一致")
	}
	return &o, nil
}

func LoadDev(code uint8) ([]protocol.DevInfo, error) {
	var arrDev protocol.MapDevConfig
	err := configor.Load(&arrDev, util.GetPath(1)+strconv.Itoa(int(code))+".json")
	if err != nil {
		logrus.Errorf("LoadDev err = :%s", err.Error())
		return nil, err

	}
	return arrDev.Rtu, err
}
