/* Disconnect on the TCP layer */ void tcp_disconnect(rdpTcp * tcp) { if (tcp->sock != -1) { TCP_CLOSE(tcp->sock); tcp->sock = -1; } #ifdef _WIN32 if (tcp->wsa_event) { WSACloseEvent(tcp->wsa_event); tcp->wsa_event = 0; } #endif }
/* Disconnect on the TCP layer */ void tcp_disconnect(void) { if (g_ssl) { if (!g_network_error) (void) SSL_shutdown(g_ssl); SSL_free(g_ssl); g_ssl = NULL; SSL_CTX_free(g_ssl_ctx); g_ssl_ctx = NULL; } TCP_CLOSE(g_sock); g_sock = -1; }
bool IdentClient::CommandProc(unsigned char *buf, unsigned int cmd) { switch(cmd) { case CMD_NUM_PTZ: { SendParaPtz(); } break; case CMD_NUM_VIDEO: { SendParaVideo(); } break; case CMD_NUM_ALG: { SendParaAlg(); } break; case CMD_NUM_ALG_CONF_00: case CMD_NUM_ALG_CONF_01: case CMD_NUM_ALG_CONF_02: case CMD_NUM_ALG_CONF_03: case CMD_NUM_ALG_CONF_04: { SendParaAlgConf(cmd); } break; case CMD_NUM_ALG_QUAD_000003: case CMD_NUM_ALG_QUAD_004007: case CMD_NUM_ALG_QUAD_008011: case CMD_NUM_ALG_QUAD_012015: case CMD_NUM_ALG_QUAD_016019: case CMD_NUM_ALG_QUAD_020023: case CMD_NUM_ALG_QUAD_024027: case CMD_NUM_ALG_QUAD_028031: case CMD_NUM_ALG_QUAD_032035: case CMD_NUM_ALG_QUAD_036039: case CMD_NUM_ALG_QUAD_040043: case CMD_NUM_ALG_QUAD_044047: case CMD_NUM_ALG_QUAD_048051: case CMD_NUM_ALG_QUAD_052055: case CMD_NUM_ALG_QUAD_056059: case CMD_NUM_ALG_QUAD_060063: case CMD_NUM_ALG_QUAD_064067: case CMD_NUM_ALG_QUAD_068071: case CMD_NUM_ALG_QUAD_072075: case CMD_NUM_ALG_QUAD_076079: case CMD_NUM_ALG_QUAD_080083: case CMD_NUM_ALG_QUAD_084087: case CMD_NUM_ALG_QUAD_088091: case CMD_NUM_ALG_QUAD_092095: case CMD_NUM_ALG_QUAD_096099: case CMD_NUM_ALG_QUAD_100103: case CMD_NUM_ALG_QUAD_104107: case CMD_NUM_ALG_QUAD_108111: case CMD_NUM_ALG_QUAD_112115: case CMD_NUM_ALG_QUAD_116119: case CMD_NUM_ALG_QUAD_120123: case CMD_NUM_ALG_QUAD_124127: { SendParaAlgQuad(cmd); } break; case CMD_NUM_ALG_AREA_000003: case CMD_NUM_ALG_AREA_004007: case CMD_NUM_ALG_AREA_008011: case CMD_NUM_ALG_AREA_012015: case CMD_NUM_ALG_AREA_016019: case CMD_NUM_ALG_AREA_020023: case CMD_NUM_ALG_AREA_024027: case CMD_NUM_ALG_AREA_028031: { SendParaAlgArea(cmd); } break; case CMD_NUM_ALG_LINE_000003: case CMD_NUM_ALG_LINE_004007: case CMD_NUM_ALG_LINE_008011: case CMD_NUM_ALG_LINE_012015: { SendParaAlgLine(cmd); } break; case CMD_NUM_ALG_COUNT_000003: case CMD_NUM_ALG_COUNT_004007: case CMD_NUM_ALG_COUNT_008011: case CMD_NUM_ALG_COUNT_012015: { SendParaAlgCount(cmd); } break; case CMD_NUM_ALG_ENTER_000003: case CMD_NUM_ALG_ENTER_004007: case CMD_NUM_ALG_ENTER_008011: case CMD_NUM_ALG_ENTER_012015: { SendParaAlgEnter(cmd); } break; case CMD_NUM_ALG_OUT_000003: case CMD_NUM_ALG_OUT_004007: case CMD_NUM_ALG_OUT_008011: case CMD_NUM_ALG_OUT_012015: { SendParaAlgOut(cmd); } break; case CMD_NUM_ALG_FINDBAG_000003: case CMD_NUM_ALG_FINDBAG_004007: case CMD_NUM_ALG_FINDBAG_008011: case CMD_NUM_ALG_FINDBAG_012015: { SendParaAlgFindBag(cmd); } break; case CMD_NUM_ALG_LOST_000002: case CMD_NUM_ALG_LOST_003005: { SendParaAlgLost(cmd); } break; case CMD_NUM_ALG_DIRECT_000003: case CMD_NUM_ALG_DIRECT_004007: { SendParaAlgDirect(cmd); } break; case CMD_NUM_ALG_DIRECT_008011: case CMD_NUM_ALG_DIRECT_012015: { SendParaAlgDirect(cmd); } break; case CMD_NUM_ALG_DETECT_000003: case CMD_NUM_ALG_DETECT_004007: { SendParaAlgDetect(cmd); } break; case CMD_NUM_ALG_DETECT_008011: case CMD_NUM_ALG_DETECT_012015: { SendParaAlgDetect(cmd); } break; case CMD_NUM_ALG_PEOPLEDENSE_000003: case CMD_NUM_ALG_PEOPLEDENSE_004007: case CMD_NUM_ALG_PEOPLEDENSE_008011: case CMD_NUM_ALG_PEOPLEDENSE_012015: { SendParaAlgPeopleDense(cmd); } break; case CMD_NUM_ALG_CLUSTERDETE_000003: case CMD_NUM_ALG_CLUSTERDETE_004007: case CMD_NUM_ALG_CLUSTERDETE_008011: case CMD_NUM_ALG_CLUSTERDETE_012015: { SendParaAlgClusterDete(cmd); } break; case CMD_NUM_ALG_MOTIONHISTORY_000003: case CMD_NUM_ALG_MOTIONHISTORY_004007: case CMD_NUM_ALG_MOTIONHISTORY_008011: case CMD_NUM_ALG_MOTIONHISTORY_012015: { SendParaAlgMotionHistory(cmd); } break; case CMD_NUM_ALG_HOVERDETE_000003: case CMD_NUM_ALG_HOVERDETE_004007: case CMD_NUM_ALG_HOVERDETE_008011: case CMD_NUM_ALG_HOVERDETE_012015: { SendParaAlgHoverDete(cmd); } break; case CMD_NUM_ALG_ALARMLINE_000003: case CMD_NUM_ALG_ALARMLINE_004007: case CMD_NUM_ALG_ALARMLINE_008011: case CMD_NUM_ALG_ALARMLINE_012015: { SendParaAlgAlarmLine(cmd); } break; case CMD_NUM_ALG_RUNNING_000003://获取人员奔跑形状8-11个区域配置请求ALG_DETECT_PARA case CMD_NUM_ALG_RUNNING_004007://获取人员奔跑形状12-15个区域配置请求ALG_DETECT_PARA case CMD_NUM_ALG_RUNNING_008011://获取人员奔跑形状12-15个区域配置请求ALG_DETECT_PARA case CMD_NUM_ALG_RUNNING_012015://获取人员奔跑形状12-15个区域配置请求ALG_DETECT_PARA { SendParaAlgRunning(cmd); } break; case CMD_NUM_SYS_CONFIG://获取系统配置请求SYS_CONFIG_PARA { SendParaSysConfig(); } break; case CMD_NUM_ALARM_YM://获取报警目录信息请求ALARM_YM_PARA { SendParaAlarmYM(); } break; case CMD_NUM_PIC_CONTENTS://获取报警照片请求PIC_CONTENTS { SendParaPicContents(buf); } break; case CMD_NUM_SYS_STORAGE://获取系统存储参数SYS_STORAGE_PARA { SendParaSysStorage(); } break; case CMD_NUM_ALARM_DAY://获取报警目录信息(指定年月里面的日消息)ALARM_DAY_PARA { SendParaAlarmDay(); } break; case CMD_NUM_ALARM_NAME://获取某日内的报警图片名称ALARM_NAME_PARA { SendParaAlarName(); } break; case CMD_NUM_PTZ_SET://设置服务器云台参数 云台参数(PTZ_PARA) { PTZ_PARA ptz_para; ptz_para = *(PTZ_PARA *)buf; FlashParam_SetPtzPara(ptz_para); SendParaSetAck(cmd,true); } break; case CMD_NUM_VIDEO_SET://设置服务器视频一般配置参数 视频源、编码参数、视频色彩配置VIDEO_PARA { #if 1 VIDEO_PARA video_para; video_para = *(VIDEO_PARA *)buf; if (video_para.src == VIDEO_SRC_ANALOG && video_para.analoginfo.vframetype != g_stGlobal_Variable.globalflash.videopara.analoginfo.vframetype) { g_VideoResolutionChanged = true; } FlashParam_SetVideoPara(video_para); SendParaSetAck(cmd,true); #endif } break; case CMD_NUM_ALG_SET://设置算法参数配置 ALG_PARA { #if 1 ALG_PARA alg_para; alg_para = *(ALG_PARA *)buf; FlashParam_SetAlgPara(alg_para); SendParaSetAck(cmd,true); #endif } break; case CMD_NUM_ALG_CONF_00_SET: case CMD_NUM_ALG_CONF_01_SET: case CMD_NUM_ALG_CONF_02_SET: case CMD_NUM_ALG_CONF_03_SET: case CMD_NUM_ALG_CONF_04_SET: { #if 1 ALG_PARA_CONF_UINT alg_para_conf_uint; alg_para_conf_uint = *(ALG_PARA_CONF_UINT*)buf; FlashParam_SetAlgParaConf(&alg_para_conf_uint,cmd); SendParaSetAck(cmd,true); #endif } break; case CMD_NUM_SYS_CONFIG_SET://设置算法参数配置 ALG_PARA { SYS_CONFIG_PARA sys_config_para; sys_config_para = *(SYS_CONFIG_PARA *)buf; FlashParam_SetSysConfigPara(sys_config_para); SendParaSetAck(CMD_NUM_SYS_CONFIG_RESPONSE,false); } break; case CMD_NUM_ALG_QUAD_000003_SET://设置回字形状前0-3个区域配置ALG_QUAD_PARA case CMD_NUM_ALG_QUAD_004007_SET://设置回字形状前4-7个区域配置ALG_QUAD_PARA case CMD_NUM_ALG_QUAD_008011_SET://设置回字形状前8-11个区域配置ALG_QUAD_PARA case CMD_NUM_ALG_QUAD_012015_SET://设置回字形状前12-15个区域配置ALG_QUAD_PARA case CMD_NUM_ALG_QUAD_016019_SET://设置回字形状前16-20个区域配置ALG_QUAD_PARA case CMD_NUM_ALG_QUAD_020023_SET://设置回字形状前20-23个区域配置ALG_QUAD_PARA case CMD_NUM_ALG_QUAD_024027_SET://设置回字形状前24-27个区域配置ALG_QUAD_PARA case CMD_NUM_ALG_QUAD_028031_SET://设置回字形状前28-31个区域配置ALG_QUAD_PARA case CMD_NUM_ALG_QUAD_032035_SET://设置回字形状前32-35个区域配置ALG_QUAD_PARA case CMD_NUM_ALG_QUAD_036039_SET://设置回字形状前36-39个区域配置ALG_QUAD_PARA case CMD_NUM_ALG_QUAD_040043_SET://设置回字形状前40-43个区域配置ALG_QUAD_PARA case CMD_NUM_ALG_QUAD_044047_SET://设置回字形状前44-47个区域配置ALG_QUAD_PARA case CMD_NUM_ALG_QUAD_048051_SET://设置回字形状前48-51个区域配置ALG_QUAD_PARA case CMD_NUM_ALG_QUAD_052055_SET://设置回字形状前52-55个区域配置ALG_QUAD_PARA case CMD_NUM_ALG_QUAD_056059_SET://设置回字形状前56-59个区域配置ALG_QUAD_PARA case CMD_NUM_ALG_QUAD_060063_SET://设置回字形状前60-63个区域配置ALG_QUAD_PARA case CMD_NUM_ALG_QUAD_064067_SET://设置回字形状前64-67个区域配置ALG_QUAD_PARA case CMD_NUM_ALG_QUAD_068071_SET://设置回字形状前68-71个区域配置ALG_QUAD_PARA case CMD_NUM_ALG_QUAD_072075_SET://设置回字形状前72-75个区域配置ALG_QUAD_PARA case CMD_NUM_ALG_QUAD_076079_SET://设置回字形状前76-79个区域配置ALG_QUAD_PARA case CMD_NUM_ALG_QUAD_080083_SET://设置回字形状前80-83个区域配置ALG_QUAD_PARA case CMD_NUM_ALG_QUAD_084087_SET://设置回字形状前84-87个区域配置ALG_QUAD_PARA case CMD_NUM_ALG_QUAD_088091_SET://设置回字形状前88-91个区域配置ALG_QUAD_PARA case CMD_NUM_ALG_QUAD_092095_SET://设置回字形状前92-95个区域配置ALG_QUAD_PARA case CMD_NUM_ALG_QUAD_096099_SET://设置回字形状前96-100个区域配置ALG_QUAD_PARA case CMD_NUM_ALG_QUAD_100103_SET://设置回字形状前101-103个区域配置ALG_QUAD_PARA case CMD_NUM_ALG_QUAD_104107_SET://设置回字形状前104-107个区域配置ALG_QUAD_PARA case CMD_NUM_ALG_QUAD_108111_SET://设置回字形状前108-111个区域配置ALG_QUAD_PARA case CMD_NUM_ALG_QUAD_112115_SET://设置回字形状前112-115个区域配置ALG_QUAD_PARA case CMD_NUM_ALG_QUAD_116119_SET://设置回字形状前116-119个区域配置ALG_QUAD_PARA case CMD_NUM_ALG_QUAD_120123_SET://设置回字形状前120-123个区域配置ALG_QUAD_PARA case CMD_NUM_ALG_QUAD_124127_SET://设置回字形状前124-127个区域配置ALG_QUAD_PARA { #if 1 ALG_QUAD_PARA alg_quad_para; alg_quad_para = *(ALG_QUAD_PARA *)buf; FlashParam_SetAlgQuadPara(&alg_quad_para,cmd); SendParaSetAck(cmd,true); #endif } break; case CMD_NUM_ALG_AREA_000003_SET://设置禁区形状0-3个区域配置ALG_AREA_PARA case CMD_NUM_ALG_AREA_004007_SET://设置禁区形状4-7个区域配置ALG_AREA_PARA case CMD_NUM_ALG_AREA_008011_SET://设置禁区形状8-11个区域配置ALG_AREA_PARA case CMD_NUM_ALG_AREA_012015_SET://设置禁区形状12-15个区域配置ALG_AREA_PARA case CMD_NUM_ALG_AREA_016019_SET://设置禁区形状16-20个区域配置ALG_AREA_PARA case CMD_NUM_ALG_AREA_020023_SET://设置禁区形状20-23个区域配置ALG_AREA_PARA case CMD_NUM_ALG_AREA_024027_SET://设置禁区形状24-27个区域配置ALG_AREA_PARA case CMD_NUM_ALG_AREA_028031_SET://设置禁区形状28-31个区域配置ALG_AREA_PARA { #if 1 ALG_AREA_PARA alg_area_para; alg_area_para = *(ALG_AREA_PARA *)buf; FlashParam_SetAlgAreaPara(&alg_area_para,cmd); SendParaSetAck(cmd,true); #endif } break; case CMD_NUM_ALG_LINE_000003_SET://设置拌线形状0-3个区域配置ALG_LINE_PARA case CMD_NUM_ALG_LINE_004007_SET://设置拌线形状4-7个区域配置ALG_LINE_PARA case CMD_NUM_ALG_LINE_008011_SET://设置拌线形状8-11个区域配置ALG_LINE_PARA case CMD_NUM_ALG_LINE_012015_SET://设置拌线形状12-15个区域配置ALG_LINE_PARA { #if 1 ALG_LINE_PARA alg_line_para; alg_line_para = *(ALG_LINE_PARA *)buf; FlashParam_SetAlgLinePara(&alg_line_para,cmd); SendParaSetAck(cmd,true); #endif } break; case CMD_NUM_ALG_COUNT_000003_SET://设置计数形状0-3个区域配置ALG_COUNT_PARA case CMD_NUM_ALG_COUNT_004007_SET://设置计数形状4-7个区域配置ALG_COUNT_PARA case CMD_NUM_ALG_COUNT_008011_SET://设置计数形状8-11个区域配置ALG_COUNT_PARA case CMD_NUM_ALG_COUNT_012015_SET://设置计数形状12-15个区域配置ALG_COUNT_PARA { #if 1 ALG_COUNT_PARA alg_count_para; alg_count_para = *(ALG_COUNT_PARA *)buf; FlashParam_SetAlgCountPara(&alg_count_para,cmd); SendParaSetAck(cmd,true); #endif } break; case CMD_NUM_ALG_ENTER_000003_SET://设置目标进入形状0-3个区域配置ALG_ENTER_PARA case CMD_NUM_ALG_ENTER_004007_SET://设置目标进入形状4-7个区域配置ALG_ENTER_PARA case CMD_NUM_ALG_ENTER_008011_SET://设置目标进入形状8-11个区域配置ALG_ENTER_PARA case CMD_NUM_ALG_ENTER_012015_SET://设置目标进入形状12-15个区域配置ALG_ENTER_PARA { #if 1 ALG_ENTER_PARA alg_enter_para; alg_enter_para = *(ALG_ENTER_PARA *)buf; FlashParam_SetAlgEnterPara(&alg_enter_para,cmd); SendParaSetAck(cmd,true); #endif } break; case CMD_NUM_ALG_OUT_000003_SET://设置目标离开形状0-3个区域配置ALG_OUT_PARA case CMD_NUM_ALG_OUT_004007_SET://设置目标离开形状4-7个区域配置ALG_OUT_PARA case CMD_NUM_ALG_OUT_008011_SET://设置目标离开形状8-11个区域配置ALG_OUT_PARA case CMD_NUM_ALG_OUT_012015_SET://设置目标离开形状12-15个区域配置ALG_OUT_PARA { #if 1 ALG_OUT_PARA alg_out_para; alg_out_para = *(ALG_OUT_PARA *)buf; FlashParam_SetAlgOutPara(&alg_out_para,cmd); SendParaSetAck(cmd,true); #endif } break; case CMD_NUM_ALG_FINDBAG_000003_SET://设置物体遗留形状0-2个区域配置ALG_FINDBAG_PARA case CMD_NUM_ALG_FINDBAG_004007_SET://设置物体遗留形状3-5个区域配置ALG_FINDBAG_PARA case CMD_NUM_ALG_FINDBAG_008011_SET://设置物体遗留形状3-5个区域配置ALG_FINDBAG_PARA case CMD_NUM_ALG_FINDBAG_012015_SET://设置物体遗留形状3-5个区域配置ALG_FINDBAG_PARA { #if 1 ALG_FINDBAG_PARA alg_findbag_para; alg_findbag_para = *(ALG_FINDBAG_PARA *)buf; FlashParam_SetAlgFindbagPara(&alg_findbag_para,cmd); SendParaSetAck(cmd,true); #endif } break; case CMD_NUM_ALG_LOST_000002_SET://设置物体消失形状0-2个区域配置ALG_LOST_PARA case CMD_NUM_ALG_LOST_003005_SET://设置物体消失形状3-5个区域配置ALG_LOST_PARA { #if 1 ALG_LOST_PARA alg_lost_para; alg_lost_para = *(ALG_LOST_PARA *)buf; FlashParam_SetAlgLostPara(&alg_lost_para,cmd); SendParaSetAck(cmd,true); #endif } break; case CMD_NUM_ALG_DIRECT_000003_SET://设置方向报警形状0-3个区域配置ALG_DIRECT_PARA case CMD_NUM_ALG_DIRECT_004007_SET://设置方向报警形状4-7个区域配置ALG_DIRECT_PARA case CMD_NUM_ALG_DIRECT_008011_SET://设置方向报警形状8-11个区域配置ALG_DIRECT_PARA case CMD_NUM_ALG_DIRECT_012015_SET://设置方向报警形状12-15个区域配置ALG_DIRECT_PARA { #if 1 ALG_DIRECT_PARA alg_direct_para; alg_direct_para = *(ALG_DIRECT_PARA *)buf; FlashParam_SetAlgDirectPara(&alg_direct_para,cmd); SendParaSetAck(cmd,true); #endif } break; case CMD_NUM_ALG_DETECT_000003_SET://设置入侵侦测形状0-3个区域配置ALG_DETECT_PARA case CMD_NUM_ALG_DETECT_004007_SET://设置入侵侦测形状4-7个区域配置ALG_DETECT_PARA case CMD_NUM_ALG_DETECT_008011_SET://设置入侵侦测形状8-11个区域配置ALG_DETECT_PARA case CMD_NUM_ALG_DETECT_012015_SET://设置入侵侦测形状12-15个区域配置ALG_DETECT_PARA { #if 1 ALG_DETECT_PARA alg_detect_para; alg_detect_para = *(ALG_DETECT_PARA *)buf; FlashParam_SetAlgDetectPara(&alg_detect_para,cmd); SendParaSetAck(cmd,true); #endif } break; case CMD_NUM_ALG_PEOPLEDENSE_000003_SET://设置人员密度测形状0-3个区域配置ALG_DETECT_PARA case CMD_NUM_ALG_PEOPLEDENSE_004007_SET://设置人员密度形状4-7个区域配置ALG_DETECT_PARA case CMD_NUM_ALG_PEOPLEDENSE_008011_SET://设置人员密度形状8-11个区域配置ALG_DETECT_PARA case CMD_NUM_ALG_PEOPLEDENSE_012015_SET://设置人员密度形状12-15个区域配置ALG_DETECT_PARA { #if 1 ALG_PEOPLEDENSE_PARA alg_peopeldense_para; alg_peopeldense_para = *(ALG_PEOPLEDENSE_PARA *)buf; FlashParam_SetAlgPeopleDensePara(&alg_peopeldense_para,cmd); SendParaSetAck(cmd,true); #endif } break; case CMD_NUM_ALG_CLUSTERDETE_000003_SET://设置人员聚集形状0-3个区域配置ALG_DETECT_PARA case CMD_NUM_ALG_CLUSTERDETE_004007_SET://设置人员聚集形状4-7个区域配置ALG_DETECT_PARA case CMD_NUM_ALG_CLUSTERDETE_008011_SET://设置人员聚集形状8-11个区域配置ALG_DETECT_PARA case CMD_NUM_ALG_CLUSTERDETE_012015_SET://设置人员聚集形状12-15个区域配置ALG_DETECT_PARA { #if 1 ALG_CLUSTERDETE_PARA alg_clusterdete_para; alg_clusterdete_para = *(ALG_CLUSTERDETE_PARA *)buf; FlashParam_SetAlgClusterDetePara(&alg_clusterdete_para,cmd); SendParaSetAck(cmd,true); #endif } break; case CMD_NUM_ALG_MOTIONHISTORY_000003_SET://设置夜间起床形状0-3个区域配置ALG_DETECT_PARA case CMD_NUM_ALG_MOTIONHISTORY_004007_SET://设置夜间起床形状4-7个区域配置ALG_DETECT_PARA case CMD_NUM_ALG_MOTIONHISTORY_008011_SET://设置夜间起床形状8-11个区域配置ALG_DETECT_PARA case CMD_NUM_ALG_MOTIONHISTORY_012015_SET://设置夜间起床形状12-15个区域配置ALG_DETECT_PARA { #if 1 ALG_MOTIONHISTORY_PARA alg_motionhistory_para; alg_motionhistory_para = *(ALG_MOTIONHISTORY_PARA *)buf; FlashParam_SetAlgMotionHistoryPara(&alg_motionhistory_para,cmd); SendParaSetAck(cmd,true); #endif } break; case CMD_NUM_ALG_HOVERDETE_000003_SET://设置徘徊形状0-3个区域配置ALG_DETECT_PARA case CMD_NUM_ALG_HOVERDETE_004007_SET://设置徘徊形状4-7个区域配置ALG_DETECT_PARA case CMD_NUM_ALG_HOVERDETE_008011_SET://设置徘徊形状8-11个区域配置ALG_DETECT_PARA case CMD_NUM_ALG_HOVERDETE_012015_SET://设置徘徊形状12-15个区域配置ALG_DETECT_PARA { #if 1 ALG_HOVERDETE_PARA alg_hoverdete_para; alg_hoverdete_para = *(ALG_HOVERDETE_PARA *)buf; FlashParam_SetAlgHoverDetePara(&alg_hoverdete_para,cmd); SendParaSetAck(cmd,true); #endif } break; case CMD_NUM_ALG_ALARMLINE_000003_SET://设置摸高形状0-3个区域配置ALG_DETECT_PARA case CMD_NUM_ALG_ALARMLINE_004007_SET://设置摸高形状4-7个区域配置ALG_DETECT_PARA case CMD_NUM_ALG_ALARMLINE_008011_SET://设置摸高形状8-11个区域配置ALG_DETECT_PARA case CMD_NUM_ALG_ALARMLINE_012015_SET://设置摸高形状12-15个区域配置ALG_DETECT_PARA { #if 1 ALG_ALARMLINE_PARA alg_alarmline_para; alg_alarmline_para = *(ALG_ALARMLINE_PARA *)buf; FlashParam_SetAlgAlarmLinePara(&alg_alarmline_para,cmd); SendParaSetAck(cmd,true); #endif } break; case CMD_NUM_ALG_RUNNING_000003_SET://设置奔跑形状0-3个区域配置ALG_DETECT_PARA case CMD_NUM_ALG_RUNNING_004007_SET://设置奔跑形状4-7个区域配置ALG_DETECT_PARA case CMD_NUM_ALG_RUNNING_008011_SET://设置奔跑形状8-11个区域配置ALG_DETECT_PARA case CMD_NUM_ALG_RUNNING_012015_SET://设置奔跑形状12-15个区域配置ALG_DETECT_PARA { #if 1 ALG_RUNNINGOBJ_PARA alg_running_para; alg_running_para = *(ALG_RUNNINGOBJ_PARA *)buf; FlashParam_SetAlgRunningPara(&alg_running_para,cmd); SendParaSetAck(cmd,true); #endif } break; case CMD_NUM_ALG_PARA_AUTO_SET: { #if 0 //TODO: 算法参数自动生成 //1.解析接收到的应用参数 CMD_TRANSFER cmd_transfer; ALG_CONF_APP_AUTO_PARA alg_conf_app_auto_para; alg_conf_app_auto_para = *(ALG_CONF_APP_AUTO_PARA*)buf; unsigned int PointFixedRate = D1_WIDTH/alg_conf_app_auto_para.AlgConfAppUint.iImgWithdVal; CParamGenerator paramGenration; // CString strErrInfo; // strErrInfo.Format("接收到Index= %dBright = %d,Gray = %d,Sense=%d\r\n", // alg_conf_app_auto_para.AlgParaIndex, // alg_conf_app_auto_para.AlgConfAppUint.AlgAppBright, // alg_conf_app_auto_para.AlgConfAppUint.AlgAppGray, // alg_conf_app_auto_para.AlgConfAppUint.AlgAppSense); // WRITE_LOG(strErrInfo,LOG_TYPE_INFO,LOG_LEVEL_RUN,true); paramGenration.Init(alg_conf_app_auto_para.AlgParaIndex, alg_conf_app_auto_para.AlgConfAppUint.iImgWithdVal, alg_conf_app_auto_para.AlgConfAppUint.iImgHeightVal, alg_conf_app_auto_para.AlgConfAppUint.iObjWithdVal/PointFixedRate, alg_conf_app_auto_para.AlgConfAppUint.iObjHeightVal/PointFixedRate, alg_conf_app_auto_para.AlgConfAppUint.AlgAppBright, alg_conf_app_auto_para.AlgConfAppUint.AlgAppGray, alg_conf_app_auto_para.AlgConfAppUint.AlgAppSense); paramGenration.GetAlgParam((void*)&alg_conf_app_auto_para.AlgConfAppResult); //参数生成完成后只要将生成的参数发送到客户端即可 当客户端提交后则可以从新更新到g_stGlobal_Variable memset(&cmd_transfer,0x00,sizeof(cmd_transfer)); CONSTRUCT_CMD(CMD_NUM_ALG_PARA_AUTO_RESPONSE,(char *)&alg_conf_app_auto_para,sizeof(ALG_CONF_APP_AUTO_PARA),&cmd_transfer); TCP_SEND(g_stGlobal_Variable.client_tcpsocket.socket_it,(unsigned char *)&cmd_transfer,sizeof(cmd_transfer)); //paramGenration.Init(); //paramGenration.GetAlgParam(); #endif } break; case CMD_NUM_SYS_STORAGE_SET: { #if 0 SYS_STORAGE_PARA sys_storage_para; sys_storage_para = *(SYS_STORAGE_PARA*)buf; FlashParam_SetSysStoragePara(sys_storage_para); SendParaSetAck(CMD_NUM_SYS_STORAGE_RESPONSE,false); #endif } break; case CMD_NUM_PTZ_ACTION_SET://设置云台实时动态参数配置 PTZ_ACTION { #if 1 PTZ_ACTION_SET ptz_action_set; ptz_action_set = *(PTZ_ACTION_SET*)buf; switch(ptz_action_set.ptz_action) { case PTZ_LEFT: { if (g_stGlobal_Variable.ptz_ctlhandle.ptz_initd && g_stGlobal_Variable.ptz_ctlhandle.ptz_Interface) { if (ptz_action_set.ptz_value > 0) { g_stGlobal_Variable.globalflash.ptzpara.speed = ptz_action_set.ptz_value; } g_stGlobal_Variable.ptz_ctlhandle.ptz_Interface->PtzSetLeft(g_stGlobal_Variable.globalflash.ptzpara.speed); } } break; case PTZ_RIGHT: { if (g_stGlobal_Variable.ptz_ctlhandle.ptz_initd && g_stGlobal_Variable.ptz_ctlhandle.ptz_Interface) { if (ptz_action_set.ptz_value > 0) { g_stGlobal_Variable.globalflash.ptzpara.speed = ptz_action_set.ptz_value; } g_stGlobal_Variable.ptz_ctlhandle.ptz_Interface->PtzSetRight(g_stGlobal_Variable.globalflash.ptzpara.speed); } } break; case PTZ_UP: { if (g_stGlobal_Variable.ptz_ctlhandle.ptz_initd && g_stGlobal_Variable.ptz_ctlhandle.ptz_Interface) { if (ptz_action_set.ptz_value > 0) { g_stGlobal_Variable.globalflash.ptzpara.speed = ptz_action_set.ptz_value; } g_stGlobal_Variable.ptz_ctlhandle.ptz_Interface->PtzSetUp(g_stGlobal_Variable.globalflash.ptzpara.speed); } } break; case PTZ_DOWN: { if (g_stGlobal_Variable.ptz_ctlhandle.ptz_initd && g_stGlobal_Variable.ptz_ctlhandle.ptz_Interface) { if (ptz_action_set.ptz_value > 0) { g_stGlobal_Variable.globalflash.ptzpara.speed = ptz_action_set.ptz_value; } g_stGlobal_Variable.ptz_ctlhandle.ptz_Interface->PtzSetDown(g_stGlobal_Variable.globalflash.ptzpara.speed); } } break; case PTZ_ZOOMIN: { if (g_stGlobal_Variable.ptz_ctlhandle.ptz_initd && g_stGlobal_Variable.ptz_ctlhandle.ptz_Interface) { g_stGlobal_Variable.ptz_ctlhandle.ptz_Interface->PtzSetZoomIn(); } } break; case PTZ_ZOOMOUT: { if (g_stGlobal_Variable.ptz_ctlhandle.ptz_initd && g_stGlobal_Variable.ptz_ctlhandle.ptz_Interface) { g_stGlobal_Variable.ptz_ctlhandle.ptz_Interface->PtzSetZoomOut(); } } break; case PTZ_AUTO_FOCUS: { if (g_stGlobal_Variable.ptz_ctlhandle.ptz_initd && g_stGlobal_Variable.ptz_ctlhandle.ptz_Interface) { g_stGlobal_Variable.ptz_ctlhandle.ptz_Interface->PtzSetAutoFocus(); } } break; case PTZ_AUTO_IRIS: { if (g_stGlobal_Variable.ptz_ctlhandle.ptz_initd && g_stGlobal_Variable.ptz_ctlhandle.ptz_Interface) { g_stGlobal_Variable.ptz_ctlhandle.ptz_Interface->PtzAutoIRIS(); } } break; case PTZ_SETPRESET: { if (g_stGlobal_Variable.ptz_ctlhandle.ptz_initd && g_stGlobal_Variable.ptz_ctlhandle.ptz_Interface) { //TODO: g_stGlobal_Variable.ptz_ctlhandle.ptz_Interface->PtzPreSet(ptz_action_set.ptz_value); } } break; case PTZ_GOTOPRESET: { if (g_stGlobal_Variable.ptz_ctlhandle.ptz_initd && g_stGlobal_Variable.ptz_ctlhandle.ptz_Interface) { //TODO: g_stGlobal_Variable.ptz_ctlhandle.ptz_Interface->PtzGoToPre(ptz_action_set.ptz_value); } } break; case PTZ_SETSPEED: { g_stGlobal_Variable.globalflash.ptzpara.speed = ptz_action_set.ptz_value; } break; case PTZ_ACT_START: case PTZ_ACT_END: { } break; default: break; } //TODO: //云台联动 #endif } break; case CMD_NUM_VIDEO_ATTRSET_SET: { #if 0 VIDEO_ATTRSET_STRUCT video_attrset_struct; video_attrset_struct = *(VIDEO_ATTRSET_STRUCT *)buf; switch (video_attrset_struct.video_attrset) { case VIDEO_ATTRSET_BRIGHT: { EteDVR_SetVideoParam(0,0,BRIGHTNESS,(int)video_attrset_struct.video_attrvalue); g_stGlobal_Variable.globalflash.videopara.bright = video_attrset_struct.video_attrvalue; } break; case VIDEO_ATTRSET_CONTRAST: { EteDVR_SetVideoParam(0,0,CONTRAST,(int)video_attrset_struct.video_attrvalue); g_stGlobal_Variable.globalflash.videopara.contrast = video_attrset_struct.video_attrvalue; } break; case VIDEO_ATTRSET_SATURATION: { EteDVR_SetVideoParam(0,0,SATURATION,(int)video_attrset_struct.video_attrvalue); g_stGlobal_Variable.globalflash.videopara.saturation = video_attrset_struct.video_attrvalue; } break; case VIDEO_ATTRSET_HUE: { EteDVR_SetVideoParam(0,0,HUE,(int)video_attrset_struct.video_attrvalue); g_stGlobal_Variable.globalflash.videopara.hue = video_attrset_struct.video_attrvalue; } break; default: break; } #endif } break; case CMD_NUM_MODE_RUN_SET: { #if 0 //TODO:接收到切换工作状态消息 //2.重置算法参数 //WRITE_LOG(_T("CMD_NUM_MODE_RUN_SET: ResetALGParmbyCurrentTimeIf"),LOG_TYPE_WARNING,LOG_LEVEL_RUN,true); if(ResetALGParmbyCurrentTimeIf(true))//设置成功后保存参数 { //1.保存参数 FlashParam_DownLoad(); ParseINIFileToXML(0x00000001,"ParamXML\\ptzParam.xml"); ParseINIFileToXML(0x00000002,"ParamXML\\videoParam.xml"); ParseINIFileToXML(0x00000004,"ParamXML\\algParam.xml"); ParseINIFileToXML(0x00000008,"ParamXML\\quadParam.xml"); ParseINIFileToXML(0x00000010,"ParamXML\\areaParam.xml"); ParseINIFileToXML(0x00000020,"ParamXML\\lineParam.xml"); ParseINIFileToXML(0x00000040,"ParamXML\\countParam.xml"); ParseINIFileToXML(0x00000080,"ParamXML\\enterParam.xml"); ParseINIFileToXML(0x00000100,"ParamXML\\outParam.xml"); ParseINIFileToXML(0x00000200,"ParamXML\\lostParam.xml"); ParseINIFileToXML(0x00000400,"ParamXML\\directParam.xml"); ParseINIFileToXML(0x00000800,"ParamXML\\detectParam.xml"); ParseINIFileToXML(0x00001000,"ParamXML\\peopleDenseParam.xml"); ParseINIFileToXML(0x00002000,"ParamXML\\peopleClusterParam.xml"); ParseINIFileToXML(0x00004000,"ParamXML\\peopleMotionParam.xml"); ParseINIFileToXML(0x00008000,"ParamXML\\peopleHoverParam.xml"); ParseINIFileToXML(0x00010000,"ParamXML\\alarmLineParam.xml"); ParseINIFileToXML(0x00020000,"ParamXML\\findBagParam.xml"); ParseINIFileToXML(0x00040000,"ParamXML\\runningParam.xml"); ParseINIFileToXML(0x00080000,"ParamXML\\sysconfigalgParam.xml"); ParseINIFileToXML(0x00100000,"ParamXML\\storageParam.xml"); } // // int ALG_index = 0; // ALG_index = ((g_stGlobal_Variable.globalflash.algpara.AlgTimeUsed >= 1 && g_stGlobal_Variable.globalflash.algpara.AlgTimeUsed <= 2) ? g_stGlobal_Variable.globalflash.algpara.AlgTimeUsed - 1 : 0); // g_stGlobal_Variable.globalflash.algpara.AlgTimeUsed = (ALG_TIME_USED)(ALG_index + 1); //ALG_SETPARAM(&g_stGlobal_Variable.globalflash,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); //3.串口初始化 if (!g_stGlobal_Variable.ptz_ctlhandle.ptz_initd) { g_stGlobal_Variable.ptz_ctlhandle.ptz_Interface->PtzInit(g_stGlobal_Variable.globalflash.ptzpara.commport, g_stGlobal_Variable.globalflash.ptzpara.combaud); } //切到预置位 g_stGlobal_Variable.ptz_ctlhandle.ptz_Interface->PtzGoToPre(PTZ_PREPOINT_NUM_MAX); //4.切换调试状态 //WRITE_LOG(_T("CMD_NUM_MODE_RUN_SET: SwitchMode"),LOG_TYPE_WARNING,LOG_LEVEL_RUN,true); #if 0 if (m_pReg && STATE_RUN != m_pReg->GetMode()) { m_pReg->SwitchMode(STATE_RUN); } #endif SendParaSetAck(CMD_NUM_MODE_RUN_RESPONSE,false); //WRITE_LOG(_T("CMD_NUM_MODE_RUN_SET: OVER"),LOG_TYPE_WARNING,LOG_LEVEL_RUN,true); //回送响应消息 #endif } break; case CMD_NUM_MODE_DEBUG_SET: { //TODO:接收到切换调试状态消息 #if 0 if (m_pReg && STATE_DEBUG != m_pReg->GetMode()) { m_pReg->SwitchMode(STATE_DEBUG); g_stGlobal_Variable.globalflash.sysconfigpara.camstate = CAM_STATE_DEBUG;//迁态 } #endif SendParaSetAck(CMD_NUM_MODE_DEBUG_RESPONSE,false); } break; case CMD_NUM_VEDIO_REQUEST://设置视频请求 { #if 0 VIDEO_REQUEST_STRUCT video_request_struct = *(VIDEO_REQUEST_STRUCT *)buf; UDP_CREATE(&g_stGlobal_Variable.client_udpsocket.socket_it); strcpy((char *)g_stGlobal_Variable.client_udpsocket.socket_cip,(char *)video_request_struct.cip); g_stGlobal_Variable.client_udpsocket.socket_cport = video_request_struct.iport; g_VideoRequestFlag = true; #endif } break; case CMD_NUM_VEDIO_STOP://设置视频停止 { if (g_VideoRequestFlag) { g_VideoRequestFlag = false; UDP_CLOSE(g_stGlobal_Variable.client_udpsocket.socket_it); } } break; case CMD_NUM_KEEPALIVE://心跳消息 { //SendParaSetAck(CMD_NUM_KEEPALIVE_RESPONSE,false); //KillTimer(m_hWnd,IDENT_CLIENT_TIME_ID_DEAD); //SetTimer(m_hWnd,IDENT_CLIENT_TIME_ID_DEAD,IDENT_CLIENT_TIME_VAL_DEAD,TimerOutProc); } break; // case CMD_NUM_KEEPALIVE_RESPONSE://心跳消息 // { // KillTimer(m_hWnd,IDENT_CLIENT_TIME_ID_DEAD); // SetTimer(m_hWnd,IDENT_CLIENT_TIME_ID_DEAD,IDENT_CLIENT_TIME_VAL_DEAD,TimerOutProc); // } // break; case CMD_NUM_DISCONNECT://断开连接 { //KillTimer(m_hWnd,IDENT_CLIENT_TIME_ID_HEARTBEAT); //KillTimer(m_hWnd,IDENT_CLIENT_TIME_ID_DEAD); SendParaSetAck(CMD_NUM_DISCONNECT_RESPONSE,false); //Sleep(1000);//等待一秒 TCP_CLOSE(g_stGlobal_Variable.client_tcpsocket.socket_it); UDP_CLOSE(g_stGlobal_Variable.client_udpsocket.socket_it); g_VideoRequestFlag = false; g_bIsConnected = false; m_IsSvrConnected = false; } break; case CMD_NUM_SIM_ALARM: { g_SimAlarmOne = true; } break; default: break; } return true; }
/* Establish a connection on the TCP layer */ RD_BOOL tcp_connect(rdpTcp * tcp, char * server, int port) { int sock; uint32 option_value; socklen_t option_len; #ifdef IPv6 int n; struct addrinfo hints, *res, *ressave; char tcp_port_rdp_s[10]; printf("connecting to %s:%d\n", server, port); snprintf(tcp_port_rdp_s, 10, "%d", port); memset(&hints, 0, sizeof(struct addrinfo)); hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; if ((n = getaddrinfo(server, tcp_port_rdp_s, &hints, &res))) { ui_error(tcp->iso->mcs->sec->rdp->inst, "getaddrinfo: %s\n", gai_strerror(n)); return False; } ressave = res; sock = -1; while (res) { sock = socket(res->ai_family, res->ai_socktype, res->ai_protocol); if (!(sock < 0)) { if (connect(sock, res->ai_addr, res->ai_addrlen) == 0) break; TCP_CLOSE(sock); sock = -1; } res = res->ai_next; } freeaddrinfo(ressave); if (sock == -1) { ui_error(tcp->iso->mcs->sec->rdp->inst, "%s: unable to connect\n", server); return False; } #else /* no IPv6 support */ struct hostent *nslookup; struct sockaddr_in servaddr; printf("connecting to %s:%d\n", server, port); if ((nslookup = gethostbyname(server)) != NULL) { memcpy(&servaddr.sin_addr, nslookup->h_addr, sizeof(servaddr.sin_addr)); } else if ((servaddr.sin_addr.s_addr = inet_addr(server)) == INADDR_NONE) { ui_error(tcp->iso->mcs->sec->rdp->inst, "%s: unable to resolve host\n", server); return False; } if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) { ui_error(tcp->iso->mcs->sec->rdp->inst, "socket: %s\n", TCP_STRERROR); return False; } servaddr.sin_family = AF_INET; servaddr.sin_port = htons((uint16) port); if (connect(sock, (struct sockaddr *) &servaddr, sizeof(struct sockaddr)) < 0) { ui_error(tcp->iso->mcs->sec->rdp->inst, "connect: %s\n", TCP_STRERROR); TCP_CLOSE(sock); return False; } #endif /* IPv6 */ tcp->sock = sock; /* set socket as non blocking */ #ifdef _WIN32 { u_long arg = 1; ioctlsocket(tcp->sock, FIONBIO, &arg); tcp->wsa_event = WSACreateEvent(); WSAEventSelect(tcp->sock, tcp->wsa_event, FD_READ); } #else option_value = fcntl(tcp->sock, F_GETFL); option_value = option_value | O_NONBLOCK; fcntl(tcp->sock, F_SETFL, option_value); #endif option_value = 1; option_len = sizeof(option_value); setsockopt(tcp->sock, IPPROTO_TCP, TCP_NODELAY, (void *) &option_value, option_len); /* receive buffer must be a least 16 K */ if (getsockopt(tcp->sock, SOL_SOCKET, SO_RCVBUF, (void *) &option_value, &option_len) == 0) { if (option_value < (1024 * 16)) { option_value = 1024 * 16; option_len = sizeof(option_value); setsockopt(tcp->sock, SOL_SOCKET, SO_RCVBUF, (void *) &option_value, option_len); } } return True; }
/* Establish a connection on the TCP layer */ RD_BOOL tcp_connect(char *server) { socklen_t option_len; uint32 option_value; int i; #ifdef IPv6 int n; struct addrinfo hints, *res, *ressave; char tcp_port_rdp_s[10]; snprintf(tcp_port_rdp_s, 10, "%d", g_tcp_port_rdp); memset(&hints, 0, sizeof(struct addrinfo)); hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; if ((n = getaddrinfo(server, tcp_port_rdp_s, &hints, &res))) { error("getaddrinfo: %s\n", gai_strerror(n)); return False; } ressave = res; g_sock = -1; while (res) { g_sock = socket(res->ai_family, res->ai_socktype, res->ai_protocol); if (!(g_sock < 0)) { if (connect(g_sock, res->ai_addr, res->ai_addrlen) == 0) break; TCP_CLOSE(g_sock); g_sock = -1; } res = res->ai_next; } freeaddrinfo(ressave); if (g_sock == -1) { error("%s: unable to connect\n", server); return False; } #else /* no IPv6 support */ struct hostent *nslookup; struct sockaddr_in servaddr; if ((nslookup = gethostbyname(server)) != NULL) { memcpy(&servaddr.sin_addr, nslookup->h_addr, sizeof(servaddr.sin_addr)); } else if ((servaddr.sin_addr.s_addr = inet_addr(server)) == INADDR_NONE) { error("%s: unable to resolve host\n", server); return False; } if ((g_sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) { error("socket: %s\n", TCP_STRERROR); return False; } servaddr.sin_family = AF_INET; servaddr.sin_port = htons((uint16) g_tcp_port_rdp); if (connect(g_sock, (struct sockaddr *) &servaddr, sizeof(struct sockaddr)) < 0) { if (!g_reconnect_loop) error("connect: %s\n", TCP_STRERROR); TCP_CLOSE(g_sock); g_sock = -1; return False; } #endif /* IPv6 */ option_value = 1; option_len = sizeof(option_value); setsockopt(g_sock, IPPROTO_TCP, TCP_NODELAY, (void *) &option_value, option_len); /* receive buffer must be a least 16 K */ if (getsockopt(g_sock, SOL_SOCKET, SO_RCVBUF, (void *) &option_value, &option_len) == 0) { if (option_value < (1024 * 16)) { option_value = 1024 * 16; option_len = sizeof(option_value); setsockopt(g_sock, SOL_SOCKET, SO_RCVBUF, (void *) &option_value, option_len); } } g_in.size = 4096; g_in.data = (uint8 *) xmalloc(g_in.size); for (i = 0; i < STREAM_COUNT; i++) { g_out[i].size = 4096; g_out[i].data = (uint8 *) xmalloc(g_out[i].size); } return True; }
/* Disconnect on the TCP layer */ void tcp_disconnect(void) { TCP_CLOSE(g_sock); }