|
|
#if 1 |
|
|
#pragma once |
|
|
#ifndef NWEB_H |
|
|
#define NWEB_H |
|
|
//#include "structures.h" |
|
|
#include "define_inc.h" |
|
|
#include "zlog.h" |
|
|
#include "cv.h" |
|
|
#include "utility.h" |
|
|
#include "onvif_data.h" |
|
|
#ifdef GY_OS_NOVA |
|
|
#include "bbox_receive.h" |
|
|
#endif |
|
|
#include <sys/types.h> |
|
|
#include <sys/socket.h> |
|
|
#if defined GY_OS_AMBA || defined GY_OS_NOVA |
|
|
#include <stdbool.h> |
|
|
#endif |
|
|
#ifdef GY_OS_WIN |
|
|
#include "opencv2/highgui/highgui_c.h" |
|
|
#include "opencv2/imgproc/imgproc_c.h" |
|
|
#endif |
|
|
|
|
|
#include <curl/curl.h> |
|
|
#include <curl/easy.h> |
|
|
#include <sys/prctl.h> |
|
|
|
|
|
#ifdef GY_OS_AMBA |
|
|
//#include "face_parser.h" |
|
|
#endif |
|
|
|
|
|
#ifdef __cplusplus |
|
|
extern "C" { |
|
|
#include <stdint.h> |
|
|
#include <stdlib.h> |
|
|
#endif |
|
|
|
|
|
#define CONTENT_BUFSIZE MAX_IMG_BUFF_SIZE |
|
|
#define LOG_BUFSIZE (BUFSIZE<<1) |
|
|
#define NW_ERROR 1 |
|
|
#define NW_SORRY 2 |
|
|
#define NW_LOG 3 |
|
|
#define LINE_BUFSIZE 7*8192 //512 |
|
|
#define MAX_SIZE_POINT 6 |
|
|
#define MAX_NUMBER_PAGE 59 |
|
|
#define HEADER_BUFSIZE 1024 |
|
|
|
|
|
#define WEBPYTHONBUFFER_LENSIZE 256 |
|
|
#define WEBPYTHONBUFFER_ROWSIZE 256 |
|
|
#define MAX_GET_PYTHON_BUFFER_ROW_SIZE 8 |
|
|
|
|
|
#ifdef GY_OS_NOVA |
|
|
#define MEMORY_SIZE 256*1024 |
|
|
#endif |
|
|
|
|
|
#ifdef GY_OS_AMBA |
|
|
#define MEMORY_SIZE 512*1024 |
|
|
#endif |
|
|
|
|
|
#define MAX_SERVICE_SIZE 256 |
|
|
|
|
|
#define MAX_SIZE_A_OSD_OBJECT 11 |
|
|
#define MAX_SIZE_A_SP_OBJECT 6 |
|
|
|
|
|
//trigger types |
|
|
#define TRIGGER_OUTSIDE_INSIDE 1 |
|
|
#define TRIGGER_INSIDE_OUTSIDE 2 |
|
|
#define TRIGGER_INSIDE_INSIDE 3 |
|
|
#define TRIGGER_OUTSIDE_OUTSIDE 4 |
|
|
|
|
|
/*typedef struct |
|
|
{ |
|
|
int x; |
|
|
int y; |
|
|
} Point;*/ |
|
|
|
|
|
/*typedef struct { |
|
|
char* recvBuffer; |
|
|
char* contentBuffer; |
|
|
} BufferPtr;*/ |
|
|
|
|
|
/*typedef struct { |
|
|
time_t recv_time; |
|
|
int frames; |
|
|
} SecData;*/ |
|
|
|
|
|
typedef struct |
|
|
{ |
|
|
struct tm * snapshot_time; |
|
|
time_t snapshot_time_mktime; |
|
|
time_t snapshot_msecs_time; |
|
|
char snapshot_addr[MAX_IMG_SIZE]; |
|
|
int snapshot_size; |
|
|
}SnapHDInfo; |
|
|
|
|
|
typedef struct |
|
|
{ |
|
|
char weight_repository[35]; |
|
|
int enable_weight_to_run; |
|
|
}WeightFileInfo; |
|
|
|
|
|
typedef struct |
|
|
{ |
|
|
char email_address1[50]; |
|
|
char email_address2[50]; |
|
|
char email_address3[50]; |
|
|
char email_address4[50]; |
|
|
char email_address5[50]; |
|
|
|
|
|
char email_address[50]; |
|
|
|
|
|
char smtp_server[50]; |
|
|
int smtp_auth_mode; |
|
|
char smtp_port[10]; |
|
|
int smtp_auth; |
|
|
|
|
|
char auth_account[50]; |
|
|
char auth_password[50]; |
|
|
} IPCAMServiceInfo; |
|
|
|
|
|
typedef struct |
|
|
{ |
|
|
int checked; |
|
|
char detect_event_id[20]; |
|
|
char detect_event_name[50]; |
|
|
char post_event_name[MAX_MSG_LEN * 10]; |
|
|
char counter_name[MAX_MSG_LEN * 10]; |
|
|
int counter_increment; |
|
|
//TriggerData [MAX_DETECT_OBJECTS]; |
|
|
} TriggerEvent; |
|
|
|
|
|
typedef struct |
|
|
{ |
|
|
bool isActive; |
|
|
|
|
|
/*char levenshtein_distance[10]; |
|
|
char min_characters[10]; |
|
|
char max_characters[10]; |
|
|
char confidence[10];*/ |
|
|
char enable_traffic_light[10]; |
|
|
//char enable_social_distance[10]; |
|
|
#ifdef GY_OS_AMBA |
|
|
CvMat* PerspectiveTransformArray; |
|
|
#endif |
|
|
char detection_time[20]; |
|
|
char metadata1[BUFSIZE]; |
|
|
char metadata2[BUFSIZE]; |
|
|
char metadata_stop[50]; |
|
|
char link_to_counter[10]; |
|
|
char enable_direction1[10]; |
|
|
char enable_direction2[10]; |
|
|
char direction1[10]; |
|
|
char direction2[10]; |
|
|
int no_parking_time; |
|
|
int no_parking_time_in_minute; |
|
|
int queuing_count; |
|
|
int prev_queuing_num; |
|
|
int queuing_trigger_event_idx; |
|
|
char ptz_zone_to_preset[20]; |
|
|
|
|
|
TriggerEvent trigger_event[MAX_TRIGGER_EVENT]; |
|
|
CPoint Points[6]; |
|
|
int min_x_points; |
|
|
int max_x_points; |
|
|
int min_y_points; |
|
|
int max_y_points; |
|
|
|
|
|
f_CPoint onvif_Points[6]; |
|
|
|
|
|
int parking_space; |
|
|
int parking_line; |
|
|
|
|
|
//Social Distance |
|
|
float set_distance; |
|
|
char world_distance_unit[10]; |
|
|
float world_distance[DETECTION_POINTS_COUNT]; |
|
|
int distance_violation_count; |
|
|
int prev_distance_violation_num; |
|
|
time_t prev_distance_violation_time; |
|
|
time_t recent_distance_violation_start_time; |
|
|
int distance_trigger_event_idx; |
|
|
//float LinearFormula[DETECTION_POINTS_COUNT][3]; //4 edges, each edge has it's ax+by+c =0 values |
|
|
//char* MovingDirection[DETECTION_POINTS_COUNT]; |
|
|
|
|
|
int point_num; |
|
|
|
|
|
int obj_tracking_id_in_zone[MAX_OBJ_TRACKING_ID_IN_ZONE]; |
|
|
int last_obj_tracking_id_in_zone[MAX_OBJ_TRACKING_ID_IN_ZONE]; |
|
|
int last_two_obj_tracking_id_in_zone[MAX_OBJ_TRACKING_ID_IN_ZONE]; |
|
|
int check_if_missing; |
|
|
|
|
|
char enable_speed[10]; |
|
|
char enable_radar_speed[10]; |
|
|
char enable_ivs_zone[10]; |
|
|
float world_distance_side1; |
|
|
float world_distance_side2; |
|
|
char world_time_unit[20]; |
|
|
|
|
|
char obj_max_proportion_in_zone[10]; |
|
|
char obj_min_proportion_in_zone[10]; |
|
|
|
|
|
//int speed_upper_bound;//<EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD>set_distance |
|
|
//int speed_lower_bound;//<EFBFBD>Ч<EFBFBD><EFBFBD><EFBFBD>set_distance |
|
|
|
|
|
//char confidence3[10]; |
|
|
#if defined GY_OS_AMBA |
|
|
//jvc setting |
|
|
int jvc_enable_detect; |
|
|
int jvc_person_check; |
|
|
int jvc_vehicle_check; |
|
|
int jvc_person_confidence; |
|
|
int jvc_vehicle_confidence; |
|
|
int jvc_behavior; |
|
|
int jvc_obj_size; |
|
|
int jvc_detect_priority; |
|
|
int jvc_detect_mode; |
|
|
int jvc_detect_fov; |
|
|
int jvc_trigger_delay_time; |
|
|
int jvc_trigger_times; |
|
|
int jvc_queuing_count; |
|
|
int jvc_enable_direction1; |
|
|
int jvc_direction1; |
|
|
char jvc_counter_name[50]; |
|
|
int jvc_counter_value; |
|
|
int jvc_density_value; |
|
|
|
|
|
int jvc_enable_ptz; |
|
|
int jvc_ptz_tracking_time; |
|
|
int jvc_ptz_fov; |
|
|
int jvc_ptz_auto_intercept; |
|
|
int jvc_ptz_preset_intercept; |
|
|
int jvc_ptz_zone_to_preset; |
|
|
#endif |
|
|
} DetectionZoneInfo; |
|
|
|
|
|
typedef struct |
|
|
{ |
|
|
int channel_idx; |
|
|
int enable_anpr; |
|
|
int enable_face; |
|
|
int enable_traffic; |
|
|
int enable_logo; |
|
|
int enable_add_face_frequent_list; |
|
|
int tab_view_width; |
|
|
int tab_view_height; |
|
|
float tab_view_width_ratio; |
|
|
float tab_view_height_ratio; |
|
|
float speed_view_width_ratio; |
|
|
float speed_view_height_ratio; |
|
|
char camera_name[20]; |
|
|
char obj_max_proportion[10]; |
|
|
char obj_min_proportion[10]; |
|
|
char levenshtein_distance[10]; |
|
|
char min_characters[10]; |
|
|
char max_characters[10]; |
|
|
|
|
|
int i_plate_filter_times; |
|
|
int i_plate_filter_time; |
|
|
int i_plate_free_time; |
|
|
|
|
|
char confidence[10]; //<EFBFBD><EFBFBD><EFBFBD>P Plate |
|
|
char confidence2[10]; //<EFBFBD><EFBFBD><EFBFBD>q Traffic |
|
|
char confidence3[10]; //<EFBFBD>S<EFBFBD><EFBFBD><EFBFBD>Ψ<EFBFBD> None |
|
|
char confidence4[10]; //<EFBFBD>S<EFBFBD><EFBFBD><EFBFBD>Ψ<EFBFBD> None |
|
|
int enable_traffic_light_zone; |
|
|
//int enable_social_distance_zone; |
|
|
char traffic_light_color[20]; |
|
|
//CvMat* PerspectiveTransformArray; |
|
|
char enable_lpr_db[10]; |
|
|
char enable_PTZ[10]; |
|
|
char enable_track[10]; |
|
|
|
|
|
char ivs_mode[10]; |
|
|
|
|
|
char ptz_tracking_fov_min[10]; |
|
|
char ptz_tracking_fov_max[10]; |
|
|
char ptz_enable_tracking[10]; |
|
|
char ptz_tracking_resume_dwell[10]; |
|
|
int ptz_tracking_by_enter_zone; |
|
|
int ptz_tracking_mode; |
|
|
int ptz_sensitivity; |
|
|
int iVideo_source_w; |
|
|
int iVideo_source_h; |
|
|
|
|
|
char enable_tracking_limits[10]; |
|
|
char ptz_pan_left_limit[20]; |
|
|
char ptz_pan_right_limit[20]; |
|
|
char ptz_tilt_up_limit[20]; |
|
|
char ptz_tilt_down_limit[20]; |
|
|
char ptz_speed[20]; |
|
|
|
|
|
char enable_unknown_object[10]; |
|
|
char enable_ivs_person_detection[10]; |
|
|
|
|
|
char assign_ivs_object_to[100]; |
|
|
|
|
|
char enable_ambulance[10]; |
|
|
char enable_blank_plate[10]; |
|
|
char enable_stop_sign[10]; |
|
|
|
|
|
char enable_ivs_fix_mode[10]; |
|
|
|
|
|
char enable_show_unknown_object[10]; |
|
|
char enable_ivs_and_ai[10]; |
|
|
char enable_lpr_upon_triggered[10]; |
|
|
|
|
|
char dwell_lpr_upon_triggered[10]; |
|
|
|
|
|
char unknown_object_max_proportion[10]; |
|
|
char unknown_object_min_proportion[10]; |
|
|
char confidence_unknown_object[10]; |
|
|
char confidence2_unknown_object[10]; |
|
|
char dwell_unknown_object[10]; |
|
|
char dwell_minute_focus_on[10]; |
|
|
char person_obj_fov[10]; |
|
|
|
|
|
char getnetwork_buffer_id[10]; |
|
|
|
|
|
char red_light_zone[10]; |
|
|
char no_give_way_zone_to_protect[10]; |
|
|
char no_give_way_zone_to_keep_away[10]; |
|
|
char no_give_way_zone_to_protect_2[10]; |
|
|
char no_give_way_zone_to_keep_away_2[10]; |
|
|
int count_zone; |
|
|
|
|
|
} ChannelInfo; |
|
|
|
|
|
typedef struct |
|
|
{ |
|
|
char enable_person_independent[10]; |
|
|
char enable_onvif_profile_m[10]; |
|
|
char enable_crop_mode[10]; |
|
|
char nms_thres[10]; |
|
|
char tracking_id_dwell[10]; |
|
|
|
|
|
char enable_cloud[10]; |
|
|
char enable_special_edition[10]; |
|
|
char enable_python[10]; |
|
|
char enable_python_file[50]; |
|
|
char enable_low_cpu_usage[10]; |
|
|
char cloud_enable_snap[10]; |
|
|
char cloud_enable_notification[10]; |
|
|
char cloud_account[256]; |
|
|
char cloud_password[256]; |
|
|
char cloud_notification_dwell[10]; |
|
|
char cloud_statue[MEMORY_SIZE]; |
|
|
char language[50]; |
|
|
|
|
|
char enable_display_properties[10];//enable to show color |
|
|
char enable_display_OSD[10]; |
|
|
|
|
|
char enable_special_char[10]; |
|
|
char enable_bounding_box[10]; |
|
|
|
|
|
char enable_dwell_bounding_box[10]; |
|
|
|
|
|
char force_i_to_one[10]; |
|
|
char force_o_to_zero[10]; |
|
|
char enable_plate_angle_correction[10]; |
|
|
|
|
|
char enable_ai_mirror[10]; |
|
|
char ai_mirror_feature[10]; |
|
|
|
|
|
char enable_cloud_v2[10]; |
|
|
char cloud_v2_notification_dwell[10]; |
|
|
char cloud_v2_content[BUFSIZE_V3]; |
|
|
char enable_cloud_record_v2[10]; |
|
|
char cloud_record_v2_notification_dwell[10]; |
|
|
char cloud_record_v2_content[BUFSIZE_V3]; |
|
|
|
|
|
char cloud_v2_statue[MEMORY_SIZE]; |
|
|
char cloud_record_v2_statue[MEMORY_SIZE]; |
|
|
|
|
|
char enable_post_only_if_both_detected[10]; |
|
|
|
|
|
char enable_getalarmmotion_snap[10]; |
|
|
char getimage_encoder_id[10]; |
|
|
char getimage_encoder_id_HD[10]; |
|
|
|
|
|
char osd_encoder_id[10]; |
|
|
char osd_font_size[10]; |
|
|
char osd_outline_lilin[10]; |
|
|
char enable_osd_bottom[10]; |
|
|
char osd_bottom_bg_tran[10]; |
|
|
char osd_bottom_content[BUFSIZE_V3]; |
|
|
|
|
|
|
|
|
char sensors_type[10]; |
|
|
|
|
|
char enable_sync_external_lpr_db[10]; |
|
|
char external_lpr_db_IP[256]; |
|
|
char external_lpr_db_port[10]; |
|
|
char external_lpr_db_username[60]; |
|
|
char external_lpr_db_password[60]; |
|
|
|
|
|
char enable_email_notification[10]; |
|
|
char enable_system_logs[10]; |
|
|
char enable_email_jpeg[10]; |
|
|
char send_counter_at_specific_hour[10]; |
|
|
char email_reset_time_interval[20]; |
|
|
|
|
|
char enable_ftp[10]; |
|
|
char ftp_url[256]; |
|
|
char ftp_port[25]; |
|
|
char ftp_username[256]; |
|
|
char ftp_password[256]; |
|
|
char ftp_remote_directory[1024]; |
|
|
char ftp_jpeg_file_name_format[10 + 1]; |
|
|
char ftp_jpeg_file_name[60]; |
|
|
|
|
|
} SystemSettingInfo; |
|
|
|
|
|
typedef struct |
|
|
{ |
|
|
char post_protocol[10 + 1]; |
|
|
char post_event_method[10+1]; |
|
|
char post_event_name[60]; |
|
|
char post_host_ip[256]; |
|
|
char post_host_port[5+1]; |
|
|
char post_url[8192];//BUFSIZE_V2 |
|
|
char post_username[60]; |
|
|
char post_password[60]; |
|
|
char post_content[MAX_IMG_SIZE]; |
|
|
char post_customized_header[8192]; |
|
|
|
|
|
//unsigned char post_content_bin[MAX_HTTP_BUFFER]; |
|
|
char post_sequence[60]; |
|
|
|
|
|
char post_file_format[10 + 1]; |
|
|
char post_jpeg_file_name_format[10 + 1]; |
|
|
char post_jpeg_file_name[60]; |
|
|
|
|
|
char post_timeout[10]; |
|
|
|
|
|
int check_if_delivering; |
|
|
} PostEventInfo; |
|
|
|
|
|
typedef struct |
|
|
{ |
|
|
char email_content[BUFSIZE_V3]; |
|
|
//unsigned char email_content_bin[MAX_HTTP_BUFFER]; |
|
|
} EmailInfo; |
|
|
|
|
|
typedef struct { |
|
|
//int nListIndex; |
|
|
char counter_name[36 + 1]; |
|
|
int counter_zone; |
|
|
char counter_cust_name[256]; |
|
|
char counter_unit[16 + 1]; |
|
|
int reset_value; |
|
|
|
|
|
int reset_year; |
|
|
int reset_month; |
|
|
int reset_month_day; |
|
|
int reset_week_day; |
|
|
int reset_hour; |
|
|
int reset_min; |
|
|
int reset_sec; |
|
|
|
|
|
int gmt_year; |
|
|
int gmt_month; |
|
|
int gmt_month_day; |
|
|
int gmt_week_day; |
|
|
int gmt_hour; |
|
|
int gmt_min; |
|
|
int gmt_sec; |
|
|
|
|
|
int next_year; |
|
|
int next_month; |
|
|
int next_month_day; |
|
|
int next_week_day; |
|
|
int next_hour; |
|
|
int next_min; |
|
|
int next_sec; |
|
|
|
|
|
char ReportTimeInterval[30]; |
|
|
char ResetTime[50]; |
|
|
|
|
|
int already_reset; |
|
|
int counter_count; |
|
|
time_t timetResetAt; |
|
|
time_t next_timetResetAt; |
|
|
|
|
|
char enable_reset_time_interval[10 + 1]; |
|
|
char reset_time_interval[36 + 1]; |
|
|
char reset_at[36 + 1]; |
|
|
|
|
|
char enable_time_range[10 + 1]; |
|
|
char time_range_from[36 + 1]; |
|
|
char time_range_to[36 + 1]; |
|
|
time_t timetTimeRangeFrom; |
|
|
time_t timetTimeRangeTo; |
|
|
|
|
|
char link_to_post_event_name[256]; |
|
|
char post_interval[36 + 1]; |
|
|
|
|
|
int dwell_time; |
|
|
char dwell_unit[10 + 1]; |
|
|
|
|
|
//char MetaOut1[512][50]; |
|
|
//int metadata1_num; |
|
|
|
|
|
char enable_reset_only_cloud[10 + 1]; |
|
|
char enable_linked_to_dwell_time[10 + 1]; |
|
|
time_t last_post_time; |
|
|
|
|
|
} EventCounterInfo; |
|
|
|
|
|
typedef struct { |
|
|
char counter_a[20]; |
|
|
char counter_a_name[50]; |
|
|
char counter_a_zone[10]; |
|
|
char counter_b[20]; |
|
|
char counter_b_name[50]; |
|
|
char counter_b_zone[10]; |
|
|
char counter_c_name[50]; |
|
|
|
|
|
char report_max_value[20]; |
|
|
|
|
|
char enable_report[10]; |
|
|
|
|
|
char counter_mode[20]; |
|
|
|
|
|
char initial_icon[50]; |
|
|
char output_icon[50]; |
|
|
|
|
|
char detection_output[100]; |
|
|
|
|
|
} ReportCounterInfo; |
|
|
|
|
|
typedef struct { |
|
|
char snmp_event_name[256]; |
|
|
char snmp_version[10]; |
|
|
char snmp_group_name[256]; |
|
|
char snmp_host_ip[256]; |
|
|
char snmp_host_port[10]; |
|
|
char snmp_oid[256]; |
|
|
char snmp_value[BUFSIZE]; |
|
|
char snmp_type[20]; |
|
|
|
|
|
int check_if_delivering; |
|
|
} SNMPManagementInfo; |
|
|
|
|
|
//20201027 sophia add |
|
|
//read from [ipcam /usr/local/bin/nvclient -k user.password0 /usr/local/bin/nvclient -k user.account0 ...9] |
|
|
//save to config.json account_setting->account_data |
|
|
typedef struct { |
|
|
char account_username[256]; |
|
|
char account_password[256]; |
|
|
char account_port[50]; |
|
|
char account_mirror[20]; |
|
|
char account_flip[20]; |
|
|
char account_rotate[20]; |
|
|
char account_aida_port[50]; |
|
|
int account_type; //default ? |
|
|
int account_status; //default ? |
|
|
} AccountDataInfo; |
|
|
|
|
|
typedef struct { |
|
|
//pthread_t thread_id; |
|
|
SOCKET sock; |
|
|
int channel_id; |
|
|
double fps; |
|
|
//time_t last_recv_time; |
|
|
//SecData recent_sec_data[FPS_AVG_SECS]; |
|
|
int isGetAlarmMotion; |
|
|
//int isFirstAlarmMotion; |
|
|
int isWebSocketConnect; |
|
|
int isNvrRequest; |
|
|
int isCredentialRequest; |
|
|
#if defined GY_OS_AMBA || defined GY_OS_NOVA |
|
|
int isUdpSocket; //20201112 sophia add |
|
|
#endif //GY_OS_AMBA |
|
|
uchar* prev_frame_data; |
|
|
//int iIsWebsocketHybi00; |
|
|
#if defined GY_OS_AMBA |
|
|
//int iIsAIRelay; |
|
|
#endif |
|
|
int debug_type; |
|
|
|
|
|
int used; |
|
|
|
|
|
} SocketInfo; |
|
|
|
|
|
typedef struct { |
|
|
char curl_url[8192]; |
|
|
char curl_sendbuf[8192]; |
|
|
char method[32]; |
|
|
char username[64]; |
|
|
char password[64]; |
|
|
char port[10]; //strtol(q_info->host_port, NULL, 10) |
|
|
} CURL_SEND; |
|
|
|
|
|
typedef struct { |
|
|
int tof_version; |
|
|
bool tof_debug; |
|
|
int tof_install_angle; |
|
|
bool tof_enable_camera; |
|
|
bool enable_tof_ground; |
|
|
bool enable_tof_wall; |
|
|
|
|
|
char tof_camera_ip[256]; |
|
|
char tof_camera_port[10]; |
|
|
char tof_camera_sub_url[8192]; |
|
|
char tof_auth_key[8192]; |
|
|
bool tof_ip_setting; |
|
|
char tof_camera_username[512]; |
|
|
char tof_camera_password[512]; |
|
|
|
|
|
char distance_options[10]; |
|
|
char distance_min_max[10]; |
|
|
char distance_threshold[20]; |
|
|
char height_options[10]; |
|
|
char height_min_max[10]; |
|
|
char height_threshold[20]; |
|
|
|
|
|
char ground_x[10]; |
|
|
char ground_y[10]; |
|
|
} TofInfo; |
|
|
|
|
|
typedef struct { |
|
|
char enable_heartbeat[10]; |
|
|
char events_default_version[10]; |
|
|
char heartbeat_dwell[10]; |
|
|
char heartbeat_link_to_post_event_name[256]; |
|
|
|
|
|
char dwell_to_the_same_location[10]; |
|
|
|
|
|
char enable_snmp_heartbeat[10]; |
|
|
char snmp_heartbeat_dwell[10]; |
|
|
char snmp_heartbeat_link_to_post_event_name[256]; |
|
|
|
|
|
char enable_only_once_to_post[10]; |
|
|
char enable_obj_once_to_post[10]; |
|
|
char enable_location_once_to_post[10]; |
|
|
char enable_nvr_once_to_getalarmmotion[10]; |
|
|
char enable_8592_once_to_getalarmmotion[10]; |
|
|
|
|
|
char heatmap_max[20]; |
|
|
char enable_heatmap[10]; |
|
|
char heatmap_frequency[20]; |
|
|
char lpr_title[256]; |
|
|
|
|
|
char enable_counter_snap[10]; |
|
|
char enable_barcode_qr[10]; |
|
|
|
|
|
char enable_check_ptz_start_autotracking[10]; |
|
|
char enable_check_ptz_end_autotracking[10]; |
|
|
char ptz_start_autotracking_link_to_post_event_name[256]; |
|
|
char ptz_end_autotracking_link_to_post_event_name[256]; |
|
|
} HeartbeatInfo; |
|
|
|
|
|
typedef struct { |
|
|
char sPlateNumber[100]; |
|
|
time_t t_FirstGetTime; |
|
|
time_t t_UpdateTime; |
|
|
time_t t_LoopTime; |
|
|
|
|
|
int iGetCounter; |
|
|
int iIfUse; |
|
|
|
|
|
float box_x; |
|
|
float box_y; |
|
|
float box_w; |
|
|
float box_h; |
|
|
|
|
|
float last_box_x; |
|
|
float last_box_y; |
|
|
float last_box_w; |
|
|
float last_box_h; |
|
|
|
|
|
float last_box_center_x; |
|
|
float last_box_center_y; |
|
|
|
|
|
int iPlateZoomOutCounter; |
|
|
int iPlateZoomInCounter; |
|
|
|
|
|
int iTrackingID; |
|
|
//int iTrackingIDidx; |
|
|
|
|
|
int existing_dash; |
|
|
|
|
|
char car_type_name[20]; |
|
|
int check_if_counted[MAX_DETECTION_ZONE]; |
|
|
|
|
|
} PlateRecoder; |
|
|
|
|
|
typedef struct { |
|
|
//char name[30]; |
|
|
//int class_id; |
|
|
|
|
|
time_t t_FirstGetTime; |
|
|
time_t t_UpdateTime; |
|
|
|
|
|
int iGetCounter; |
|
|
int iIfUse; |
|
|
|
|
|
float box_x; |
|
|
float box_y; |
|
|
float box_w; |
|
|
float box_h; |
|
|
|
|
|
//float left_x; |
|
|
//float top_y; |
|
|
|
|
|
int iTrackingID; |
|
|
//int iTrackingIDidx; |
|
|
|
|
|
int check_if_counted[MAX_DETECTION_ZONE]; |
|
|
|
|
|
} ObjectRecoder; |
|
|
|
|
|
typedef struct { |
|
|
char name[30]; |
|
|
char sPlateNumber[100]; |
|
|
|
|
|
time_t t_FirstGetTime_total; |
|
|
time_t t_FirstGetTime; |
|
|
time_t t_UpdateTime; |
|
|
|
|
|
int iIfUse; |
|
|
|
|
|
float box_x; |
|
|
float box_y; |
|
|
float box_w; |
|
|
float box_h; |
|
|
|
|
|
int check_if_post[MAX_DETECTION_ZONE]; |
|
|
int check_if_cloud; |
|
|
int check_if_cloud_v2; |
|
|
int check_if_cloud_record_v2; |
|
|
int check_if_email; |
|
|
int check_if_ftp; |
|
|
int check_if_getalarmmotion; |
|
|
|
|
|
int object_id; |
|
|
int zone_idx; |
|
|
|
|
|
//int the_same_id; |
|
|
|
|
|
float count_trigger; |
|
|
|
|
|
//detection_pos ori_Data; |
|
|
//int iIsInvisible; |
|
|
//time_t t_InvisibleStartTime; |
|
|
//time_t t_InvisibleUpdateTime; |
|
|
|
|
|
} PostRecoder; |
|
|
|
|
|
|
|
|
typedef struct { |
|
|
|
|
|
int locked; |
|
|
|
|
|
int used; |
|
|
float box_x; |
|
|
float box_y; |
|
|
float box_w; |
|
|
float box_h; |
|
|
|
|
|
} MotionAreaInfo; |
|
|
|
|
|
typedef struct { |
|
|
int color_mode;//image.dn.switch //0 auto mode; 1 day mode; 2 night mode; 3 schedule mode |
|
|
int light_sensor_value;//image.dn.luminosity |
|
|
int day_to_night_threshold;//image.dn.luminosity.dtn |
|
|
int night_to_day_threshold;//image.dn.luminosity.ntd |
|
|
int dwell_sec_in_auto_mode;//image.dn.switch.dwell |
|
|
int day_to_night_time_of_schedule;//image.dn.schedule.day |
|
|
int night_to_day_time_of_schedule;//image.dn.schedule.night |
|
|
|
|
|
int hour_day_to_night; |
|
|
int min_day_to_night; |
|
|
int total_min_day_to_night; |
|
|
|
|
|
int hour_night_to_day; |
|
|
int min_night_to_day; |
|
|
int total_min_night_to_day; |
|
|
|
|
|
int current_day_or_night_mode;//result // day : 1 ; night : 2 |
|
|
int last_day_or_night_mode; |
|
|
|
|
|
int check_if_switch_happened[MAX_SIZE_SWITCH_HAPPENED]; |
|
|
|
|
|
//int ircut; |
|
|
//int irledfar; |
|
|
//int irlednear; |
|
|
|
|
|
int iAutoModeSwitchCount; |
|
|
} ImageDn; |
|
|
|
|
|
typedef struct { |
|
|
int id; |
|
|
int flag_protected; |
|
|
int x; |
|
|
int y; |
|
|
int w; |
|
|
int h; |
|
|
int color; |
|
|
int size; |
|
|
int show_sec; |
|
|
int bg_tran; //0~255 |
|
|
int outline_sw; //0:off 1:on |
|
|
char text[256]; |
|
|
} OSDInfo; |
|
|
|
|
|
typedef struct { |
|
|
int flag_protected; |
|
|
float speed; |
|
|
char speed_unit[256]; |
|
|
float res_width; |
|
|
float res_height; |
|
|
float x; |
|
|
float y; |
|
|
} SpeedInfo; |
|
|
|
|
|
extern char g_aWebPythonBuffer2D[WEBPYTHONBUFFER_LENSIZE][WEBPYTHONBUFFER_ROWSIZE]; |
|
|
extern unsigned int g_uiWebPythonCurrentBufferIndex; |
|
|
extern unsigned int g_uiWebPythonLastBufferIndex; |
|
|
extern unsigned int g_cWebPythonBufferSignal; |
|
|
extern unsigned int g_cWebPythonDeleteStatus; |
|
|
extern char g_cWebPythonName[50]; |
|
|
extern unsigned int g_cWebPythonStatus; |
|
|
extern unsigned int python_check_webstatus; // <EFBFBD><EFBFBD><EFBFBD>}<EFBFBD><EFBFBD> plugin <EFBFBD>ɥΪ<EFBFBD> |
|
|
|
|
|
extern bool isGYNetReady; |
|
|
|
|
|
//===================== |
|
|
//sophia add 2020/09/24 |
|
|
#if defined GY_OS_AMBA || defined GY_OS_NOVA |
|
|
|
|
|
#include "alm_queue.h" |
|
|
|
|
|
typedef struct { |
|
|
SOCKET sock; |
|
|
//stALMNode *head; |
|
|
//stALMNode *tail; |
|
|
//int iIsWebsockethybi00; |
|
|
} SocketInfo_ALM; |
|
|
|
|
|
//extern SocketInfo_ALM socketRecord_ALM[MAX_CLIENT_SOCKET]; |
|
|
extern int bHttpServerMainStart; |
|
|
extern int bPreloadHttpServerMainStart; |
|
|
#endif //GY_OS_AMBA |
|
|
//===================== |
|
|
|
|
|
extern int g_check_ping_OK; |
|
|
|
|
|
extern int g_sdk_version; |
|
|
|
|
|
extern int CheckIsExistingSpeed; |
|
|
|
|
|
extern SocketInfo socketRecords[MAX_CLIENT_SOCKET]; |
|
|
extern ChannelInfo viewChannelData[MAX_AI_ENGINE_VIEW]; |
|
|
extern DetectionZoneInfo viewDetectionZone[MAX_AI_ENGINE_VIEW][MAX_DETECTION_ZONE]; |
|
|
extern SystemSettingInfo SystemSetting; |
|
|
extern PostEventInfo postEventList[MAX_POST_EVENTS]; |
|
|
#ifdef GY_OS_V_SERIES |
|
|
|
|
|
#else |
|
|
extern EventCounterInfo eventCounterList[MAX_EVENT_COUNTERS]; |
|
|
extern ReportCounterInfo reportCounterList[MAX_REPORT_COUNTERS]; |
|
|
extern SNMPManagementInfo SNMPManagementList[MAX_SNMP_MANAGEMENT]; |
|
|
#endif |
|
|
|
|
|
extern AccountDataInfo accountData[MAX_ACCOUNT_DATA_NUM]; //20201027 sophia add |
|
|
extern IPCAMServiceInfo IPCAMService; |
|
|
extern SnapHDInfo snapHDList[MAX_SNAP_HD_LIST]; |
|
|
extern WeightFileInfo weightfileList[MAX_WEIGHT_FILE_LIST]; |
|
|
extern char WeightFileModeName[35]; |
|
|
extern EmailInfo emailData; |
|
|
extern HeartbeatInfo heartbeatData; |
|
|
#ifdef GY_OS_AMBA |
|
|
extern TofInfo tofData; |
|
|
#endif |
|
|
|
|
|
#if defined GY_OS_AMBA || defined GY_OS_NOVA |
|
|
extern PlateRecoder g_PlateRecorderList[MAX_PLATE_RECORDER]; |
|
|
#endif |
|
|
extern ObjectRecoder g_ObjectRecorderList[MAX_OBJECT_RECORDER]; |
|
|
extern PostRecoder g_PostRecorderList[MAX_POST_RECODER_SIZE]; |
|
|
extern PostRecoder g_longterm_PostRecorderList[MAX_POST_RECODER_SIZE]; |
|
|
|
|
|
//extern MotionAreaInfo g_Motion_Area_Data[MAX_MOTION_AREA]; |
|
|
|
|
|
#if defined GY_OS_AMBA || defined GY_OS_NOVA |
|
|
extern ImageDn imageDnData; |
|
|
|
|
|
#endif |
|
|
|
|
|
#ifdef GY_OS_AMBA |
|
|
|
|
|
extern OSDInfo OSDData[MAX_SIZE_OSD_ARRAY]; |
|
|
extern SpeedInfo SpeedData[MAX_SIZE_SP_ARRAY]; |
|
|
#endif |
|
|
extern int g_PlateFilterTimes; //Times |
|
|
extern int g_PlateFilterTime; //Second |
|
|
extern int g_PlateRecorderFreeTime; //Second |
|
|
#ifdef GY_OS_AMBA |
|
|
extern int g_face_frame_uid; |
|
|
#endif |
|
|
extern int g_IsRadarDevice; |
|
|
extern char radar_json_data[4096]; |
|
|
|
|
|
extern int unlockingKeyInnoFR_success; |
|
|
extern int unlockingKeyInnoFR; |
|
|
|
|
|
extern int g_IsSDK_3_0; |
|
|
extern int g_IsToFDevice; |
|
|
extern int g_IsCustomWeight; |
|
|
extern int g_IsHelm_without_car; |
|
|
|
|
|
extern float g_min_tof_range; |
|
|
extern int g_min_tof_range_x; |
|
|
extern int g_min_tof_range_y; |
|
|
|
|
|
extern float g_max_tof_range; |
|
|
extern int g_max_tof_range_x; |
|
|
extern int g_max_tof_range_y; |
|
|
|
|
|
extern int g_bIsSendTofPCD; |
|
|
extern int g_bIsWritingPCD; |
|
|
|
|
|
extern float g_ground_tof_range; |
|
|
|
|
|
extern float g_min_tof_degree; |
|
|
extern float g_min_tof_height; |
|
|
extern float g_min_tof_distance; |
|
|
|
|
|
extern float g_max_tof_degree; |
|
|
extern float g_max_tof_height; |
|
|
extern float g_max_tof_distance; |
|
|
|
|
|
extern float g_ground_tof_degree; |
|
|
extern float g_ground_tof_height; |
|
|
extern float g_ground_tof_distance; |
|
|
|
|
|
extern double g_tof_device_height; |
|
|
|
|
|
extern int g_ori_yuv_width; |
|
|
extern int g_ori_yuv_height; |
|
|
extern int g_ori_half_yuv_width; |
|
|
extern int g_ori_half_yuv_height; |
|
|
|
|
|
//extern int sockNum[4]; |
|
|
extern zlog_category_t *zc; |
|
|
extern double begin_clock; |
|
|
|
|
|
extern float confidence_limit; |
|
|
extern int AI_fps; |
|
|
|
|
|
#ifdef REBOOT_BY_CPU_GPU_USAGE |
|
|
extern int CPU_usage_int; |
|
|
extern int GPU_usage_int; |
|
|
#endif |
|
|
|
|
|
extern char CPU_usage[256]; |
|
|
extern char GPU_usage[256]; |
|
|
extern char Buffer_ver[BUFSIZE]; |
|
|
//extern bool enable_loop_getalarmmotion; |
|
|
//extern int times_of_enable_loop_getalarmmotion; |
|
|
extern int g_write_config_file_dirty_flag; |
|
|
|
|
|
extern int g_match_mac; |
|
|
extern char g_mac_address[256]; |
|
|
|
|
|
extern int enable_only_show_metadata1; |
|
|
extern char websocket_alarm[CONTENT_BUFSIZE]; |
|
|
|
|
|
extern int g_i_get_cpu_loading; |
|
|
|
|
|
//extern CURLM* g_multi_handle; |
|
|
extern CURL* g_http_handle; |
|
|
//extern int g_handle_count; |
|
|
|
|
|
extern int g_alter_something; |
|
|
extern int g_count_alter; |
|
|
|
|
|
extern long g_image_HD_pasue_time; |
|
|
extern int g_video_start_HD; |
|
|
|
|
|
extern int g_current_max_num_image_buff; |
|
|
|
|
|
extern int g_osdTime_sw; |
|
|
extern long g_osdSysTimeStamp; |
|
|
extern int g_osdSysTimeZoneInfo; |
|
|
|
|
|
extern int check_if_correct_post; |
|
|
extern int check_if_run_post; |
|
|
|
|
|
extern long g_post_SysTimeStamp; |
|
|
|
|
|
int run_http_server(char *option, void* _zc, CNNType cnn_type/*, int layer_count, network nets[], char **names[], image **alphabet, float nms[]*/, float thresh, float hier_thresh, int dont_show, int ext_output, int save_labels, |
|
|
char *mac_address, char *ip_address, int http_port, LicenseType licenseType, AdvanceLicenseType advLicenseType, AuthFailStatusCode afsCode, size_t layerFeatureType[], char* strLicenseType); |
|
|
|
|
|
//int caculate_ftp_of_each_sockets(SOCKET sock, int *sock_record_idx); |
|
|
#ifdef GY_OS_NOVA |
|
|
size_t SetHttpRequest_sock(QueueInfo *q_info, char* sendBuffer, char* method); |
|
|
#endif |
|
|
size_t SetHttpRequest(QueueInfo* q_info, char* sendBuffer, char* method); |
|
|
size_t SetHttpResponse(char* sendBuffer, int httpCode, char* contentType, size_t contentLen, char* content); |
|
|
void Create_ptz_socket(); |
|
|
void SetHttpRequest_ptz(char* cgi_url, char* sOutput_data, char* username, char* password); |
|
|
//void SetHttpRequest_ptz(); |
|
|
//size_t SetHttpRequest_ptz(QueueInfo *q_info, char* sendBuffer, char* method); |
|
|
size_t SetHttpResponse_server(char* sendBuffer, int httpCode, char* contentType, size_t contentLen, char* content); |
|
|
void replace_one_line_in_a_file(char *path, int line, char *newline); |
|
|
#if 0 |
|
|
void GetAidaPort(); |
|
|
#endif |
|
|
void update_enable_only_show_metadata1(int temp_enable_only_show_metadata1); |
|
|
size_t get_service_from_ipcam(char * response_from_ipcam); |
|
|
size_t get_control_io_from_ipcam(char * response_from_ipcam); |
|
|
void copy_ipcam_smtp_service_to_gynet(); |
|
|
void copy_control_io_to_gynet(); |
|
|
void sync_other_camera_lpr_db(); |
|
|
|
|
|
void *net_curl_https_post_push_info(void *ptr); |
|
|
void *net_curl_https_post_push_info_attached_image(void *ptr); |
|
|
|
|
|
void net_curl_ftp_post_push_info_attached_image(char* image_buff, int image_buff_size); |
|
|
void net_curl_ftp_build_folder(); |
|
|
#ifdef GY_OS_AMBA |
|
|
size_t SetSNMPRequest(QueueInfo *q_info); |
|
|
#endif |
|
|
void *net_curl_https_get_other_lpr_db(void *ptr); |
|
|
|
|
|
extern char id[512]; |
|
|
extern char pass[512]; |
|
|
|
|
|
extern char strUnlockingKey[MAX_MSG_LEN]; |
|
|
extern char strLicenseStatus[MAX_MSG_LEN]; |
|
|
|
|
|
extern char g_device_name[512]; |
|
|
|
|
|
extern int g_IsPTZDevice; |
|
|
extern int g_check_if_no_brand; |
|
|
|
|
|
extern int g_check_if_OK_getfeatures; |
|
|
extern int g_check_if_OK_thermal; |
|
|
|
|
|
void memset_snapshot_addr(); |
|
|
|
|
|
void build_one_smart_event(char * myname, char * myvalue); |
|
|
void build_one_gpio(char * myname, char * myvalue); |
|
|
|
|
|
void* auto_build_smart_events(void * ptr); |
|
|
void* auto_build_smart_events_di_vi(void * ptr); |
|
|
void build_one_set_for_quality_basic(char * myname, char * myvalue); |
|
|
#ifdef GY_OS_AMBA |
|
|
void build_one_set_for_tof_basic(char * myname, char * myvalue); |
|
|
#endif |
|
|
void* auto_set_quality_basic(void * ptr); |
|
|
#ifdef GY_OS_AMBA |
|
|
void* auto_set_tof_basic(void * ptr); |
|
|
#endif |
|
|
|
|
|
size_t build_resolution_changed(char * response_from_ipcam); |
|
|
extern pthread_t resolution_changed_thread; |
|
|
void* auto_resolution_changed(void * ptr); |
|
|
#ifdef GY_OS_AMBA |
|
|
void* check_current_resolution(void * ptr); |
|
|
void set_run_check_current_resolution(int set_value); |
|
|
int get_run_check_current_resolution(); |
|
|
#endif |
|
|
void write_to_stream_width_and_stream_height(int stream_width, int stream_height); |
|
|
int get_g_check_if_different_width_or_height(); |
|
|
|
|
|
void build_reboot(char * myname, char * myvalue); |
|
|
void ipcam_getfeatures(); |
|
|
|
|
|
void* auto_reboot(void * ptr); |
|
|
|
|
|
void build_system(char * myname, char * myvalue); |
|
|
void* auto_system(void * ptr); |
|
|
|
|
|
void sync_image_rotation_thread(); |
|
|
|
|
|
int is_connection_authorized(char* recvBuffer, SOCKET *client_socket, int isTcpTunnel); |
|
|
|
|
|
void import_lpr_list_file(char *headerBuffer, char *multiPartBoundary, int bIsMultipart, char *contentBuffer, long nTotalContentLen); |
|
|
void *import_lpr_list_file_thread(void *ptr); |
|
|
#ifdef GY_OS_AMBA |
|
|
void *import_face_list_file_thread(void *ptr); |
|
|
#endif |
|
|
void get_snap_with_profile_id(int i_profileid, int enable_check_profile_id); |
|
|
#ifdef GY_OS_NOVA |
|
|
void *pre_connection_handler(void *socket_temp); |
|
|
#endif |
|
|
void *thread_getimage(void *ptr); |
|
|
void *thread_getimage_hd(void *ptr); |
|
|
|
|
|
#ifdef GY_OS_NOVA |
|
|
void *thread_get_nova_driver(void *ptr); |
|
|
#endif |
|
|
char *removeHTTPHeader(char *buffer, int *bodySize); |
|
|
void getPicture(int socketfd, int bSize, int current_profile_id, int enable_check_profile_id); |
|
|
int get_g_framesize_width(); |
|
|
int get_g_framesize_height(); |
|
|
|
|
|
void web_process(SOCKET* client_socket, char* recvBuffer, int recv_buff_size, char* contentBuffer/*, int layer_count, network nets[], char **names[], image **alphabet, float nms[]*/, float thresh, float hier_thresh, int dont_show, int ext_output, int save_labels, int http_port, LicenseType licenseType, AdvanceLicenseType advLicenseType, AuthFailStatusCode afsCode, size_t layerFeatureType[], char* strLicenseType, int* isGetalarmMotion, int sock_info_idx); |
|
|
|
|
|
#ifdef GY_OS_AMBA |
|
|
int get_g_check_if_change_preset(); |
|
|
void set_g_check_if_change_preset_to_zero(); |
|
|
void *import_radarbg_thread(void *ptr); |
|
|
void import_radarbg(char *headerBuffer, char *multiPartBoundary, int bIsMultipart, char *contentBuffer, long nTotalContentLen); |
|
|
#endif |
|
|
void update_system_time(); |
|
|
|
|
|
int get_g_control_alarm_gpio(); |
|
|
void set_g_control_alarm_gpio_to_zero(); |
|
|
void set_g_control_alarm_gpio_to_one(); |
|
|
#ifdef GY_OS_NOVA |
|
|
void start_nova_driver(); |
|
|
void get_nova_driver(int socketfd); |
|
|
#endif |
|
|
|
|
|
#ifdef __cplusplus |
|
|
} |
|
|
#endif |
|
|
|
|
|
#endif |
|
|
#endif |