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

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

?? intfunc.cpp

?? 基于ARM的應用Source6
?? CPP
字號:
/*----------------------------------------------------------------------------
 *  Copyright (c) 2001 by National Semiconductor Corporation
 *  National Semiconductor Corporation
 *  2900 Semiconductor Drive
 *  Santa Clara, California 95051
 *
 *  All rights reserved
 *
 *<<<-------------------------------------------------------------------------
 * File Contents:
 *	IntFunc.cpp  - this class handles Interrupt test. It gets arguments from the Interrupt 
 *				   Tab and operates the USB driver accordingly.
 *
 *  Project: USB Demo Application
 *  Author : Yan Nosovitsky
 *  Date   : Dec 2001
 *----------------------------------------------------------------------->>>*/

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

#include "stdafx.h"
#include "resource.h"
#include "command_api.h"
#include "CommonDefines.h"
#include "ControlFunc.h"
#include "USBDriver.h"
#include "IntFunc.h"
#include "intCmdTab.h"


IntFunc::IntFunc(CDialog *curIntTab)
{
	intTab = curIntTab;
	command = INTERRUPT_NO_COMMAND;
	testRun = FALSE;
	readThread = NULL;
	processThread = NULL;
}

IntFunc::~IntFunc()
{
}

bool IntFunc::ProcessIntTest(int intNum,int interval, int pipeNum)
{
	interruptNum = intNum;
	intInterval = interval;
	command = INTERRUPT_GET_INT;
	restToDo = intNum;
	wasTransferred = 0;
	waitForNum = 0;
	numOfErrors = 0;
	readTime = 0;
	readPipe = pipeNum;
	
	/* check USB Driver */
	USBDriver *curUSBDriver = USBDriver::GetUSBDriver();
	if (curUSBDriver->IsUSBDriverHaveError())
	{
		intTab->MessageBox(curUSBDriver->GetErrorDescriptor(),"Error",MB_ICONERROR | MB_OK);
		return FALSE;
	}

	if (curUSBDriver->IsBulkOutTestRun())
	{
		/* Bulk OUT test run */
		intTab->MessageBox("Cannot process current command.\nWait until Bulk OUT test is finished.","Error",MB_ICONERROR | MB_OK);
		return FALSE;
	}

	curUSBDriver->CnangeIntTestStatus(TRUE);

	/*send command to device */
	if (!ControlFunc::SendSetupPacketOut(command, intNum&0xffff,interval, 0))
	{
		/* Can't send setup packet */
		intTab->MessageBox("Cannot process current command.\nPlease check USB connection.","Error",MB_ICONERROR | MB_OK);
		return FALSE;
	}
	
	/* start process thread */
	processThread = AfxBeginThread(ProcessIntThread,this);
	return TRUE;
}

UINT IntFunc::ProcessIntThread(LPVOID par)
{
	IntFunc* curIntFunc = (IntFunc *)par;
	bool errorDetected = FALSE;
	USBDriver *curUSBDriver = USBDriver::GetUSBDriver();
	curIntFunc->testRun = TRUE;

	switch (curIntFunc->command)
	{
	case INTERRUPT_GET_INT:
		curIntFunc->readThreadRun = TRUE;
		curIntFunc->readThread = AfxBeginThread(ReadIntThread,curIntFunc);
		::WaitForSingleObject(curIntFunc->readThread->m_hThread,INFINITE);
		curIntFunc->readThread = NULL;
		if (!curIntFunc->readThreadRun)
			/* Error detected */
			errorDetected = TRUE;
		curIntFunc->readThreadRun = FALSE;
		curUSBDriver->CnangeIntTestStatus(FALSE);
		break;
	}
	if (!errorDetected)
	{	
		(curIntFunc->intTab)->MessageBox("Interrupt operation is complete.","Success",MB_ICONINFORMATION | MB_OK);
	}
	curIntFunc->testRun = FALSE;
	((intCmdTab *)(curIntFunc->intTab))->processStoped();
	curIntFunc->processThread = NULL;
	return 0;
}

void IntFunc::StopLastProcess()
{
	readThreadRun = FALSE;

/*	USBDriver *curUSBDriver = USBDriver::GetUSBDriver();
	if (curUSBDriver->IsUSBDriverHaveError())
		return;
	if (testRun)
	switch (command)
		{
		case INTERRUPT_GET_INT:
			if (processThread)
				processThread->ResumeThread();
			readThreadRun = FALSE;
			curUSBDriver->StopTransferPipe(Pipe[readPipe].dwNumber);
			if (readThread)
				readThread->ResumeThread();
			break;
		}
*/
}

UINT IntFunc::ReadIntThread(LPVOID par)
{
	IntFunc* curIntFunc = (IntFunc *)par;
	int pipeAdd = curIntFunc->Pipe[curIntFunc->readPipe].dwNumber;
	BYTE buffer[8] = {0};
	int read = 0;
	CString intNum;
	DWORD start = 0;
	USBDriver *curUSBDriver = USBDriver::GetUSBDriver();

	while (curIntFunc->readThreadRun)
	{
		/* read interrupt pipe */
		read = curUSBDriver->WorkWithPipe(pipeAdd,buffer,1,TRUE);
		if (!curIntFunc->readThreadRun)
			return -1;
		if (read ==-1)
		{
			/* error */
			if (curIntFunc->readThreadRun)
			(curIntFunc->intTab)->MessageBox("Cannot process current command.\nPlease check USB connection.","Error",MB_ICONERROR | MB_OK);
			curIntFunc->readThreadRun = FALSE;
			return -1;
		}

		if (read>0)
		{
			/* interrupt arrived */
			BYTE curInt = buffer[0];

			if (curInt != curIntFunc->waitForNum)
			{    /* wrong interrupt number */
				curIntFunc->numOfErrors +=(curInt - curIntFunc->waitForNum);
				curIntFunc->waitForNum = curInt+1;
			}
			else
				curIntFunc->waitForNum++;

			if (start != 0)
				curIntFunc->readTime +=(GetTickCount() - start);
			start = GetTickCount();
			
			curIntFunc->restToDo -- ;
			curIntFunc->wasTransferred ++;
				intNum.Format(_T("%d"),curIntFunc->waitForNum);
				((intCmdTab *)(curIntFunc->intTab))->m_arrivedInt.SetWindowText(intNum);
				((intCmdTab *)(curIntFunc->intTab))->m_progresBar.SetPos(curIntFunc->waitForNum);
			if (curIntFunc->waitForNum == curIntFunc->interruptNum)
			 /* all interrupts arrived */
				return 0;
		}
	}

	return -1;
}

UINT IntFunc::PrintMessage(LPVOID par)
{
	IntFunc* curIntFunc = (IntFunc *)par;
	CString msg;

	msg.Format(_T("Interrupt number %d arrived."),curIntFunc->waitForNum);
	(curIntFunc->intTab)->MessageBox(msg,"Inerrup test",MB_ICONINFORMATION | MB_OK);
	return 0;
}

int IntFunc::CheckPipes()
{
	int i = 0;
	USBDriver *curUSBDriver = USBDriver::GetUSBDriver();
	numOfPipes = 0;
	if ( !curUSBDriver->IsUSBDriverHaveError()) 
	{
		for (i = 0; i < WD_USB_MAX_PIPE_NUMBER; i++)
			if (curUSBDriver->CheckPipe(PIPE_TYPE_INTERRUPT, i, &Pipe[numOfPipes]))
			{
				if ( Pipe[numOfPipes].direction == USB_DIR_IN)
					readPipe = numOfPipes;
				else
					writePipe = numOfPipes;
				numOfPipes++;
			}
	}
	return numOfPipes;
}

CString IntFunc::getPipeInfo(int num)
{
	CString pipeInfo;
	CString pipeDir;

	if ( Pipe[num].direction == USB_DIR_IN)
		pipeDir.Format(_T("IN "));
	else
		pipeDir.Format(_T("OUT "));

	pipeInfo.Format(_T("%d. Pipe : 0x%02x Type : INTERRUPT MaxPktSize : 0x%x Dir : "),num+1,Pipe[num].dwNumber,Pipe[num].dwMaximumPacketSize);

	pipeInfo += pipeDir;

	return pipeInfo;
}

CString IntFunc::GetDetails()
{
	CString details;
	CString lastTest;
	CString statistic;

	details.Format(_T("The last test was supposed to transfer\n %d interrupts "),interruptNum);
	
	switch(command)
	{
	case INTERRUPT_GET_INT :
		lastTest.Format(_T("from device to host.\n"));
		break;
	}

	details += lastTest;
//	statistic.Format(_T("\nStatistics :\n Sent:     %d bytes\n Errors:    %d\n Time:       \n Byte Rate: \n"),wasTransferred,numOfErrors);
	statistic.Format(_T("\nStatistics :\n Received:  %d interrupts\n Errors:       %d\n Interval:    %.3f sec\n"),wasTransferred,numOfErrors,((double)readTime/(double)1000)/(double)(wasTransferred - 1));
	details += statistic;

	return details;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品少妇自拍| 欧美一区二视频| 国产福利不卡视频| 国产91清纯白嫩初高中在线观看| 国产激情一区二区三区四区 | 日日夜夜精品视频免费| 偷拍与自拍一区| 狠狠色2019综合网| 高清beeg欧美| 4438成人网| 亚洲欧美电影院| 韩国视频一区二区| 一本一道波多野结衣一区二区| 欧美在线免费观看亚洲| 久久久久国产精品麻豆ai换脸| 国产精品成人免费| 麻豆国产欧美日韩综合精品二区| 成人自拍视频在线观看| 日韩一区二区免费视频| 亚洲综合一区在线| 99re成人精品视频| 久久免费偷拍视频| 奇米777欧美一区二区| 欧美精品一区二区三区久久久| 一区二区三区四区亚洲| 国产v综合v亚洲欧| 久久亚洲精精品中文字幕早川悠里 | 制服视频三区第一页精品| 国产精品高潮呻吟| 国产一区啦啦啦在线观看| 欧美一级高清大全免费观看| 亚洲国产精品麻豆| 欧美性受xxxx黑人xyx性爽| 亚洲欧美激情一区二区| 91亚洲大成网污www| 最新不卡av在线| 欧美日韩精品免费观看视频| 亚洲美女屁股眼交| 欧美三级在线看| 久久国产三级精品| 国产精品无遮挡| 91女人视频在线观看| 亚洲电影激情视频网站| 日韩三区在线观看| 国产成人精品免费在线| 国产精品少妇自拍| 在线看日本不卡| 男男视频亚洲欧美| 日本一区二区免费在线观看视频 | 热久久久久久久| 中文字幕+乱码+中文字幕一区| 成人美女视频在线观看| 亚洲一区在线观看网站| 精品国产网站在线观看| 99riav久久精品riav| 蜜臀av在线播放一区二区三区| 久久久精品中文字幕麻豆发布| 成人精品国产免费网站| 午夜久久久影院| 久久久亚洲午夜电影| 欧美理论电影在线| 91麻豆高清视频| 精品一区二区三区不卡| 一区二区三区蜜桃网| 国产精品无码永久免费888| 91麻豆精品国产自产在线| 91影院在线免费观看| 国产成人在线影院| 精品无码三级在线观看视频| 日日嗨av一区二区三区四区| 日韩理论片一区二区| 久久久九九九九| 国产亚洲一本大道中文在线| 制服丝袜中文字幕一区| 欧美日韩在线三区| 在线精品视频免费观看| 欧美影视一区二区三区| 日本久久电影网| 日本精品一级二级| 在线免费观看成人短视频| 色婷婷亚洲综合| 欧美日韩日日摸| 精品国产三级电影在线观看| 日韩一级片在线观看| 欧美成人r级一区二区三区| 欧美va亚洲va香蕉在线| 国产精品毛片大码女人| 中文字幕在线观看不卡视频| 亚洲精品日产精品乱码不卡| 亚洲一区二区精品久久av| 日韩高清在线一区| 国产美女视频一区| 91麻豆精品一区二区三区| 欧美日本在线播放| 欧美videofree性高清杂交| 亚洲欧美日韩在线播放| 男女男精品视频网| 99这里只有精品| 欧美一级午夜免费电影| 欧美激情在线一区二区三区| 亚洲欧美日韩综合aⅴ视频| 免费观看日韩电影| 一本色道亚洲精品aⅴ| 欧美成人性福生活免费看| 亚洲久本草在线中文字幕| 奇米影视一区二区三区小说| 97久久精品人人做人人爽| 日韩一区二区中文字幕| 亚洲成人黄色小说| 99精品欧美一区二区三区小说 | 国产精品亚洲а∨天堂免在线| 91天堂素人约啪| 久久女同互慰一区二区三区| 午夜精品一区在线观看| 91色porny在线视频| 欧美国产精品中文字幕| 日本成人中文字幕| 欧美日韩免费在线视频| 亚洲精品美国一| 99re66热这里只有精品3直播| 久久久久高清精品| 狠狠色丁香婷婷综合久久片| 欧美一区二区三区公司| 亚洲成人激情av| 91精品国产色综合久久不卡蜜臀 | 成人av高清在线| 综合av第一页| 91在线精品一区二区三区| 亚洲视频免费观看| 欧洲在线/亚洲| 亚洲国产你懂的| ww亚洲ww在线观看国产| 国产一区二区三区久久久 | 色老汉av一区二区三区| 亚洲欧美电影一区二区| 欧美日韩精品一区二区三区四区| 五月婷婷激情综合| 日韩欧美在线1卡| 成人午夜视频在线| 亚洲乱码精品一二三四区日韩在线| 色综合色狠狠综合色| 肉色丝袜一区二区| 2022国产精品视频| 欧美丝袜丝交足nylons| 男人的天堂久久精品| 国产精品成人免费精品自在线观看 | 一本到一区二区三区| 久久成人久久爱| 亚洲美女偷拍久久| 国产三级精品在线| 这里是久久伊人| 欧美在线一区二区| 福利电影一区二区| 免费观看成人鲁鲁鲁鲁鲁视频| 亚洲少妇中出一区| 18欧美亚洲精品| 欧美国产日韩亚洲一区| 日韩精品一区二区三区视频播放| 在线观看成人免费视频| av电影在线观看不卡 | 日韩欧美电影一二三| 在线观看日韩电影| 91色婷婷久久久久合中文| 99久久国产综合精品女不卡| 成人久久18免费网站麻豆 | 欧美日韩1区2区| 欧美美女bb生活片| 欧美高清hd18日本| 91精品国产色综合久久不卡电影| 在线观看av一区二区| 制服.丝袜.亚洲.中文.综合| 欧美日韩国产系列| 91精品国产综合久久久久久久 | 精品一区二区在线观看| 国产91丝袜在线播放九色| 风间由美性色一区二区三区| 国产在线国偷精品免费看| 国产成人啪午夜精品网站男同| 国产美女主播视频一区| 91一区二区在线| 欧美日韩一区二区三区视频| 欧美一区二区视频在线观看2020| 欧美电视剧免费观看| 国产精品妹子av| 秋霞影院一区二区| 99国产精品久久久久久久久久久 | 麻豆专区一区二区三区四区五区| 国产成人免费网站| 欧美肥妇free| 国产精品丝袜久久久久久app| 亚洲综合色婷婷| 狠狠色2019综合网| 欧美精品日日鲁夜夜添| 中文在线一区二区| 青青草视频一区| 91蜜桃传媒精品久久久一区二区| 宅男噜噜噜66一区二区66| 国产精品色哟哟| 精品一区二区三区在线观看国产| 欧美中文字幕一区二区三区亚洲|