|
@@ -8,6 +8,8 @@
|
|
#include "area.h"
|
|
#include "area.h"
|
|
#include "card_path.h"
|
|
#include "card_path.h"
|
|
#include "websocket/wsTimerThread.h"
|
|
#include "websocket/wsTimerThread.h"
|
|
|
|
+#include "sys_setting.h"
|
|
|
|
+#include <numeric>
|
|
|
|
|
|
int site::index()const
|
|
int site::index()const
|
|
{
|
|
{
|
|
@@ -108,6 +110,26 @@ void ant::set_path(const std::vector<line_v>&v_line_)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+/*
|
|
|
|
+ * @brief 天线相位是否异常
|
|
|
|
+ * @param 无
|
|
|
|
+ * @return 相位异常返回true,否则返回false
|
|
|
|
+ * @note
|
|
|
|
+ * @warning
|
|
|
|
+ * @bug
|
|
|
|
+ * */
|
|
|
|
+bool ant::phase_error()
|
|
|
|
+{
|
|
|
|
+ if(m_cache_poa.size()<5){
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ double sum = std::accumulate(m_cache_poa.begin(), m_cache_poa.end(), 0.0);
|
|
|
|
+
|
|
|
|
+ return (sum < 1E-4?true:false);
|
|
|
|
+
|
|
|
|
+}
|
|
|
|
+
|
|
void site::set_path(const std::vector<line_v>&v_line)
|
|
void site::set_path(const std::vector<line_v>&v_line)
|
|
{
|
|
{
|
|
if(v_line.empty())
|
|
if(v_line.empty())
|
|
@@ -229,6 +251,32 @@ bool visit_site_status::visit(std::shared_ptr<site> s)
|
|
int diff = now - s->m_time;
|
|
int diff = now - s->m_time;
|
|
event_tool::instance()->handle_event(OT_DEVICE_READER, ET_READER_ERROR, s->m_id, READER_TIMEOUT, diff, diff>READER_TIMEOUT);
|
|
event_tool::instance()->handle_event(OT_DEVICE_READER, ET_READER_ERROR, s->m_id, READER_TIMEOUT, diff, diff>READER_TIMEOUT);
|
|
|
|
|
|
|
|
+ // 定位基站长时间无定位告警
|
|
|
|
+ if(s->m_loc_time > 0 && s->m_device_type_id == DEVICE_TYPE::LOCATE_SITE)
|
|
|
|
+ {
|
|
|
|
+ int diff = now - s->m_loc_time;
|
|
|
|
+ log_info("site_no_position: site_id=%d, diff=%d, loc_time=%ld", s->m_id, diff, s->m_loc_time);
|
|
|
|
+ event_tool::instance()->handle_event(OT_DEVICE_READER, ET_READER_LONG_TIME_NO_POSITION, s->m_id, CYaSetting::m_sys_setting.site_no_position_time, diff, diff>CYaSetting::m_sys_setting.site_no_position_time);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // 定位基站天线poa异常告警
|
|
|
|
+ if(s->m_device_type_id == DEVICE_TYPE::LOCATE_SITE){
|
|
|
|
+ if(s->m_ant[0].phase_error()&&s->m_ant[1].phase_error()){
|
|
|
|
+ event_tool::instance()->handle_event(OT_DEVICE_READER, ET_READER_ANTENNA_PHASE_ABNORMAL, s->m_id, 0, 3, true);
|
|
|
|
+ }else if(s->m_ant[0].phase_error()|| s->m_ant[1].phase_error()){
|
|
|
|
+ if(s->m_ant[0].phase_error()){
|
|
|
|
+ // 如果1天线相位值错误
|
|
|
|
+ event_tool::instance()->handle_event(OT_DEVICE_READER, ET_READER_ANTENNA_PHASE_ABNORMAL, s->m_id, 0, 1, true);
|
|
|
|
+ }else if(s->m_ant[1].phase_error()){
|
|
|
|
+ // 如果2天线相位值错误
|
|
|
|
+ event_tool::instance()->handle_event(OT_DEVICE_READER, ET_READER_ANTENNA_PHASE_ABNORMAL, s->m_id, 0, 2, true);
|
|
|
|
+ }
|
|
|
|
+ }else{
|
|
|
|
+ // 如果都没错误,告警消失
|
|
|
|
+ event_tool::instance()->handle_event(OT_DEVICE_READER, ET_READER_ANTENNA_PHASE_ABNORMAL, s->m_id, 0, 0, false);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
// 更新设备状态
|
|
// 更新设备状态
|
|
int state = (diff > READER_TIMEOUT ? 1 : 0);
|
|
int state = (diff > READER_TIMEOUT ? 1 : 0);
|
|
//log_info("[device_state] rid=%d, diff=%d, timeout=%d, state=%d, now=%lld, rtime=%lld", s->m_id, diff, READER_TIMEOUT, state, now, s->m_time);
|
|
//log_info("[device_state] rid=%d, diff=%d, timeout=%d, state=%d, now=%lld, rtime=%lld", s->m_id, diff, READER_TIMEOUT, state, now, s->m_time);
|
|
@@ -507,7 +555,7 @@ void sit_list::init_site(const std::string &ids /*=""*/)
|
|
site_ptr->m_special = special;
|
|
site_ptr->m_special = special;
|
|
}
|
|
}
|
|
|
|
|
|
- log_info ("site_position: site=%d, x=%.2lf, y=%.2lf, area_id=%d, m_scale=%.2f, pdoa_offset=%.2f, pdoa_direction=%d, special=%d", reader_id, x, y, area_id, scale, offset, direction, special);
|
|
|
|
|
|
+ log_info ("site_position: site=%d, x=%.2lf, y=%.2lf, area_id=%d, m_scale=%.2f, pdoa_offset=%.2f, pdoa_direction=%d, special=%d, device_type_id=%d", reader_id, x, y, area_id, scale, offset, direction, special, device_type_id);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -598,6 +646,7 @@ void site::create_area()
|
|
{
|
|
{
|
|
m_area=std::make_shared<area>(-m_id,0,0,m_scale,m_map_id,1<<7);
|
|
m_area=std::make_shared<area>(-m_id,0,0,m_scale,m_map_id,1<<7);
|
|
}
|
|
}
|
|
|
|
+
|
|
void site::clear_event()
|
|
void site::clear_event()
|
|
{
|
|
{
|
|
event_tool::instance()->handle_event(OT_DEVICE_READER, ET_READER_ERROR, id(), READER_TIMEOUT, 0, false);
|
|
event_tool::instance()->handle_event(OT_DEVICE_READER, ET_READER_ERROR, id(), READER_TIMEOUT, 0, false);
|