From 109ffe9a777658936a38d0c146579a67c60a0d17 Mon Sep 17 00:00:00 2001
From: xuxiuxi <xuxiuxi@454eff88-639b-444f-9e54-f578c98de674>
Date: 星期四, 11 五月 2017 17:48:48 +0800
Subject: [PATCH] 

---
 ProxyConsole/proxyconsole-hc.cpp |  339 ++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 253 insertions(+), 86 deletions(-)

diff --git a/ProxyConsole/proxyconsole-hc.cpp b/ProxyConsole/proxyconsole-hc.cpp
index 00f9506..b29f2b0 100644
--- a/ProxyConsole/proxyconsole-hc.cpp
+++ b/ProxyConsole/proxyconsole-hc.cpp
@@ -37,7 +37,7 @@
 #define  HPR_OK 0
 #define  HPR_ERROR -1
 
-#define MAX_NUM 16
+#define MAX_NUM 32
 #define MAX 1024
 #define fileread_buf 128
 
@@ -54,6 +54,7 @@
 	ET_HCNET_DECODER_POPWIN, // 3
 	ET_HCNET_DECODER_LOGO, // 4
 	ET_HCNET_DECODER_ALARMOUT, // 5
+	ET_HCNET_DECODER_LOGO_ALARMOUT, // 6
 	ET_HCNET_DECODER__LAST,
 	ET__LAST
 };
@@ -78,7 +79,7 @@
 	int channel;
 	uint16_t byWallNo;
 	uint16_t dwSubWinNo;
-	uint16_t dwWinNo;
+	std::vector<uint16_t> dwWinNo;
 	uint16_t lAlarmOutPort;
 };
 
@@ -97,14 +98,14 @@
 pthread_t thread_no[MAX_NUM];
 pthread_t thread_noEQ[MAX_NUM];
 pthread_t thread_Real[MAX_NUM];
-sockinfo equipments[16];
-int sock_upper[16],sock_down[16];
-int rsock_down[16];
+sockinfo equipments[MAX_NUM];
+int sock_upper[MAX_NUM],sock_down[MAX_NUM];
+int rsock_down[MAX_NUM];
 char byte_array[2600];
 int bbbbb=0;
 int CommandEquipIdx=0;
-int CommandKind[16];
-char sessionIDs[16][5];
+int CommandKind[MAX_NUM];
+char sessionIDs[MAX_NUM][5];
 
 char linkequip_ip[32];
 char linkequip_port[10];
@@ -113,8 +114,8 @@
 
 int NUM=0,equip_num=0;
 
-int SupperConnectedflag[16]={0,},EquipConnectedflag[16]={0,},serverflag=0,GPIO_flag=0;
-int EquipRealAlarmConnectedflag[16];
+int SupperConnectedflag[MAX_NUM]={0,},EquipConnectedflag[MAX_NUM]={0,},serverflag=0,GPIO_flag=0;
+int EquipRealAlarmConnectedflag[MAX_NUM];
 timer_t* timerID;
 
 std::vector<std::string> SupperConnectedIP;
@@ -139,12 +140,12 @@
 int GPIO_READ(int PortNum);
 void GPIO_WRITE(int PortNum,unsigned char DATA);
 int RealEventStart(int Idx);
-int gCapturing[16];
-char sessions[16][10];
+int gCapturing[MAX_NUM];
+char sessions[MAX_NUM][10];
 
 int n=0,m=0,k=0;
-unsigned char DownBuffer[16][614000];
-int DownCount[16];
+unsigned char DownBuffer[MAX_NUM][614000];
+int DownCount[MAX_NUM];
 int gCount=0;
 int gCount30s=0;
 int gCount2s=0;
@@ -170,10 +171,10 @@
 	gCount2s++;
 	if(gCount2s>=8){
 		gCount2s=0;
-		for(;CommandEquipIdx<16;CommandEquipIdx++){//connected
+		for(;CommandEquipIdx<MAX_NUM;CommandEquipIdx++){//connected
 			if(EquipConnectedflag[CommandEquipIdx]>0) break;
 		}
-		if(CommandEquipIdx>=16){
+		if(CommandEquipIdx>=MAX_NUM){
 			CommandEquipIdx = 0;
 		}
 	}
@@ -287,11 +288,12 @@
 
 int hcnetsdk_get_userid(const std::string& decode_ip)
 {
-	hcnetsdk_user_t::const_iterator iter = g_hcnetsdk_user.find(decode_ip);
-	if(iter == g_hcnetsdk_user.end())
-		return -1;
-	else
-		return iter->second;
+	return hcnetsdk_user;
+	//hcnetsdk_user_t::const_iterator iter = g_hcnetsdk_user.find(decode_ip);
+	//if(iter == g_hcnetsdk_user.end())
+	//	return -1;
+	//else
+	//	return iter->second;
 }
 
 void CALLBACK hcnetsdk_ExceptionCallBack(DWORD dwType, LONG lUserID, LONG lHandle, void *pUser)
@@ -299,7 +301,7 @@
 	printf("hcnetsdk_ExceptionCallBack: %d\n", int(dwType));
 }
 
-int hcnetsdk_alarm_alarmout(LONG lUserID, const HCNetCameraConfig& camConfig)
+int hcnetsdk_alarm_alarmout(LONG lUserID, const HCNetCameraConfig& camConfig, bool isDisalarm)
 {
 	//鎶ヨ鏃堕棿娈�
 	NET_DVR_SCHEDTIME net_dvr_schedtime = {0};
@@ -320,17 +322,28 @@
 	}
 		
 	//寮�鍚鎶�
-	if(NET_DVR_SetAlarmOut(lUserID,camConfig.lAlarmOutPort,1) == FALSE){
-		printf("NET_DVR_SetAlarmOut failed, err: %d\n", NET_DVR_GetLastError());
-	}
+	//if(NET_DVR_SetAlarmOut(lUserID,camConfig.lAlarmOutPort,1) == FALSE){
+	//	printf("NET_DVR_SetAlarmOut failed, err: %d\n", NET_DVR_GetLastError());
+	//}
 	last_alarmout = time(NULL);
 	
-	sleep(3);
+	//sleep(2);
 	
-	if (time(NULL) - last_alarmout >= 3)
+	if (isDisalarm)
 	{
-		//瑙i櫎璀︽姤
-		NET_DVR_SetAlarmOut(lUserID,camConfig.lAlarmOutPort,0);
+		//if (time(NULL) - last_alarmout >= 2)
+		//{
+			//瑙i櫎璀︽姤
+			NET_DVR_SetAlarmOut(lUserID,camConfig.lAlarmOutPort,0);
+		//}
+	}
+	else
+	{
+		//寮�鍚鎶�
+		if(NET_DVR_SetAlarmOut(lUserID,camConfig.lAlarmOutPort,1) == FALSE){
+			printf("NET_DVR_SetAlarmOut failed, err: %d\n", NET_DVR_GetLastError());
+		}
+		last_alarmout = time(NULL);
 	}
 }
 
@@ -479,7 +492,7 @@
 	LONG lUserID;
 
 	NET_DVR_DEVICEINFO_V30 struDeviceInfo;
-	lUserID = NET_DVR_Login_V30((char*)g_hcnetsdkconfig.serverIP.c_str(), g_hcnetsdkconfig.serverport, 
+	hcnetsdk_user = lUserID = NET_DVR_Login_V30((char*)g_hcnetsdkconfig.serverIP.c_str(), g_hcnetsdkconfig.serverport, 
 		(char*)g_hcnetsdkconfig.username.c_str(), (char*)g_hcnetsdkconfig.passwd.c_str(), &struDeviceInfo);
 	if (lUserID < 0) {
 		printf("NET_DVR_Login_V30 failed, err: %d\n", NET_DVR_GetLastError());
@@ -494,7 +507,7 @@
 	return lUserID;
 }
 
-HCNetCameraConfig* hcnetsdk_find_config(const std::string& decoder_ip)
+HCNetCameraConfig* hcnetsdk_find_config(const sockinfo& oldEquipConfig, int newChannel)
 {
 	for (size_t i = 0; i < NUM; i++)
 	{
@@ -502,8 +515,11 @@
 		if (equip->m_type > ET_HCNET_DECODER__FIRST || equip->m_type < ET_HCNET_DECODER__LAST)
 		{
 			HCNetCameraConfig* camConfig = (HCNetCameraConfig*)equip->user_config;
-			if (camConfig != NULL && equip->serverIP == decoder_ip)
-				return camConfig;
+			if (camConfig != NULL && strcmp(equip->ip, oldEquipConfig.ip) == 0)
+			{
+				if (camConfig->channel == newChannel)
+					return camConfig;
+			}
 		}
 	}
 	
@@ -544,13 +560,13 @@
 int hcnetsdk_alarm_logo(LONG lUserID, const HCNetCameraConfig& _camConfig, const std::string& ip, int channel, bool disalarm)
 {
 	HCNetCameraConfig camConfig(_camConfig);
-	if (camConfig.channel != channel)
-	{
-		camConfig.channel = -1;
-		sockinfo* equipConfig = hcnetsdk_find_equip(ip, channel);
-		if (equipConfig != NULL)
-			camConfig = *(HCNetCameraConfig*)(equipConfig->user_config);
-	}
+	//if (camConfig.channel != channel)
+	//{
+	//	camConfig.channel = -1;
+	//	sockinfo* equipConfig = hcnetsdk_find_equip(ip, channel);
+	//	if (equipConfig != NULL)
+	//		camConfig = *(HCNetCameraConfig*)(equipConfig->user_config);
+	//}
 	
 	printf("hcnetsdk_alarm_logo, channel=%d, matchc=%d\n", channel, camConfig.channel);
 	
@@ -571,22 +587,89 @@
 	net_dvr_win_logo_cfg.dwSize = sizeof(net_dvr_win_logo_cfg);
 	//璁剧疆绐楀彛杈撳嚭logo
 	int byWallNo=1,dwSubWinNo=2,dwWinNo=1;
-	DWORD dwDecChanNum=(camConfig.byWallNo << 24) | (camConfig.dwSubWinNo << 16) | camConfig.dwWinNo;
-	if(!NET_DVR_SetDVRConfig(lUserID,NET_DVR_SET_WIN_LOGO_CFG,dwDecChanNum,&net_dvr_win_logo_cfg,net_dvr_win_logo_cfg.dwSize))
+	
+	for (int i= 0; i < camConfig.dwWinNo.size(); i++)
 	{
-		printf("NET_DVR_SetDVRConfig2 error, err: %d\n", NET_DVR_GetLastError());
-		return -1;
+		DWORD dwDecChanNum=(camConfig.byWallNo << 24) | (camConfig.dwSubWinNo << 16) | camConfig.dwWinNo[i];
+		if(!NET_DVR_SetDVRConfig(lUserID,NET_DVR_SET_WIN_LOGO_CFG,dwDecChanNum,&net_dvr_win_logo_cfg,net_dvr_win_logo_cfg.dwSize))
+		{
+			printf("NET_DVR_SetDVRConfig2 error, err: %d\n", NET_DVR_GetLastError());
+			//return -1;
+		}
+		else
+		{
+			printf("NET_DVR_SetDVRConfig2 done.\n");
+			//return 0;
+		}
 	}
-	else
-	{
-		printf("NET_DVR_SetDVRConfig2 done.\n");
-		//return 0;
-	}
+	
+	return 0;
 	
 	//sleep(3);
 	//net_dvr_win_logo_cfg.byEnable = 0;
 	//NET_DVR_SetDVRConfig(lUserID,NET_DVR_SET_WIN_LOGO_CFG,dwDecChanNum,&net_dvr_win_logo_cfg,net_dvr_win_logo_cfg.dwSize);
 }
+
+
+int hcnetsdk_alarm_logo_alarmout(LONG lUserID, const HCNetCameraConfig& _camConfig, const std::string& ip, int channel, bool disalarm)
+{
+	HCNetCameraConfig camConfig(_camConfig);
+	//if (camConfig.channel != channel)
+	//{
+	//	camConfig.channel = -1;
+	//	sockinfo* equipConfig = hcnetsdk_find_equip(ip, channel);
+	//	if (equipConfig != NULL)
+	//		camConfig = *(HCNetCameraConfig*)(equipConfig->user_config);
+	//}
+	
+	printf("hcnetsdk_alarm_logo, channel=%d, matchc=%d\n", channel, camConfig.channel);
+	
+	if (camConfig.channel < 0)
+		return -1;
+	
+	//绐楀彛閰嶇疆淇℃伅
+	NET_DVR_WIN_LOGO_CFG net_dvr_win_logo_cfg;
+	net_dvr_win_logo_cfg.dwLogoNo = 1;
+	net_dvr_win_logo_cfg.byEnable = (disalarm ? 0 : 1);//0:hidden,1:visible
+	net_dvr_win_logo_cfg.byRes1[3] =0;
+	net_dvr_win_logo_cfg.dwCoordinateX = 5;
+	net_dvr_win_logo_cfg.dwCoordinateY =5;
+	net_dvr_win_logo_cfg.byFlash = 1;
+	net_dvr_win_logo_cfg.byTranslucent = 0;
+	net_dvr_win_logo_cfg.byRes2[34] = 0;
+
+	net_dvr_win_logo_cfg.dwSize = sizeof(net_dvr_win_logo_cfg);
+	//璁剧疆绐楀彛杈撳嚭logo
+	int byWallNo=1,dwSubWinNo=2,dwWinNo=1;
+	
+	for (int i= 0; i < camConfig.dwWinNo.size(); i++)
+	{
+		DWORD dwDecChanNum=(camConfig.byWallNo << 24) | (camConfig.dwSubWinNo << 16) | camConfig.dwWinNo[i];
+		if(!NET_DVR_SetDVRConfig(lUserID,NET_DVR_SET_WIN_LOGO_CFG,dwDecChanNum,&net_dvr_win_logo_cfg,net_dvr_win_logo_cfg.dwSize))
+		{
+			printf("NET_DVR_SetDVRConfig2 error, err: %d\n", NET_DVR_GetLastError());
+			//return -1;
+		}
+		else
+		{
+			printf("NET_DVR_SetDVRConfig2 done.\n");
+			//return 0;
+		}
+	}
+	
+	//if (!disalarm)
+	//{
+		//int hcnetsdk_alarm_alarmout(LONG lUserID, const HCNetCameraConfig& camConfig)
+		hcnetsdk_alarm_alarmout(lUserID, camConfig, disalarm);
+	//}
+	
+	return 0;
+	
+	//sleep(3);
+	//net_dvr_win_logo_cfg.byEnable = 0;
+	//NET_DVR_SetDVRConfig(lUserID,NET_DVR_SET_WIN_LOGO_CFG,dwDecChanNum,&net_dvr_win_logo_cfg,net_dvr_win_logo_cfg.dwSize);
+}
+
 
 int main(int argc,char **argv)
 {
@@ -615,7 +698,7 @@
 	   if (hcnetsdk_user < 0)
 	   {
 		   printf("hcnetsdk_user < 0");
-		   exit(EXIT_FAILURE);
+		   exit(EXIT_FAILURE);//#todo if debug equipment(analizer), remove this
 	   }
 		
 	   /*Install timer_handler as th siganl handler for SIGVTALRM */
@@ -653,7 +736,7 @@
    int length=0;
    char buff[102400];
   
-   //puts("Step.1 ========>Server Thread is strarted......");
+   puts("Step.1 ========>Server Thread is strarted......");
    unsigned char data[4096];  
   //=======================================equipment data================================
   int idx=0;  
@@ -693,7 +776,7 @@
 			//	length-=3;
 			//	if(length<=0) continue;
 			//}
-			
+
             if(buff[0]==0x68 && buff[1]==0x03 )
         	{
 
@@ -809,7 +892,8 @@
 void* MyEquipmentthread(void* arg)
  {
    int eidx = (int)arg;   
-   //printf("Step.3 ===%d=====>RealTimeEvent Thread is strarted......\n",eidx);
+   const sockinfo& equipConfig(equipments[eidx]);
+   printf("Step.3 ===%d=====>RealTimeEvent Thread is strarted......\n",eidx);
 
    int length=0;
    char buff[102400];
@@ -824,12 +908,13 @@
 		}
 	   else if(length>0)
 	   {
+		   std::cout << "buff:  " << buff<<std::endl;
+		   
 		   bool isDisalarm = false;
 			if (strstr(buff, "ViqEventNotificationAlert") == NULL) // <urn
 				continue;
 			if (strstr(buff, "startTime") == NULL) // <urn
 				isDisalarm = true;
-			//std::cout << buff<<std::endl;
 			
 			int channel = -1;
 			{
@@ -840,10 +925,37 @@
 				}
 			}
 			
+			if (channel==1)
+			{
+				int aa=1;//#todo break
+			}
+			
             if(gCapturing[eidx]==1)
 			{
+				//add 20170327
+				const std::string& ip(equipConfig.ip);
+				const HCNetCameraConfig* camConfig =  (HCNetCameraConfig*)equipConfig.user_config;
+				camConfig = hcnetsdk_find_config(equipConfig, channel);
+				int lUserData = hcnetsdk_get_userid(ip);
+				if (camConfig != NULL && hcnetsdk_user >= 0)
+				{
+					std::cout << "......alarm begin k=" << k << std::endl;
+					if (equipConfig.m_type == ET_HCNET_DECODER_ALARMOUT && !isDisalarm)
+						hcnetsdk_alarm_alarmout(lUserData, *camConfig, isDisalarm);
+					else if (equipConfig.m_type == ET_HCNET_DECODER_LOGO)
+						hcnetsdk_alarm_logo(lUserData, *camConfig, ip, channel, isDisalarm);
+					else if (equipConfig.m_type == ET_HCNET_DECODER_LOGO_ALARMOUT)
+						hcnetsdk_alarm_logo_alarmout(lUserData, *camConfig, ip, channel, isDisalarm);
+					std::cout << "......alarm end k=" << k << std::endl;
+				}
+				else
+				{
+					std::cout << "alarm lost k=" << k << std::endl;
+				}
+
+				
 				int k;
-				for(k=0;k<16;k++)
+				for(k=0;k<MAX_NUM;k++)
 				{
 					//if(SupperConnectedflag[k]==1)
 					//{
@@ -877,28 +989,28 @@
 						//printf("%s",buff);
 					//}
 					//else
-					{
-						if(SupperConnectedIP.size() > k)
-						{
-							const std::string& ip(SupperConnectedIP[k]);
-							sockinfo* equipConfig = hcnetsdk_find_equip(ip);
-							HCNetCameraConfig* camConfig =  hcnetsdk_find_config(ip);
-							int lUserData = hcnetsdk_get_userid(ip);
-							if (camConfig != NULL && equipConfig != NULL && lUserData >= 0)
-							{
-								std::cout << "alarm begin k=" << k << std::endl;
-								if (equipConfig->m_type == ET_HCNET_DECODER_ALARMOUT && !isDisalarm)
-									hcnetsdk_alarm_alarmout(lUserData, *camConfig);
-								else if (equipConfig->m_type == ET_HCNET_DECODER_LOGO)
-									hcnetsdk_alarm_logo(lUserData, *camConfig, ip, channel, isDisalarm);
-								std::cout << "alarm end k=" << k << std::endl;
-							}
-							else
-							{
-								//std::cout << "alarm lost k=" << k << std::endl;
-							}
-						}
-					}
+					//{
+					//	if(SupperConnectedIP.size() > k)
+					//	{
+					//		const std::string& ip(SupperConnectedIP[k]);
+					//		sockinfo* equipConfig = hcnetsdk_find_equip(ip);
+					//		HCNetCameraConfig* camConfig =  hcnetsdk_find_config(ip);
+					//		int lUserData = hcnetsdk_get_userid(ip);
+					//		if (camConfig != NULL && equipConfig != NULL && lUserData >= 0)
+					//		{
+					//			std::cout << "......alarm begin k=" << k << std::endl;
+					//			if (equipConfig->m_type == ET_HCNET_DECODER_ALARMOUT && !isDisalarm)
+					//				hcnetsdk_alarm_alarmout(lUserData, *camConfig);
+					//			else if (equipConfig->m_type == ET_HCNET_DECODER_LOGO)
+					//				hcnetsdk_alarm_logo(lUserData, *camConfig, ip, channel, isDisalarm);
+					//			std::cout << "......alarm end k=" << k << std::endl;
+					//		}
+					//		else
+					//		{
+					//			std::cout << "alarm lost k=" << k << std::endl;
+					//		}
+					//	}
+					//}
 				}
 				continue;	
 			}
@@ -967,7 +1079,21 @@
 			camConfig->channel = jsonUserConfig["channel"].asInt();
 			camConfig->byWallNo = jsonUserConfig["byWallNo"].asInt();
 			camConfig->dwSubWinNo = jsonUserConfig["dwSubWinNo"].asInt();
-			camConfig->dwWinNo = jsonUserConfig["dwWinNo"].asInt();
+			
+			Json::Value dwWinNoArrays = jsonUserConfig["dwWinNo"];
+			if (dwWinNoArrays.isArray())
+			{
+				const int s = (int)(dwWinNoArrays.size());
+				for(int i = 0; i < s; i++)
+				{
+					camConfig->dwWinNo.push_back(dwWinNoArrays[i].asInt());
+				}
+			}
+			else
+			{
+				camConfig->dwWinNo.push_back(dwWinNoArrays.asInt());
+			}
+			
 			camConfig->lAlarmOutPort = jsonUserConfig["lAlarmOutPort"].asInt();
 		}
 		
@@ -1356,7 +1482,7 @@
 	return n;
 }
 //for real event
-void MakeAuthorizedPacketReal(char* buff,int length, char* Method,char* uri,int Idx)
+void MakeAuthorizedPacketReal_Digest(char* buff,int length, char* Method,char* uri,int Idx)
 {
 	char Device[150] ;
 	char Realm_buf1[512] ;
@@ -1369,7 +1495,7 @@
 	memset(domain_buf4,0,512);
 
 	CharToByte((char*)buff, Device, length,Realm_buf1,nonce_buf2,auth_buf3,domain_buf4, len);
-	const char* cnonce_buf="163acd0e58793a190f29ee879d4b224f";//"08a9d86c1b5e45963cf82f43dca59c51";
+	const char* cnonce_buf="1oBAAAqkwXP9q9MorVCzgw5LNPc";//"08a9d86c1b5e45963cf82f43dca59c51";
 	Realm_buf1[len[0]]=0;
 	nonce_buf2[len[1]]=0;
 	auth_buf3[len[2]]=0;
@@ -1418,7 +1544,32 @@
 	byte_array[iidx]=0;
 
 }
+
+void MakeAuthorizedPacketReal_Basic(char* buff,int length, char* Method,char* uri,int Idx)
+{
+	/*
+POST /PSIA/VIQ/System/sessions HTTP/1.1
+Content-Length: 0
+Host: 192.168.1.5:80
+Connection: Keep-Alive
+Authorization: Basic c3VwZXJ2aXNvcjpzdXBlcnZpc29y
+	*/
 	
+	int i = 0;
+	sprintf(byte_array, 
+		"%s %s HTTP/1.1\r\n"
+		"Content-Length: 0\r\n"
+		"Host: %s:80\r\n"
+		"Connection: Keep-Alive\r\n"
+		"Authorization: Basic %s\r\n"
+		"\r\n",
+		Method,
+		uri,
+		equipments[Idx].ip,
+		"c3VwZXJ2aXNvcjpzdXBlcnZpc29y" // base64(supervisor:supervisor)
+	);
+}
+
 //// 鍔熻兘锛氬紑濮嬫煡鐪嬪疄鏃剁洃鎺�
 //// 杈撳叆锛氬垎鏋愬櫒IP,鐢ㄦ埛,瀵嗙爜
 //// 杈撳嚭锛�0锛堟垚鍔燂級, -1(鍒濆鍖栧け璐�),-2(杩炴帴澶辫触)
@@ -1460,6 +1611,7 @@
 		sigset(SIGALRM, u_alarm_handler);//add 2016.11.22
 		alarm(2);
 		length=read(rsock_down[Idx],&buff,sizeof(buff));
+		//printf("RESPONSE: %s\n",&buff);	
 		alarm(0);
 		sigrelse(SIGALRM);	
 		//printf("Myequipment connect ==================length =%d:\n",length);	
@@ -1471,14 +1623,23 @@
 		if(memorycmp((unsigned char*)buff,length, "WWW-Authenticate:",17)>0 && bbbb==0)
 		{
 			// analyse reception
-			MakeAuthorizedPacketReal(buff,length,"POST","/PSIA/VIQ/System/sessions/permanent",Idx);
-			zclock_sleep(100);
-			write(rsock_down[Idx],byte_array,strlen(byte_array));
-//			printf("%s\n",(char*)byte_array);					
+			MakeAuthorizedPacketReal_Basic(buff,length,"POST","/PSIA/VIQ/System/sessions/permanent",Idx);
+			//for(int ii=0;ii<4;ii++)
+			//{
+				zclock_sleep(100);
+				write(rsock_down[Idx],byte_array,strlen(byte_array));
+			//}
+			printf("%s\n",(char*)byte_array);					
 			bbbb=1;
-			continue;
+			continue;//#todo 20170325
+			//break;
 		}
 		if(bbbb==1){
+			//if (strstr((char*)buff,"Unauthorized") != NULL)
+			//{
+			//	bbbb=0;
+			//}
+			
 			int sidx = stringcmp((char*)buff,"<urn:id>",8);
 			if(sidx >=0){//<urn:ViqDateTimeInterval urn:version="1.0" xmlns:urn="urn:videoiq-com"><urn:startTime urn:version="1.0"><urn:date>2016-08-18T01:07:20.749</urn:date><urn:offset>0</urn:offset></urn:startTime><urn:endTime urn:version="1.0"><urn:date>2016-08-29T08:33:48.231</urn:date><urn:offset>0</urn:offset></urn:endTime></urn:ViqDateTimeInterval>
 				int eidx = stringcmp((char*)buff,"</urn:id>",9);
@@ -1513,6 +1674,8 @@
 	}
 	char uri[200];
 	sprintf(uri,"/PSIA/Custom/Event/notification/notificationStream?sessionId=%s",sessions[Idx]);
+	//sprintf(uri,"/PSIA/Custom/Event/notification/notificationStream?sessionId=5");
+	printf("/PSIA/Custom/Event/notification/notificationStream?sessionId=%s\n",sessions[Idx]);
 	length = sprintf(byte_array,"GET %s HTTP/1.1\r\nContent-Type: text/xml\r\nHost: %s\r\nContent-Length: 0\r\nConnection: Keep-Alive\r\n\r\n",uri,equipments[Idx].ip);		 
 	write(rsock_down[Idx],byte_array,strlen(byte_array));
 	while(1){
@@ -1531,9 +1694,13 @@
 		{
 			char uri[200];
 			sprintf(uri,"/PSIA/Custom/Event/notification/notificationStream?sessionId=%s",sessions[Idx]);
-			MakeAuthorizedPacketReal(buff,length,"GET",uri,Idx);
+			MakeAuthorizedPacketReal_Basic(buff,length,"GET",uri,Idx);
+			//for(int ii=0;ii<4;ii++)
+			//{
+			zclock_sleep(100);
 			write(rsock_down[Idx],byte_array,strlen(byte_array));
-//			printf("%s\n",(char*)byte_array);	
+			//}
+			printf("%s\n",(char*)byte_array);	
 			bbbb=3;			
 			continue;
 		}

--
Gitblit v1.8.0