亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? oswrap_win.c

?? Atheros AP Test with Agilent N4010A source code
?? C
?? 第 1 頁 / 共 3 頁
字號:
//TONY		

    ffd = fileno(stdout);
	wVersionRequested = MAKEWORD( 2, 2 );
 
	res = WSAStartup( wVersionRequested, &wsaData );
	if ( res != 0 ) {
		uiPrintf("socketConnect: Could not find windows socket library\n");
		return -1;
	}
 
	if ( LOBYTE( wsaData.wVersion ) != 2 ||
        HIBYTE( wsaData.wVersion ) != 2 ) {
		uiPrintf("socketConnect: Could not find windows socket library\n");
		WSACleanup( );
		return -1; 
	}

    if((proto = getprotobyname("tcp")) == NULL) {
    	uiPrintf("ERROR::socketConnect: getprotobyname failed: %d\n", WSAGetLastError());
   		WSACleanup( );
	    return -1;
    }

    q_uiPrintf("socket start\n");
    sfd = WSASocket(PF_INET, SOCK_STREAM, proto->p_proto, NULL, (GROUP)NULL,0);
    q_uiPrintf("socket end\n");
    if (sfd == INVALID_SOCKET) {
	    uiPrintf("ERROR::socketConnect: socket failed: %d\n", WSAGetLastError());
        WSACleanup( );
	    return -1;
    }

    /* Allow immediate reuse of port */
    q_uiPrintf("setsockopt SO_REUSEADDR start\n");
    i = 1;
    res = setsockopt(sfd, SOL_SOCKET, SO_REUSEADDR, (char *) &i, sizeof(i));
    if (res != 0) {
	    uiPrintf("ERROR::socketConnect: setsockopt SO_REUSEADDR failed: %d\n", WSAGetLastError());
        WSACleanup( );
	    return -1;
    }	
    q_uiPrintf("setsockopt SO_REUSEADDR end\n");

    /* Set TCP Nodelay */
    q_uiPrintf("setsockopt TCP_NODELAY start\n");
    i = 1;
    res = setsockopt(sfd, IPPROTO_TCP, TCP_NODELAY, (char *) &i, sizeof(i));
    if (res != 0) {
	    uiPrintf("ERROR::socketCreateAccept: setsockopt TCP_NODELAY failed: %d\n", WSAGetLastError());
        WSACleanup( );
	    return -1;
    }	
    q_uiPrintf("setsockopt TCP_NODELAY end\n");

    q_uiPrintf("gethostbyname start\n");
    q_uiPrintf("socket_connect: target_hostname = '%s'\n", target_hostname);
    hostent = gethostbyname(target_hostname);
    q_uiPrintf("gethostbyname end\n");
    if (!hostent) {
	    uiPrintf("ERROR::socketConnect: gethostbyname failed: %d\n", WSAGetLastError());
        WSACleanup( );
	    return -1;
    }	

    memcpy(ip_addr, hostent->h_addr_list[0], hostent->h_length);
    *ip_addr = ntohl(*ip_addr);
    memset(&sin,'\0',sizeof(struct sockaddr_in));
    sin.sin_family = AF_INET;
    memcpy(&sin.sin_addr.s_addr, hostent->h_addr_list[0], hostent->h_length);
    sin.sin_port = htons((short)target_port_num);
	//printf("****sin_port :%d\n",sin.sin_port);
	//printf("***************sin_addr :%s\n",(sin.sin_addr.s_addr));
	//TONY
    for (i = 0; i < 20; i++) {
		//printf("***CONNECT ******\n");
        q_uiPrintf("connect start %d\n", i);
	    res = connect(sfd, (struct sockaddr *) &sin, sizeof(sin));
        q_uiPrintf("connect end %d\n", i);
			//printf("***CONNECT END  ******\n");
	    if (res == 0) {
	        break;
	    }
	    milliSleep(1);
    }
    if (i == 20) {
//TONY
printf("Problem with ART Target - Crystal problem?");
	if( (fStream = fopen("ArtLog.txt", "w+")) == NULL ) {
                        printf("\nFailed to open ArtLog.txt\n");
            return;
        }
	fputc((int)'1',fStream);
	fputc((int)'1',fStream);
	fputc((int)'1',fStream);
	fputc((int)'1',fStream);
	fputc((int)'1',fStream);
	fputc((int)'1',fStream);
	fputc((int)'0',fStream);
	fputc((int)'1',fStream);

	fclose(fStream);
	exit(0);
//TONY
	    uiPrintf("ERROR::connect failed completely\n");
        WSACleanup( );
	    return -1;
    }

    return sfd;
}

A_UINT32 semInit
(
	void
) 
{
	HANDLE hSemaphore;

	hSemaphore = CreateSemaphore(NULL, 1, 1, NULL);

	if (hSemaphore == NULL) {
		return 0;
	}

	return (A_UINT32)hSemaphore;
}

A_INT32 semLock
(
	A_UINT32 sem
)
{
	HANDLE hSemaphore;

	hSemaphore = (HANDLE)sem;
	if (WaitForSingleObject(hSemaphore, INFINITE) == WAIT_FAILED) {
		return -1;
	}

	return 0;
}

A_INT32 semUnLock
(
	A_UINT32 sem
)
{
	HANDLE hSemaphore;

	hSemaphore = (HANDLE)sem;
	if (ReleaseSemaphore(hSemaphore, 1, NULL) == 0) {
		return -1;
	}

	return 0;
}

A_INT32 semClose
(
	A_UINT32 sem
)
{
	HANDLE hSemaphore;

	hSemaphore = (HANDLE)sem;
	if (CloseHandle(hSemaphore) == 0) {
		return -1;
	}

	return 0;
}

A_UINT32 os_com_open(OS_SOCK_INFO *pOSSock) {
    DCB          dcb;
    A_UINT32 nComErr=0;
    A_UINT32 err=0;

	// Close the port 
    (void)os_com_close(pOSSock);

    // device handle
    pOSSock->sockfd = (A_UINT32) CreateFile( pOSSock->hostname,                             // port name
                       GENERIC_READ | GENERIC_WRITE,     // allow r/w access
                       0,                                // always no sharing
                       0,                                // no security atributes for file
                       OPEN_EXISTING,                    // always open existing
                       //FILE_FLAG_OVERLAPPED,            // overlapped operation   
                       FILE_FLAG_NO_BUFFERING,            // non-overlapped operation   
                       0);                               // always no file template

    if ((HANDLE)pOSSock->sockfd == INVALID_HANDLE_VALUE) {
       nComErr = nComErr | COM_ERROR_GETHANDLE;
       return 0;
    }

    // port configuration
    FillMemory (&dcb, sizeof(dcb),0);
    dcb.DCBlength = sizeof(dcb);
//    if (!BuildCommDCB("19200,n,8,1", &dcb)) {
    if (!BuildCommDCB("38400,n,8,1", &dcb)) {
    //if (!BuildCommDCB("115200,n,8,1", &dcb)) {
       nComErr = nComErr | COM_ERROR_BUILDDCB;
       return nComErr;
    }
    dcb.fOutX = FALSE;
    dcb.fInX = FALSE;
    dcb.fDtrControl = DTR_CONTROL_DISABLE;
    dcb.fRtsControl = RTS_CONTROL_DISABLE;
    dcb.fOutxCtsFlow = FALSE;
    dcb.fOutxDsrFlow = FALSE;
    dcb.fDsrSensitivity = FALSE;
    if (!SetCommState((HANDLE) pOSSock->sockfd, &dcb)) {
       nComErr = nComErr | COM_ERROR_CONFIGDEVICE;
       return nComErr;
    }
    if (!SetupComm((HANDLE) pOSSock->sockfd, READ_BUF_SIZE, WRITE_BUF_SIZE)) {
       nComErr = nComErr | COM_ERROR_CONFIGBUFFERS;
       return nComErr;
    }
    if (!EscapeCommFunction((HANDLE) pOSSock->sockfd, SETDTR)) {
       nComErr = nComErr | COM_ERROR_SETDTR;
       return nComErr;
    }
    if (!PurgeComm((HANDLE) pOSSock->sockfd, PURGE_RXABORT | PURGE_RXCLEAR |
                       PURGE_TXABORT | PURGE_TXCLEAR)) {
       nComErr = nComErr | COM_ERROR_PURGEBUFFERS;
       return nComErr;
    }
	

    // set mask to notify thread if a character was received
    if (!SetCommMask((HANDLE) pOSSock->sockfd, EV_RXCHAR|EV_BREAK|EV_RXFLAG)) {
       // error setting communications event mask
       nComErr = nComErr | COM_ERROR_CONFIGDEVICE;
       return nComErr;
    }


    return 0;
}

A_UINT32 os_com_close(OS_SOCK_INFO *pOSSock) { 

    // reset error byte
    A_UINT32 nComErr = 0;

    if (inSignalHandler == TRUE) return -1;

    if (!EscapeCommFunction((HANDLE) pOSSock->sockfd, CLRDTR)) {
       nComErr = nComErr | COM_ERROR_CLEARDTR;
       return nComErr;
    }
    if (!PurgeComm((HANDLE) pOSSock->sockfd, PURGE_RXABORT | PURGE_RXCLEAR |
                       PURGE_TXABORT | PURGE_TXCLEAR)) {
       nComErr = nComErr | COM_ERROR_PURGEBUFFERS;
       return nComErr;
    }

    // device handle
    CloseHandle((HANDLE) pOSSock->sockfd);
	

    return 0;

}

A_UINT32 write_device(OS_SOCK_INFO *pOSSock, A_UINT8 *buf, A_INT32 *len) {
    A_UINT32 nComErr; A_INT32 written_len, tmp_len;
    A_UINT32 status, jIndex=0, numblocks, remaining_bytes;

    	// reset error byte
    	nComErr = 0;
	written_len = *len;
	// split the write

	numblocks = (*len/WRITE_BUF_SIZE); 
	remaining_bytes = *len - (numblocks * WRITE_BUF_SIZE);
#ifdef _DEBUG
	q_uiPrintf("write_device::sockfd=%x:", pOSSock->sockfd);
	q_uiPrintf("numblocks = %d:remainingbytes = %x\n", numblocks, remaining_bytes);
#endif
	for(jIndex=0; jIndex<numblocks; jIndex++) {
       status = WriteFile((HANDLE) pOSSock->sockfd, (const char *)&buf[jIndex * WRITE_BUF_SIZE], WRITE_BUF_SIZE, (A_UINT32 *)&tmp_len, NULL);
       if (!status || tmp_len != WRITE_BUF_SIZE) {
           //nComErr = nComErr | COM_ERROR_WRITE;
           nComErr = GetLastError();
			uiPrintf("write_device::Error=%x", nComErr);
           return nComErr;
       }
	  // milliSleep(5);
	}
	if (remaining_bytes) {	
    // write the com port
       status = WriteFile((HANDLE) pOSSock->sockfd, (const char *)&buf[jIndex * WRITE_BUF_SIZE], remaining_bytes, (A_UINT32 *)&tmp_len, NULL);
       if (!status || tmp_len != (A_INT32) remaining_bytes) {
           nComErr = nComErr | COM_ERROR_WRITE;
           nComErr = GetLastError();
		   uiPrintf("write_device::Error=%x", nComErr);
           return nComErr;
       }
	}

    return 0;

}

A_UINT32 os_com_read(OS_SOCK_INFO *pOSSock, A_UINT8 *buf, A_INT32 *len) {

    A_UINT32 dwCommEvent;
    DWORD dwRead, pos = 0, numCharsToRead, numCharsInBuffer, iIndex;
	A_UINT8 *chReadBuf;
    A_UINT32 nComErr;

    // reset error byte
    nComErr = 0;
#ifdef _DEBUG
	uiPrintf("os_com_read::");
	uiPrintf("enter while loop::with *len = %d\n", *len);
#endif

	chReadBuf=buf;


    while(pos < (A_UINT32)*len) {


	  numCharsInBuffer = getBytesBuffered((HANDLE)pOSSock->sockfd, IN_QUEUE);

	  if (numCharsInBuffer == 0) { 

		  // Wait for the event

#ifdef _DEBUG
	      uiPrintf("Waiting for Event:numCharsInBuffer = %d\n", numCharsInBuffer);
#endif

          if ( WaitCommEvent((HANDLE) pOSSock->sockfd, &dwCommEvent, NULL)) {
#ifdef _DEBUG
			  uiPrintf("Event obtained = %x:pos=%d:*len=%d\n", dwCommEvent, pos, *len);
#endif
	         if (!(dwCommEvent&EV_RXCHAR) ) continue;
	      }
	      else continue;

	  }

       // read receive buffer
	  dwRead=0;

	  numCharsInBuffer = getBytesBuffered((HANDLE)pOSSock->sockfd, IN_QUEUE);
	
	  if (numCharsInBuffer == 0)  continue;

	  if (numCharsInBuffer > (A_UINT32)(*len-pos))
		numCharsToRead = (*len-pos);
	  else
		numCharsToRead = numCharsInBuffer;
		  
#ifdef _DEBUG
	  	//	printf("pos=%d:len=%d\n", pos, *len);
		//	printf("Number of bytes in buffer=%d:to request=%d:pos=%d:total to read=%d\n", numCharsInBuffer, numCharsToRead, pos, *len);
#endif

      if (ReadFile((HANDLE) pOSSock->sockfd, chReadBuf, numCharsToRead, &dwRead, NULL)) {
		 if (dwRead != numCharsToRead) {
			printf("WARNING:: Number of bytes in buffer=%d:requested=%d:read=%d\n", numCharsInBuffer, numCharsToRead, dwRead);
		 }
		 for(iIndex=0; iIndex<dwRead; iIndex++) {
#ifdef _DEBUG
	        uiPrintf("%x ", buf[pos]);
#endif
			pos++;
		    chReadBuf++;
		 }
      }
      else {
        nComErr = nComErr | COM_ERROR_READ;
        return nComErr;
      }
	} 
    *len=pos;
    return 0;

}

A_UINT32 read_device(OS_SOCK_INFO *pOSSock, A_UINT8 *buf, A_INT32 *len) {
    A_UINT32 pos = 0, dwRead;
    A_UINT32 nComErr=0;

#ifdef _DEBUG
       q_uiPrintf("Read %d bytes from device::\n", *len);
#endif
          // read receive buffer
          if (ReadFile((HANDLE) pOSSock->sockfd, lpBuffer, *len, &dwRead, NULL)) {
#ifdef _DEBUG
                  q_uiPrintf("read_device::number of bytes read=%d\n", dwRead);
#endif
				  for(pos=0;pos<dwRead;pos++) {
					buf[pos]=lpBuffer[pos];
#ifdef _DEBUG
					q_uiPrintf("%x ", buf[pos]);
#endif
				  }

          }
          else {
             nComErr =  GetLastError();
             uiPrintf("ERROR:read_device::Error=%x", nComErr);
          }
       return nComErr;

}



DWORD getBytesBuffered(HANDLE handle, DWORD queueType) {

    COMSTAT comStat;
	DWORD dwErrors;

	if (!ClearCommError(handle, &dwErrors, &comStat)) {
		printf("ERROR:: ClearCommError :%x\n", GetLastError());
		return 0;
	}

	switch(queueType) {
	  case IN_QUEUE:
			return comStat.cbInQue;
			break;
	  case OUT_QUEUE:
			return comStat.cbOutQue;
			break;
	}
    return 0;
}


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
另类中文字幕网| 亚洲国产视频一区| 国产精品乱人伦| 天堂久久久久va久久久久| 国产乱码精品一区二区三区五月婷| 99视频精品在线| 久久久久久久久久美女| 日韩专区中文字幕一区二区| 波多野结衣在线aⅴ中文字幕不卡| 欧美精品一二三区| 国产精品网友自拍| 韩国毛片一区二区三区| 欧美乱熟臀69xxxxxx| 成人免费小视频| 国产成人免费视频| 日韩一级成人av| 亚洲成av人**亚洲成av**| 色噜噜久久综合| 亚洲日本青草视频在线怡红院| 国产综合色在线视频区| 69久久夜色精品国产69蝌蚪网| 亚洲蜜桃精久久久久久久| 不卡一区二区在线| 国产精品无遮挡| 成人午夜短视频| 国产三级欧美三级| 国产久卡久卡久卡久卡视频精品| 日韩视频国产视频| 日本不卡高清视频| 欧美一区二区视频在线观看 | 久久久国产精品麻豆| 奇米影视7777精品一区二区| 欧美欧美午夜aⅴ在线观看| 亚洲精品免费在线| 在线影院国内精品| 亚洲一区二区三区视频在线播放| 一本色道综合亚洲| 亚洲国产三级在线| 欧美一区二区三级| 精品一区二区三区在线观看国产| 欧美成人欧美edvon| 国产一区二区三区在线观看免费视频 | 7777精品伊人久久久大香线蕉经典版下载 | 国产成人精品亚洲777人妖| 亚洲一二三区不卡| 欧美日本在线观看| 美洲天堂一区二卡三卡四卡视频 | 另类小说一区二区三区| 精品国产免费一区二区三区四区| 精品夜夜嗨av一区二区三区| 国产精品无人区| 欧美日韩一区二区不卡| 蜜桃在线一区二区三区| 久久久久9999亚洲精品| 波多野洁衣一区| 亚洲午夜精品在线| 欧美一级理论性理论a| 国产剧情一区在线| 一区二区三区四区在线| 欧美一区二区美女| 不卡的av电影| 日本伊人精品一区二区三区观看方式| 日韩欧美一区二区三区在线| 丁香激情综合国产| 亚洲综合色噜噜狠狠| 日韩天堂在线观看| 91欧美一区二区| 青青青伊人色综合久久| 中文字幕精品在线不卡| 欧美日韩一区不卡| 国产米奇在线777精品观看| 亚洲欧美另类在线| 精品久久一区二区| 在线精品视频一区二区三四| 国产一区福利在线| 亚洲成人动漫在线观看| 亚洲国产精品成人久久综合一区| 欧美性淫爽ww久久久久无| 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲一区二区黄色| 久久精品一区八戒影视| 欧美久久免费观看| 色婷婷香蕉在线一区二区| 韩国在线一区二区| 日本vs亚洲vs韩国一区三区 | 成人理论电影网| 久久成人免费网| 午夜视频久久久久久| 国产精品视频在线看| 精品久久久久久久一区二区蜜臀| 在线精品视频免费播放| 成人少妇影院yyyy| 国产麻豆成人精品| 老司机精品视频导航| 亚洲不卡av一区二区三区| 1000精品久久久久久久久| 精品国产麻豆免费人成网站| 欧美精品丝袜中出| 色婷婷综合久色| 成人动漫精品一区二区| 国产做a爰片久久毛片| 蜜臀av一区二区| 亚洲一区二区在线播放相泽| 日韩毛片精品高清免费| 欧美国产成人精品| 国产亚洲精品久| 精品av综合导航| 精品国产一区二区三区久久影院| 欧美久久高跟鞋激| 欧美丝袜丝交足nylons图片| 色综合中文字幕国产 | 国产精一品亚洲二区在线视频| 天天色 色综合| 亚洲h在线观看| 婷婷中文字幕综合| 视频一区视频二区在线观看| 亚洲综合在线电影| 亚洲一二三级电影| 日韩成人一区二区三区在线观看| 亚洲成a人片在线观看中文| 亚洲黄色性网站| 亚洲va天堂va国产va久| 午夜av一区二区三区| 日韩不卡一二三区| 久久国产精品色| 国产成人一区二区精品非洲| 成人黄色在线视频| 色诱视频网站一区| 欧美人动与zoxxxx乱| 日韩欧美国产综合一区| 久久久久久久久久电影| 国产精品乱码久久久久久 | 国产区在线观看成人精品| 中文成人av在线| 亚洲精品精品亚洲| 日本不卡一二三| 国产91丝袜在线18| 色久优优欧美色久优优| 911国产精品| 国产欧美一区二区三区沐欲| 自拍偷拍亚洲欧美日韩| 日韩精品亚洲专区| 狠狠狠色丁香婷婷综合激情| 成人免费精品视频| 欧美电影在线免费观看| 国产日韩欧美高清在线| 亚洲伊人伊色伊影伊综合网| 精品一区二区三区日韩| 色综合久久88色综合天天免费| 91精品国产综合久久久久久久久久| 久久免费视频色| 亚洲图片欧美综合| 国产高清精品网站| 欧美日韩精品一区视频| 国产精品免费av| 久久国产精品区| 欧美亚洲禁片免费| 中文字幕 久热精品 视频在线 | 亚洲婷婷在线视频| 久久99精品国产麻豆婷婷洗澡| 99久久夜色精品国产网站| 日韩欧美不卡一区| 亚洲自拍偷拍九九九| 国产福利一区在线观看| 精品视频在线免费| 国产精品久久精品日日| 美女脱光内衣内裤视频久久影院| 91香蕉视频污在线| 国产婷婷色一区二区三区四区| 午夜日韩在线电影| 色综合一个色综合亚洲| 亚洲精品一区二区三区99| 亚洲国产精品一区二区尤物区| 国v精品久久久网| 精品电影一区二区| 日韩电影在线一区二区三区| 日本高清不卡一区| 国产精品国产三级国产aⅴ无密码| 另类中文字幕网| 欧美一级午夜免费电影| 亚洲午夜精品17c| 色欧美88888久久久久久影院| 欧美激情在线看| 国产一区久久久| 精品国产91洋老外米糕| 奇米色一区二区| 91精品在线观看入口| 一区二区三区欧美亚洲| 99re在线精品| 成人免费一区二区三区在线观看 | 中文字幕视频一区| caoporn国产精品| 国产精品久久久久aaaa| 成人免费毛片app| 1区2区3区精品视频| 成人av集中营| 亚洲另类在线视频| 色综合天天综合网国产成人综合天| 国产精品国产三级国产aⅴ中文 | 日韩一级二级三级|