rolling counter心跳校验

发送方发送rolling counter,值从0-255,循环发送。我现在要对这个进行校验,校验的方法是只要连续五次出现相同的值或者连续两次收到的值大于2的次数大于3,就报错。
这个c语音怎么写呀

下面是判断连续5次相同的函数
没理解 连续两次收到的值大于2的次数大于3 的意思是啥


bool rolling_counter_check(unsigned char data)
{
    static unsigned char buf[5];
    static int len = 0;
    if (len != 5)
    {
        buf[len] = data;
        len++;
        if (len < 5)
        {
            return true;
        }
        else
        {
            if (buf[0] == buf[1] &&
                buf[0] == buf[2] &&
                buf[0] == buf[3] &&
                buf[0] == buf[4])
            {
                return false;
            }
            return true;
        }
    }
    memcpy(buf, buf + 1, 4);
    buf[4] = data;
    if (buf[0] == buf[1] &&
        buf[0] == buf[2] &&
        buf[0] == buf[3] &&
        buf[0] == buf[4])
    {
        return false;
    }
    return true;
}