From 591aacee97f4a6486631c38a6b418e20b2c4109c Mon Sep 17 00:00:00 2001
From: wangzhengquan <wangzhengquan85@126.com>
Date: 星期四, 10 九月 2020 14:56:47 +0800
Subject: [PATCH] update

---
 device/hcnetdisk.c |   57 +++++++++++++++++++++++++++++----------------------------
 1 files changed, 29 insertions(+), 28 deletions(-)

diff --git a/device/hcnetdisk.c b/device/hcnetdisk.c
index 7938a60..b6061a1 100644
--- a/device/hcnetdisk.c
+++ b/device/hcnetdisk.c
@@ -1,5 +1,4 @@
 #include "netdisk.h"
-#include "hcnetdisk.h"
  
 bool HCNetdisk::envInited = false;
 
@@ -36,8 +35,8 @@
 
 
 
-HCNetdisk::HCNetdisk(const std::string &_devicename):Netdisk(_devicename){
-	  
+HCNetdisk::HCNetdisk(): Netdisk(){
+  deviceType="HC";
 }
 
 int HCNetdisk::_login(Netdisk_LoginInfo &loginInfo) {
@@ -55,6 +54,7 @@
   NET_DVR_DEVICEINFO_V40 struDeviceInfo = {0};
   //lUserID = 0;
   lUserID = NET_DVR_Login_V40(&struLoginInfo, &struDeviceInfo);
+  printf("lUserID = %d\n", lUserID);
   if (lUserID < 0)
   {
     printf("Login error, %d\n", NET_DVR_GetLastError());
@@ -62,7 +62,8 @@
     return -1;
   }
 
-  printf("lUserID = %ld\n", lUserID);
+  
+  loginInfo.userid = std::to_string(lUserID);
   userid = lUserID;
   username = loginInfo.username;
   password = loginInfo.password;
@@ -70,10 +71,8 @@
   port = loginInfo.port;
 
 
-  startChannel = struDeviceInfo.struDeviceV30.byStartDChan;
-  maxChannels = struDeviceInfo.struDeviceV30.byIPChanNum + struDeviceInfo.struDeviceV30.byHighDChanNum * 256;
- 
-  
+  deviceInfo.startChannel = struDeviceInfo.struDeviceV30.byStartDChan;
+  deviceInfo.maxChannels = struDeviceInfo.struDeviceV30.byIPChanNum + struDeviceInfo.struDeviceV30.byHighDChanNum * 256;
 
   return 0;
 }
@@ -81,16 +80,14 @@
 int HCNetdisk::login(Netdisk_LoginInfo &loginInfo) {
 
    
-  //_login(loginInfo);
-  Netdisk::addLoginInfo(loginInfo);
+  return _login(loginInfo);
+  //Netdisk::addLoginInfo(loginInfo);
 
-  return 0;
 }
 
 int HCNetdisk::logout() {
 	//娉ㄩ攢鐢ㄦ埛
 	NET_DVR_Logout(userid);
-	userid = -1;
 	return 0;
 }
 
@@ -99,8 +96,8 @@
 	char destfile[1024];
 	int i = 0;
 
-	Netdisk_LoginInfo loginInfo = Netdisk::getLoginInfo(request.loginUUID);
-	_login(loginInfo);
+	// Netdisk_LoginInfo loginInfo = Netdisk::getLoginInfo(request.loginUUID);
+	// _login(loginInfo);
 	
 	start = request.start;
 
@@ -117,15 +114,20 @@
 		// printf("end   = %s", asctime(&end));
 		sprintf(destfile, "%s/%s-%d-%ld-%d", 
 		 	request.destpath.c_str(), 
-			devicename.c_str(), 
+			deviceType.c_str(), 
 		 	request.channel, 
 		 	mktime(&start), 
 		 	i);
-		// printf("%s\n", destfile);
-		downloadByTime_wrapper(userid, request.channel, &start, &end, destfile);
-		if(files != NULL) {
-			files->push_back(destfile);
-		}
+    std::cout << "destfile:" << destfile << std::endl;
+    char *destfiledup = strdup(destfile);
+		if(downloadByTime_wrapper(userid, request.channel, &start, &end, destfiledup) != -1) {
+      if(files != NULL) {
+        // std::cout << "push destfile:" << destfile << std::endl;
+        files->push_back(destfile);
+      }
+    }
+    free(destfiledup);
+		
 		start = end;
 		i++;
 	}
@@ -138,7 +140,7 @@
 /**
  * @return success: 0, failture : -1
  */
-int HCNetdisk::downloadByTime_wrapper(long userid, int channel, struct tm *start, struct tm *end, char *destfile) {
+int HCNetdisk::downloadByTime_wrapper(const long userid, const int channel, const struct tm *start, const struct tm *end, const char *destfile) {
   NET_DVR_FILECOND_V40 struFileCond = {0};
   struFileCond.dwFileType = 0xFF;
   
@@ -184,7 +186,8 @@
       char strFileName[256] = {0};
       if (destfile != NULL) {
         sprintf(strFileName, "%s", destfile);
-        char *dir = dirname(strdup(destfile));
+        //char *dir = dirname(strdup(destfile));
+        char *dir = dirname(const_cast<char *>(destfile));
         printf("dir === %s\n", dir);
         if ((mkdir(dir, DIR_MODE) == -1) && (errno != EEXIST)) {
             err_msg(errno, "hc_downloadByTime mkdir error ");
@@ -219,9 +222,8 @@
 
 
 
-int HCNetdisk::saveRecordFile(int userId, char * srcfile, char * destfile)
+int HCNetdisk::saveRecordFile( int userId,  char * srcfile,  char * destfile)
 {
-  printf("destfile=%s\n", destfile);
   int bRes = 1;
   int hPlayback = 0;
 //鎸夋枃浠跺悕涓嬭浇褰曞儚
@@ -239,14 +241,13 @@
     return bRes;
   }
   int nPos = 0;
+  //涓嬭浇杩涘害
   for (nPos = 0; nPos < 100 && nPos >= 0; nPos = NET_DVR_GetDownloadPos(hPlayback))
   {
     printf("Be downloading...%d %%\n", nPos);
     sleep(1);
-//涓嬭浇杩涘害
-//millisecond
   }
-  printf("have got %d\n", nPos);
+  // printf("have got %d\n", nPos);
 //鍋滄涓嬭浇
   if (!NET_DVR_StopGetFile(hPlayback))
   {
@@ -254,7 +255,7 @@
     bRes = -1;
     return bRes;
   }
-  printf("%s\n", srcfile);
+  // printf("%s\n", srcfile);
   if (nPos < 0 || nPos > 100)
   {
     printf("download err [%d]\n", NET_DVR_GetLastError());

--
Gitblit v1.8.0