|
@@ -123,6 +123,88 @@ void net_service::on_message(const std::shared_ptr<client> &clt,const char*data,
|
|
}
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
|
|
+ case 0x753C://tof-优化,大小分站
|
|
|
|
+ {
|
|
|
|
+ uint16_t site_id=-1;
|
|
|
|
+ uint16_t site_ct=-1;
|
|
|
|
+ uint32_t site_time_s=0;
|
|
|
|
+ uint8_t power=-1;
|
|
|
|
+
|
|
|
|
+ is>>site_id>>site_ct >>site_time_s >>power;
|
|
|
|
+ power=power>>6;
|
|
|
|
+
|
|
|
|
+ time_t site_time=site_time_s;
|
|
|
|
+
|
|
|
|
+ auto site_ptr = sit_list::instance()->get(static_cast<int32_t>(site_id));
|
|
|
|
+ if(!site_ptr)
|
|
|
|
+ {
|
|
|
|
+ logn_error(1,"在全局分站列表中找不到分站:%s,%d", clt->name().c_str(), site_id);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if(site_ptr->is_abnormal_site())
|
|
|
|
+ {
|
|
|
|
+ logn_error(1,"分站[%d]天线异常", site_id);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ {
|
|
|
|
+ char timebuf[64]{0};
|
|
|
|
+ struct tm site_tm={0};
|
|
|
|
+ localtime_r(&site_time, &site_tm);
|
|
|
|
+
|
|
|
|
+ strftime(timebuf,64,"%F %T",&site_tm);
|
|
|
|
+ const char*power_flag="??";
|
|
|
|
+ if(site_ptr->m_power_check_enable)
|
|
|
|
+ {
|
|
|
|
+ if(power==1)
|
|
|
|
+ power_flag="dc";
|
|
|
|
+ if(power==2)
|
|
|
|
+ power_flag="ac";
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ logn_info(1,"分站数据信息:net=%s,sid=%d,tm=%s,sct=%d,power=%s", clt->name().c_str(), site_id,timebuf, site_ct, power_flag);
|
|
|
|
+
|
|
|
|
+ double diff=difftime(site_time, site_ptr->last_site_time());
|
|
|
|
+ if(diff<-3) //允许2秒的时间抖动
|
|
|
|
+ {
|
|
|
|
+ logn_error(1,"分站时间回退,数据将被丢弃:%s,diff=%d",clt->name().c_str(),(int)diff);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ site_ptr->set_site_time(site_time);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if(clt->type()!=2){
|
|
|
|
+ site_ptr->set_client(clt);
|
|
|
|
+ site_ptr->on_power_status((power&1)==0);
|
|
|
|
+ //clt->set_site_id(site_id);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ struct timeval tv;
|
|
|
|
+ gettimeofday(&tv,NULL);
|
|
|
|
+ uint64_t t = tv.tv_sec*1000 + tv.tv_usec/1000;
|
|
|
|
+ int index=0;
|
|
|
|
+ while(!is.eof())
|
|
|
|
+ {
|
|
|
|
+ uint64_t tstamp = t -1000 + 50 + index* 45;
|
|
|
|
+ index++;
|
|
|
|
+
|
|
|
|
+ for(auto&tk:message_locinfo::load_753C(is))//未写完
|
|
|
|
+ {
|
|
|
|
+ message_locinfo&m=tk->body<message_locinfo>();
|
|
|
|
+ m.m_site_id=site_id;
|
|
|
|
+ m.m_time_stamp=tstamp;
|
|
|
|
+
|
|
|
|
+ tk->m_hash_id=m.m_card_id;
|
|
|
|
+ tk->m_cmd_code=cmd;
|
|
|
|
+ if(m.m_card_type==5)
|
|
|
|
+ mine_business::inst()->make_reverse_condition(m.m_card_type,m.m_card_id,m.m_ant_id,m.m_card_ct,m.m_tof,m.m_site_id);
|
|
|
|
+
|
|
|
|
+ m_loc_worker->request(tk);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
case 0x783A://tof 分站时间同步
|
|
case 0x783A://tof 分站时间同步
|
|
{
|
|
{
|
|
|
|
|
|
@@ -184,16 +266,18 @@ void net_service::on_message(const std::shared_ptr<client> &clt,const char*data,
|
|
}
|
|
}
|
|
//site_message::on_sync(this,t.m_param1);
|
|
//site_message::on_sync(this,t.m_param1);
|
|
break;
|
|
break;
|
|
- case CHAR_LOCATEDATAHIS_TOF_EXTEND://tof his
|
|
|
|
- case CHAR_LOCATEDATAHIS_TDOA_EXTEND://tdoa his
|
|
|
|
- case CHAR_CTRL_READER_CMD://ctrl site message
|
|
|
|
- case CHAR_ADHOC://自组网数据
|
|
|
|
case CHAR_VIRTUAL_DATA_PUSH_CMD://虚拟数据链接
|
|
case CHAR_VIRTUAL_DATA_PUSH_CMD://虚拟数据链接
|
|
{
|
|
{
|
|
logn_info(1,"接收到虚拟链接:%s",clt->name().c_str());
|
|
logn_info(1,"接收到虚拟链接:%s",clt->name().c_str());
|
|
clt->set_conn_type(2);
|
|
clt->set_conn_type(2);
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ case CHAR_LOCATEDATAHIS_TOF_EXTEND://tof his
|
|
|
|
+ case CHAR_LOCATEDATAHIS_TDOA_EXTEND://tdoa his
|
|
|
|
+ case CHAR_CTRL_READER_CMD://ctrl site message
|
|
|
|
+ case CHAR_ADHOC://自组网数据
|
|
default:
|
|
default:
|
|
message_handled=false;
|
|
message_handled=false;
|
|
}
|
|
}
|