package com.youchain.rfid;

import java.util.Calendar;


/*
 * 用于统计读写器发生断线和异常的频率，读写器工作的时候由于网络连接和外部环境（比
 * 如有金属物体紧贴天线或者有外物撞击了天线导致天线连接断开）都有可能造成工作中断，
 * 如果引起异常的外部因素只是偶尔出现，重新初始化读写器一般都能继续工作。如果发生
 * 的频率很高则应该检查网络或读写器安装部署环境是否有问题。此类的构造函数包含两个
 * 参数，参数1是发生异常的最大次数，参数2则规定了一个时间段（单位为秒），例如参数1
 * 设置为3，参数2设置为60，则具体含义为：如果读写器在60秒内发生了3次异常则IsTrigger
 * 方法则会返回true，表示读写器发生异常的频率过高，超过了构造函数设置的门限值。
 * */
public class ReaderExceptionChecker {
    public ReaderExceptionChecker(int maxerrcnt, int dursec)
    {
        dts = new Calendar[maxerrcnt];
        index = 0;
        maxdursec = dursec;
    }
    public void AddErr()
    {
        dts[index++] = Calendar.getInstance();
    }

    Calendar[] dts;
    int maxdursec;
    int index;
    public boolean IsTrigger()
    {
        Calendar dt = Calendar.getInstance();
        if (index == dts.length - 1)
        {

            if ( (dt.getTimeInMillis() - dts[0].getTimeInMillis())/1000 < maxdursec)
            {
                return true;
            }
            else
            {
                index = 0;
                return false;
            }
        }
        else
            return false;
    }
}
