From 52516fb93472b0e1a6cf6d87ad3426f7db96c7f0 Mon Sep 17 00:00:00 2001 From: cmhu <2657262686@qq.com> Date: Mon, 10 Mar 2025 10:04:08 +0800 Subject: [PATCH] 添加授权代码; 代码优化 --- src/PicAnalysis.cpp | 189 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------- src/PicAnalysis.h | 9 ++++++++- src/ai_engine_module/VehicleAnalysis.cpp | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------ src/ai_engine_module/VehicleAnalysis.h | 8 +++++--- 4 files changed, 197 insertions(+), 102 deletions(-) diff --git a/src/PicAnalysis.cpp b/src/PicAnalysis.cpp index 9437923..36dcb88 100644 --- a/src/PicAnalysis.cpp +++ b/src/PicAnalysis.cpp @@ -1,6 +1,8 @@ #include "PicAnalysis.h" #include "./utils/logger.hpp" +#define AUTHORIZATION +#define productSN "C7C1FF4EDEF1452F8BBEC8B36EAECEC0" //linux 农村一体机图片版 产品序列号 PicAnalysis::PicAnalysis(/* args */) { @@ -34,6 +36,18 @@ int PicAnalysis::init(VillageParam param) { int ret = SY_FAILED; +#ifndef AUTHORIZATION + if (!CheckTime()) { //时间限制 + LOG_ERROR("CheckTime failed."); + return -106 ; + } +#else + if (!CheckLabel(dev_id)) { //机器授权 + LOG_ERROR("CheckLabel failed."); + return -106 ; + } +#endif + VehicleAnalysisParam vehicle_analysis_param; vehicle_analysis_param.devId = dev_id; vehicle_analysis_param.sdk_root = param.sdk_path; @@ -139,64 +153,30 @@ vector PicAnalysis::analysis_file(vector vec_file_path){ return analysis_img(vec_img); } -vector PicAnalysis::va_result2AnalysisResult(va_result* result, int batchsize) { - - vector vec_result; +vector PicAnalysis::analysis_img(vector vec_img){ - for (int b = 0; b < batchsize; b++) - { - vector vec_info; - for(int c=0;c l(m_single_mtx); - vec_info.push_back(info); - } + vector vec_result; - AnalysisResult one_result; - one_result.info = vec_info; - vec_result.push_back(one_result); +#ifndef AUTHORIZATION + if (!CheckTime()) { //时间限制 + LOG_FATAL("authority failed!"); + return vec_result; } - - return vec_result; -} - -vector PicAnalysis::analysis_img(vector vec_img){ +#else + if (check_label == -1) { //机器授权 + LOG_FATAL("authority failed!"); + return vec_result; + } + if (!UpdateLabel()) { + LOG_FATAL("authority failed!"); + return vec_result; + } +#endif LOG_INFO("vec_img size:{}", vec_img.size()); - std::lock_guard l(m_single_mtx); - - vector vec_result; - const int batch_size = vec_img.size(); int ret = aclrtSetCurrentContext(m_ctx); @@ -205,11 +185,7 @@ vector PicAnalysis::analysis_img(vector vec_img){ return vec_result; } - va_result* result = m_vehicle_analysis.detect(vec_img); - if (result) { - vec_result = va_result2AnalysisResult(result, batch_size); - m_vehicle_analysis.release_result(result, vec_img.size()); - } + vec_result = m_vehicle_analysis.detect(vec_img); LOG_INFO("vec_result size:{}", vec_result.size()); @@ -426,4 +402,105 @@ int PicAnalysis::release() { aclrtDestroyContext(m_ctx); return 0; +} + +bool PicAnalysis::CheckLabel(int devId) { + const char *token_password = "village_atlas_arm_2023"; + std::string guid = std::string("village_atlas_arm")+std::to_string(devId); + atlas_licence_param lic_param; + memset(&lic_param, 0, sizeof(atlas_licence_param)); + sprintf(lic_param.product_id, "%s", productSN); + sprintf(lic_param.guid, "%s",guid.c_str()); + sprintf(lic_param.token_pwd, "%s", token_password); + lic_param.channel_num = 1; + atlas_licence_token param_token; + memset(¶m_token, 0, sizeof(atlas_licence_token)); + + int result = atlas_licence_connect(&(skt_handle), lic_param, ¶m_token); + //printf("result:%d,code:%d,msg:%s \n", result, param_token.code, param_token.msg); + //printf("token:%s\n", param_token.token); + std::string recv_token = std::string(param_token.token); + + //atlas_licence_check_param check_param; + memset(&(check_param), 0, sizeof(atlas_licence_check_param)); + sprintf(check_param.token_pwd, "%s", token_password); + sprintf(check_param.time, "%s", "2023-01-10 20:00:00"); + sprintf(check_param.token, "%s", recv_token .c_str()); + check_param.consume = 2; + + //授权check------------ + check_label = -1;//初始值 + std::cout << "sy_licence_check start." << std::endl; + atlas_licence_check_result check_result; + memset(&check_result, 0, sizeof(atlas_licence_check_result)); + check_result.code = -1; + + int res = atlas_licence_check(skt_handle, check_param, &check_result); + if(res!=0) { + std::cout << "sy_licence_check failed." << std::endl; + return false; + } + //std::cout << "code:" << check_result.code << ",msg:" << check_result.msg << std::endl; + if(check_result.code!=0) { + std::cout << "code:" << check_result.code << ",msg:" << check_result.msg << std::endl; + return false; + } + std::cout << "sy_licence_check end." << std::endl; + + check_label = 0;//授权成功 + return true; +} + +bool PicAnalysis::UpdateLabel() { + //获取系统时间,每个月1号check一次授权 + struct tm* info; + int nYear, nMonth, nDay; + time_t raw; + time(&raw); + info = localtime(&raw); + nYear = info->tm_year + 1900; + nMonth = info->tm_mon + 1; + nDay = info->tm_mday; + if(nDay==1) { + if(check_label ==0) { + LOG_INFO("atlas_licence_check start."); + atlas_licence_check_result check_result; + memset(&check_result, 0, sizeof(atlas_licence_check_result)); + check_result.code = -1; + + int res = atlas_licence_check(skt_handle, check_param, &check_result); + if(res!=0) { + LOG_FATAL("sy_licence_check failed."); + return false; + } + if(check_result.code!=0) { + check_label = -1; + LOG_FATAL("atlas_licence_check code:{}, msg:{}",check_result.code, check_result.msg); + return false; + } + LOG_INFO("atlas_licence_check end."); + check_label =1; + } + } + else { + check_label =0; + } + return true; +} + +bool PicAnalysis::CheckTime() { + struct tm* info; + int nYear, nMonth, nDay; + time_t raw; + time(&raw); + info = localtime(&raw); + nYear = info->tm_year + 1900; + nMonth = info->tm_mon + 1; + nDay = info->tm_mday; + + if (nYear == 2025 && (nMonth <= 11 || (nMonth <= 12 && nDay <= 31))){ + return true; + } else { + return false; + } } \ No newline at end of file diff --git a/src/PicAnalysis.h b/src/PicAnalysis.h index d42c67f..bb43015 100644 --- a/src/PicAnalysis.h +++ b/src/PicAnalysis.h @@ -12,6 +12,7 @@ #include "./utils/PathUtils.hpp" #include "village_inc.h" +#include "atlas_licence.h" #include @@ -33,7 +34,9 @@ public: private: int release(); - vector va_result2AnalysisResult(va_result* result, int batchsize); + bool CheckTime(); + bool CheckLabel(int devId); + bool UpdateLabel(); private: aclrtContext m_ctx{nullptr}; @@ -52,6 +55,10 @@ private: CropUtil m_crop_util; std::mutex m_single_mtx; + + void *skt_handle {nullptr};//授权 + atlas_licence_check_param check_param;//授权 + int check_label {-1};//授权 -1=未授权 0=授权 1=授权check日已经check成功(每月一次check) }; diff --git a/src/ai_engine_module/VehicleAnalysis.cpp b/src/ai_engine_module/VehicleAnalysis.cpp index fdda364..df8f506 100644 --- a/src/ai_engine_module/VehicleAnalysis.cpp +++ b/src/ai_engine_module/VehicleAnalysis.cpp @@ -72,45 +72,24 @@ int VehicleAnalysis::init(VehicleAnalysisParam tParam) { return 0; } -va_result * VehicleAnalysis::detect(vector vec_img) { +vector VehicleAnalysis::detect(vector vec_img) { int batch_size = vec_img.size(); va_result *result=new va_result[batch_size]; - for(int b=0;b VehicleAnalysis::va_result2AnalysisResult(va_result* result, int batchsize) { + + vector vec_result; + + for (int b = 0; b < batchsize; b++) { - for(int c=0; c<100; c++) + vector vec_info; + for(int c=0;c vec_img); - - void release_result(va_result*, int); + vector detect(vector vec_img); private: void release(); + vector va_result2AnalysisResult(va_result* result, int batchsize); + private: void* m_handle{nullptr}; -- libgit2 0.21.4