Exemple #1
0
int ListenSeries(void *pParam)
{
	unsigned char data[256];
	char szData[256];
	int len, i, cnt, sendsocket, nRet;
	fd_set rfds;
	PRINTF("get pid= %d\n", getpid());

	while(!gblGetQuit()) {

#ifdef DSS_ENC_1100_1200_DEBUG
		sleep(1);
		continue;
#endif
		FD_ZERO(&rfds);
		FD_SET(gRemoteFD, &rfds);
		select(gRemoteFD + 1, &rfds, NULL, NULL, NULL);
		len = read(gRemoteFD, data, 256) ; //成功返回数据量大小,失败返回-1
		PackHeaderMSG((BYTE *)szData, MSG_TRACKAUTO, HEAD_LEN + 1);
		szData[HEAD_LEN] = data[3];

		if(data[0] == 0x08 && data[1] == 0x09  && data[2] == 0x08) {
			for(i = 0; i < len; i++) {
				//printf("ReadDataFroCom:%x\n",data[i]);
			}

			for(cnt = 0; cnt < MAX_CLIENT; cnt++) {
				if(ISUSED(0, cnt) && ISLOGIN(0, cnt)) {
					pthread_mutex_lock(&gSetP_m.audio_video_m);
					sendsocket = GETSOCK(0, cnt);

					if(sendsocket > 0)  {
						nRet = WriteData(sendsocket, szData, HEAD_LEN + 1);

						if(nRet < 0) {
							SETCLIUSED(0, cnt, FALSE);
							SETCLILOGIN(0, cnt, FALSE);
							//SETFARCTRLLOCK(index, cnt, 0);
							writeWatchDog();
							DEBUG(DL_ERROR, "track Send to socket Error: SOCK = %d count = %d  errno = %d  ret = %d\n", sendsocket, cnt, errno, nRet);
						}
					}

					pthread_mutex_unlock(&gSetP_m.audio_video_m);
				}
			}

		}
	}

	return len;
}
Exemple #2
0
int Enconn::SendCmd(char* buf,size_t len,int key)
{
	int rcvLen = 0;
	char pData[512] = {0};
	if((HEAD_LEN+len)>512)return -1;
	if(Enctype==1)//ENC1200
	{
		PackHeaderMSG((BYTE *)pData, key, (HEAD_LEN+len));
		memcpy(pData+HEAD_LEN,buf,len);
		rcvLen=Send((char*)pData,HEAD_LEN+len);//发送消息
	}
	else//ENC110
	{
		*(short*)(&pData)=htons(3+len);
		pData[2]=key;
		memcpy(pData+3,buf,len);
		rcvLen=Send((char*)pData,3+len);//发送消息
	}	
	return rcvLen;
}
Exemple #3
0
int Enconn::SetImage(LogoInfo position)
{
		char pData[1024] = {0};
	if(Enctype==1)//ENC1200
	{	
		PackHeaderMSG((BYTE *)pData, MSG_SET_LOGOINFO, (HEAD_LEN+1+sizeof(LogoInfo)));
		pData[HEAD_LEN]=0;
		memcpy(pData+HEAD_LEN+1,&position,sizeof(LogoInfo));
	
		Send(pData,HEAD_LEN+1+sizeof(LogoInfo));
	}
	else
	{	
		*(short*)(&pData)=htons(4+sizeof(LogoInfo));	
		pData[2]=MSG_SET_LOGOINFO;
		pData[3]=0;
		memcpy(pData+4,&position,sizeof(LogoInfo));
		
		Send(pData,4+sizeof(LogoInfo));
	}
	return 0;
}
Exemple #4
0
// 上传img图片logo
int Enconn::UploadImg(CString filePath, LogoInfo position,int type)
{
	int length;
	CFile file;
	char pData[1024] = {0};
	if(file.Open(filePath,CFile::typeBinary|CFile::modeRead)==FALSE)
	{
		::AfxMessageBox(_T("打开文件失败"));
		return -1;
	}
	length=file.GetLength();
	printf("img file length=%d\n",length);
	if(length<1)return -1;	
	if(Enctype==1)//ENC1200
	{	
		PackHeaderMSG((BYTE *)pData, MSG_SET_LOGOINFO, (HEAD_LEN+1+sizeof(LogoInfo)));
		pData[HEAD_LEN]=type;
		memcpy(pData+HEAD_LEN+1,&position,sizeof(LogoInfo));
		*(int*)((pData+HEAD_LEN+1+sizeof(LogoInfo)))=(length);
		Send(pData,HEAD_LEN+1+sizeof(LogoInfo)+4);
	}
	else
	{	
		*(short*)(&pData)=htons(4+sizeof(LogoInfo));	
		pData[2]=MSG_SET_LOGOINFO;
		pData[3]=type;
		memcpy(pData+4,&position,sizeof(LogoInfo));
		*(int*)((pData+4+sizeof(LogoInfo)))=(length);	
		Send(pData,8+sizeof(LogoInfo));
	}
	while(length)
	{		
		length=file.Read(pData,512);
		Send(pData,length);
	}
	

	return 0;
}
Exemple #5
0
/*update program*/
int update_program(int sSocket, char *data, int len)
{
	unsigned long filesize;
	unsigned char *p;
	unsigned long nLen;
	unsigned char temp[20];
	int ret;
	FILE *fp = NULL;
	p = NULL;
	p = malloc(8 * 1024);
	PRINTF("The File Updata Buffer Is 64KB!\n");

	if(!p) {
		ERR_PRN("Malloc 8KB Buffer Failed!\n");
	} else {
		PRINTF("The Buffer Addr 0x%x\n", (unsigned int)p);
	}

	if((fp = fopen("/update.tgz", "w+")) == NULL) {
		ERR_PRN("open %s error \n", "update.tgz");
		return -1;
	}

	PRINTF("szData:%x, %x, %x, %x, %x, %x,%x\n", data[0], data[1], data[2],
	       data[HEAD_LEN], data[HEAD_LEN + 1], data[HEAD_LEN + 2], data[HEAD_LEN + 3]);
	filesize = ((unsigned char)data[HEAD_LEN]) | ((unsigned char)data[HEAD_LEN + 1]) << 8 |
	           ((unsigned char)data[HEAD_LEN + 2]) << 16 | ((unsigned char)data[HEAD_LEN + 3]) << 24;
	PRINTF("Updata file size = 0x%x! \n", (unsigned int)filesize);

	while(filesize) {
		nLen = recv(sSocket, p, 8 * 1024, 0);
		PRINTF("recv Updata File 0x%x Bytes!\n", (unsigned int)nLen);

		if(nLen <= 0) {
			free(p);
			fclose(fp);
			p = NULL;
			return -1;
		}

		ret = fwrite(p, 1, nLen, fp);

		if(ret < 0) {
			ERR_PRN("product update faith!\n");
			free(p);
			fclose(fp);
			p = NULL;
			PackHeaderMSG((BYTE *)temp, MSG_UpdataFile_FAILS, HEAD_LEN);
			WriteData(sSocket, temp, HEAD_LEN);
			return -1;
		}

		PRINTF("write data ...........................:0x%x\n", (unsigned int)filesize);
		filesize = filesize - nLen;
	}

	PRINTF("recv finish......................\n");
	free(p);
	fclose(fp);


	ret = updatesystem("/update.tgz");


	if(ret == 0) {
		PackHeaderMSG((BYTE *)temp, MSG_UpdataFile_SUCC, HEAD_LEN);
	} else {
		PackHeaderMSG((BYTE *)temp, MSG_UpdataFile_FAILS, HEAD_LEN);
	}

	WriteData(sSocket, temp, HEAD_LEN);
	system("sync");
	sleep(5);
	/*重启*/
	PRINTF("----------------reboot----------\n");
	system("reboot -f");
	return 0;
}