2024-08-12 03:34:13 +00:00
|
|
|
#include "SaveStepOneResultEngine.h"
using namespace ai_matrix;
SaveStepOneResultEngine::SaveStepOneResultEngine() {}
SaveStepOneResultEngine::~SaveStepOneResultEngine() {}
APP_ERROR SaveStepOneResultEngine::Init()
{
strPort0_ = engineName_ + "_" + std::to_string(engineId_) + "_0";
strPort1_ = engineName_ + "_" + std::to_string(engineId_) + "_1";
strResultPath_ = MyYaml::GetIns()->GetPathValue("gc_result_path");
iSplitSpan_ = MyYaml::GetIns()->GetIntValue("partition_frame_span");
iSplitSpanPX_ = MyYaml::GetIns()->GetIntValue("gc_split_frame_span_px");
dataSourceConfig_ = MyYaml::GetIns()->GetDataSourceConfigById(engineId_);
std::map<int, ai_matrix::DataSourceConfig> mapUseDataSouceCfg = MyYaml::GetIns()->GetUseDataSourceConfig();
std::string delimiter(",");
for (auto iter = mapUseDataSouceCfg.begin(); iter != mapUseDataSouceCfg.end(); iter++)
{
int iCnt = 0;
std::vector<std::string> vecSplit = MyUtils::getins()->split(iter->second.strTarget, delimiter);
for (auto iter = vecSplit.begin(); iter != vecSplit.end(); iter++)
{
if (*iter == "NUM")
{
iCnt++;
}
else if (*iter == "CHKDATE")
{
iCnt++;
}
else if (*iter == "CONTAINER" || *iter == "CONTAINER_T")
{
iCnt++;
}
}
mapInvokeModelCnt_[iter->first] = iCnt;
}
InitParam();
LogInfo << "SaveStepOneResultEngine Init ok";
return APP_ERR_OK;
}
APP_ERROR SaveStepOneResultEngine::DeInit()
{
LogInfo << "SaveStepOneResultEngine DeInit ok";
return APP_ERR_OK;
}
/**
* 初始化参数信息
* inParam : N/A
* outParam: N/A
* return : N/A
*/
void SaveStepOneResultEngine::InitParam()
{
iPushSpaceFrameId_ = 0;
i64TimeStampFirst_ = 0;
iDirection_ = DIRECTION_UNKNOWN;
bPushIsEnd_ = false;
vecParationInfo_.clear();
std::vector<PartionInfo>().swap(vecParationInfo_);
bDealCenterFlag_ = false;
parationInfoLast_.i64EndTimeStamp = 0;
parationInfoLast_.modelSpaceFrame = 0;
parationInfoLast_.iRate = 0;
parationInfoLast_.bmodelconfirmed = false;
parationInfoLast_.fLTX = 0.0;
parationInfoLast_.fRBX = 0.0;
parationInfoLast_.strTrainDate = "";
parationInfoLast_.strTrainName = "";
parationInfoLast_.bIsEnd = false;
parationInfoLast_.nStatus = 0;
mapNumCenterInfo_.clear();
mapProCenterInfo_.clear();
bHaveHeadFlag_ = false;
headInfo_.iFrameId = 0;
headInfo_.fCenterX = 0;
}
/**
* 构造车厢间隔信息
* inParam : N/A
* outParam: N/A
* return : N/A
*/
void SaveStepOneResultEngine::MakeParationInfo(PartionInfo ¶tionInfo, std::shared_ptr<ProcessData> pProcessData, Json::Value &jvStep1Space)
{
parationInfo.i64EndTimeStamp = pProcessData->i64TimeStamp;
parationInfo.modelSpaceFrame = pProcessData->iFrameId;
parationInfo.iRate = pProcessData->iRate;
parationInfo.bmodelconfirmed = true;
parationInfo.fLTX = jvStep1Space[0]["ltx"].asFloat();
parationInfo.fRBX = jvStep1Space[0]["rbx"].asFloat();
parationInfo.strTrainDate = pProcessData->strTrainDate;
parationInfo.strTrainName = pProcessData->strTrainName;
parationInfo.bIsEnd = pProcessData->bIsEnd;
parationInfo.nStatus = ((pProcessData->iStatus == TRAINSTATUS_STOP) ? TRAIN_PAUSE : iDirection_);
parationInfoLast_ = parationInfo;
}
/**
* 处理中心间隔信息
* inParam : N/A
* outParam: N/A
* return : N/A
*/
void SaveStepOneResultEngine::DealCenterSpace(std::vector<PartionInfo> &vecParationInfo,
std::shared_ptr<ProcessData> pProcessData)
{
int iVecSize = vecParationInfo.size();
if (iVecSize < 0)
{
return;
}
LogDebug << "积累的车厢切分信息数:" << iVecSize << " 帧:" << pProcessData->iFrameId
<< " 第一个车厢切分信息帧:" << vecParationInfo.at(0).modelSpaceFrame
<< " 最后一个车厢切分信息帧:" << vecParationInfo.at(iVecSize - 1).model
|