package main

import (
	"github.com/robfig/cron"
	"log"
	"net"
	"os"
	"strconv"
)

var err error

func main() {

	go gw_router()
	go serial_run()
	c := cron.New()

	
	//获取数据防抖处理时间配置
	if conf.SYNEXTENSIONTIME {
		go getConf()
	}
	//有线方案,发送全部数据,包括gateway配置
	if conf.PROCATEGORY == PRO_CATEGORY_WIRED {
		go send_data(CODE1001)
	}

//一分钟一次 同步数据
	c.AddFunc("0, *, *, *, *, *", func() {
		if conf.SYNDATA {
			if conf.PROCATEGORY == PRO_CATEGORY_WIRED {
				send_data(CODE1001)
			}else if conf.PROCATEGORY == PRO_CATEGORY_WIRELESS{
				yunhorn_hb_dpark_v1()
			}
		}
	})

	// c.AddFunc("*/10, *, *, *, *, *", func() {
		// devices := []Device{}
		// log.Println(string(build_data(1001,devices)))
	// })

	c.AddFunc("*/30, *, *, *, *, *", func() {
		//dpark客户需要拉取api获取数据防抖时间配置
		if conf.SYNEXTENSIONTIME {
			getConf()
		}
	})

	c.AddFunc("0, */10, *, *, *, *", savedata_cron)
	c.AddFunc("0, 0, 0, *, *, *", insertdata)
	c.AddFunc("0, 0, *, *, *, *", get_weather)
	c.Start()

	if conf.OPENTCPSETVER {
		tcp_port := strconv.Itoa(conf.TCPPORT)

		listener, err := net.Listen("tcp", "0.0.0.0:"+tcp_port)
		if err != nil {
			log.Printf("listen fail, err: %v\n", err)
			return
		}

		for {
			conn, err := listener.Accept()
			if err != nil {
				log.Printf("accept fail, err: %v\n", err)
				continue
			}
			//       go process(conn)
			go handleConn(conn)
		}
	} else {
		//如果不启动tcpserver,则需要执行这里 让程序不退出
		select {}
	}

}

func check(err error) {
	if err != nil {
		log.Println(err)
		os.Exit(1)
	}
}