const WXAPI = require('./request')
class IotTask{
    constructor(lockId,doTask){
        this.lockId = lockId
        this.response = null;
        this.taskContent = '' //锁返回的
        this.timer = null //定时器
        this.interval = 1000; //任务执行间隔
        this.doTask = doTask;
    }
    run(){
        this.timer = setInterval(async () => {
            await this.getTask()
            const lockeResult = await this.doTask(this.response)
            this.taskContent = lockeResult
        }, this.interval);
    }

    clearTimer(){
        clearInterval(this.timer)
        this.timer = null
    }

    async getTask(){
        //如果获取任务为空
        const params = {
          code: "zg/bleIotTransmit",
          data: {
            lockerId: this.lockId,
            hexString: this.taskContent
          }
        }
        let res = null
        try{
            res = await WXAPI.sendCommand(params)
            console.log('后台获取的任务',res)
            if(res.code != 200){
                this.clearTimer()
                return
            }
            if(res.data.sendContentsHexString){
                wx.showLoading({
                  title: '同步中',
                })
                const len = res.data.sendContentsHexString.length
                console.log(len)
                this.response = res.data.sendContentsHexString.substring(36,len)
                console.log(this.response)
                if(!this.response){
                    wx.showToast({
                        title: '没有可同步的任务',
                        icon:'error'
                      })
                    wx.hideLoading()
                    this.clearTimer()
                }
            }else{
                wx.showToast({
                  title: '没有可同步的任务',
                  icon:'error'
                })
                this.clearTimer()
            }
        }catch(e){
            if(e.errMsg == 'request:fail fail:time out'){
                wx.showToast({
                  title: '接口请求超时',
                  icon: 'error'
                })
                this.clearTimer()
                return 
            }
        }
    }
}

module.exports  =  IotTask