//
// Created by zx on 2020/1/10.
//

#ifndef VERIFY_RESULT_H
#define VERIFY_RESULT_H
#include "hardware_limit.pb.h"
#include "Railing.h"


/*
 * 硬件限制检验
 * 包括旋转矩形是否会碰撞栏杆,旋转矩形中心是否在plc运动范围内
 */
class Verify_result
{
public:
#define LIMIT_FRONT_ERROR   0x000001
#define LIMIT_BACK_ERROR    0x000002
#define LIMIT_LEFT_ERROR    0x000004
#define LIMIT_RIGHT_ERROR   0x000008
public:
    /*
     * 构造函数
     * parameter:硬件限制配置参数
     */
    Verify_result(Hardware_limit::Hardware_parameter parameter);
    /*
     * 检验硬件限制
     * rotate_rect:待检验的旋转矩形
     * height:输入高度
     * verify_vertex:只检验中心点,不检验顶角
     */
    Error_manager verify(cv::RotatedRect rotate_rect,float height,bool verify_vertex=true);

    /*
     * 检验硬件限制
     * rotate_rect:待检验的旋转矩形
     * height:输入高度
     * terminal_id:终端编号,终端对应的左右栏杆号为: id,id+1
     * code:返回超界状态(前后左右,按位或运算)
     * 主要用于电子围栏,检验栏杆及前后
     */
    Error_manager verify(cv::RotatedRect rotate_rect,int terminal_id,int& code);

private:
    Hardware_limit::Hardware_parameter          m_hardware_parameter;
};


#endif //VERIFY_RESULT_H
