⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usbh_sampletask.c

📁 epson usb2.0 控制芯片 S1R72V05 固件程序。
💻 C
📖 第 1 页 / 共 5 页
字号:
		testDevicePara[testCBRParam.param1].deviceStatus = DEVICE_DISCONNECT;
		testDevicePara[testCBRParam.param1].devAdr = 0;
		testDevicePara[testCBRParam.param1].subClass = 0;
		for(i=0;i<18;i++) {
			testDevicePara[testCBRParam.param1].reqSenseData[i] = 0;
		}
		testDevicePara[testCBRParam.param1].lun = 0;
		testDevicePara[testCBRParam.param1].commandStatus = 0;
		testDevicePara[testCBRParam.param1].commandMode = 0;
		testDevicePara[testCBRParam.param1].interface = 0;

	}
	DBG_FlowStrPrint(" ]", FLOW_LV);

	/* Display of param0 */
	DBG_FlowStrPrint("\r\n[param0乮DeviceAddress乯: ", FLOW_LV);
	DBG_FlowValPrint(PRINT_DECIMAL_MODE, DBG_STORE_DWORD, testDevicePara[testCBRParam.param1].devAdr, FLOW_LV);
	DBG_FlowStrPrint(" ]", FLOW_LV);

	if(testCBRParam.param0 == USBH_USBD_MSG_CONNECT_OK) {
		Test_PrintDescripterInfo(1);
	} else {
		/* Display of pParam */
		DBG_FlowStrPrint("\r\n[pParam : ", FLOW_LV);
		DBG_FlowValPrint(PRINT_DECIMAL_MODE, DBG_STORE_DWORD, (ULONG)testCBRParam.pParam, FLOW_LV);
		DBG_FlowStrPrint(" ]", FLOW_LV);
		if(testCBRParam.pParam != NULL) {
			DBG_FlowStrPrint("\r\n[乻Error乼pParam偺抣偑NULL偱偼偁傝傑偣傫]", FLOW_LV);
		}
	}
	return retValue;
}

/*=============================================================================
// Function_Name: Test_USBH_USBD_DeviceConAndDisCon
// description	: Check test for connection/disconnection after USBH_USBD_Init
// argument		: none
// return		: none
//=============================================================================
*/
void Test_USBH_USBD_DeviceConAndDisCon(void)
{
	LONG	result;

	DBG_FlowStrPrint("[Test_USBH_USBD_DeviceConAndDisCon() Test Start]\r\n", FLOW_LV);

	/* API Call */
	result = USBH_USBD_DeviceConAndDisCon();
	DBG_FlowStrPrint("\r\n[廔椆偟傑偟偨]\r\n", FLOW_LV);

	/* Display return value */
	DBG_FlowStrPrint("[栠傝抣偼亂", FLOW_LV);
	switch(result) {
		case USBH_USBD_STATUS_SUCCESS:
			DBG_FlowStrPrint("USBH_USBD_STATUS_SUCCESS", FLOW_LV);
			break;

		case USBH_USBD_STATUS_NO_DEVICE:
			DBG_FlowStrPrint("USBH_USBD_STATUS_NO_DEVICE", FLOW_LV);
			break;

		case USBH_USBD_STATUS_MEM_ERROR:
			DBG_FlowStrPrint("USBH_USBD_STATUS_MEM_ERROR", FLOW_LV);
			break;

		default:
			DBG_FlowValPrint( PRINT_HEXA_MODE, DBG_STORE_DWORD, result, FLOW_LV);
			DBG_FlowStrPrint(" 乻Error乼娫堘偭偨抣", FLOW_LV);
			break;
	}
	DBG_FlowStrPrint("亃偱偡]\r\n", FLOW_LV);

	DBG_FlowStrPrint("[Test_USBH_USBD_DeviceConAndDisCon() API Test End]\r\n", FLOW_LV);
	DBG_FlowStrPrint("壗偐僉乕傪墴偟偰壓偝偄", FLOW_LV);
	DBG_input_wait();

}

/*=============================================================================
// Function_Name: Test_USBH_USBD_Init
// description	: USBH_USBD_Init API test
// argument		: none
// return		: none
//=============================================================================
*/
void Test_USBH_USBD_Init(USBH_USBD_CALLBACK *callback, UCHAR dispsw)
{
	LONG	result;
	OS_FLGPTN	flgPtn;

	if(dispsw) {
		DBG_FlowStrPrint("[USBH_USBD_Init() API Test Start]\r\n", FLOW_LV);
		DBG_FlowStrPrint("[USBD偺弶婜壔傪奐巒偟傑偡]\r\n", FLOW_LV);
	}

	/* API Call */
	result = USBH_USBD_Init((USBH_USBD_CALLBACK) callback);
	if(result==USBH_USBD_STATUS_INVALID_PARAMETER) {
		DBG_FlowStrPrint("[API偺栠傝抣偼亂USBH_USBD_STATUS_INVALID_PARAMETER亃偱偡]\r\n", FLOW_LV);
		DBG_FlowStrPrint("壗偐僉乕傪墴偟偰壓偝偄", FLOW_LV);
		DBG_input_wait();
		return;
	}

	/* Wait until processing of USBHostStack Task ends */
	flgPtn = USBH_SampleWaitMessage();
	if(flgPtn == FLG_EVENT_USBH_SAMPLE_API_CALLBACK || flgPtn == FLG_EVENT_USBH_SAMPLE_URB_CALLBACK) {
		OS_ClrFlg(FLGID_USBH_SAMPLE, ~(flgPtn));
		// Call callback
	} else {
		DBG_FlowStrPrint("[抦傜側偄儊僢僙乕僕傪庴怣偟傑偟偨]\r\n", FLOW_LV);
		return;
	}

	if(dispsw) {
		DBG_FlowStrPrint("[USBD偺弶婜壔偑廔椆偟傑偟偨]\r\n", FLOW_LV);
	}

	if(dispsw) {
		/* Display return value */
		DBG_FlowStrPrint("[API偺栠傝抣偼亂", FLOW_LV);
		switch(result) {
			case USBH_USBD_STATUS_SUCCESS:
				DBG_FlowStrPrint("USBH_USBD_STATUS_SUCCESS", FLOW_LV);
				break;
			case USBH_USBD_STATUS_NO_DEVICE:
				DBG_FlowStrPrint("USBH_USBD_STATUS_NO_DEVICE", FLOW_LV);
				break;
			case USBH_USBD_STATUS_MEM_ERROR:
				DBG_FlowStrPrint("USBH_USBD_STATUS_MEM_ERROR", FLOW_LV);
				break;
			default:
				DBG_FlowValPrint( PRINT_DECIMAL_MODE, DBG_STORE_DWORD, result, FLOW_LV);
				DBG_FlowStrPrint(" 乻Error乼娫堘偭偨抣", FLOW_LV);
				break;
		}
		DBG_FlowStrPrint("亃偱偡]\r\n", FLOW_LV);
		DBG_FlowStrPrint("\r\n[USBH_USBD_Init() API偱搊榐偟偨僐乕儖僶僢僋娭悢偑屇傃弌偝傟傑偟偨]", FLOW_LV);
		/* Display argument */
		DBG_FlowStrPrint("\r\n[堷悢偼埲壓偺捠傝偱偡]", FLOW_LV);
		/* Dispaly message */
		DBG_FlowStrPrint("\r\n[message : ", FLOW_LV);
		if(testCBRParam.param0 == USBH_USBD_MSG_INIT_CMP) {
			DBG_FlowStrPrint("USBH_USBD_MSG_INIT_CMP", FLOW_LV);
		} else {
			DBG_FlowValPrint( PRINT_DECIMAL_MODE, DBG_STORE_DWORD, testCBRParam.param0, FLOW_LV);
			DBG_FlowStrPrint(" 乻Error乼娫堘偭偨儊僢僙乕僕抣", FLOW_LV);
		}
		DBG_FlowStrPrint(" ]", FLOW_LV);

		/* Display param1 */
		DBG_FlowStrPrint("\r\n[param1: ", FLOW_LV);
		DBG_FlowValPrint(PRINT_DECIMAL_MODE, DBG_STORE_DWORD, testCBRParam.param1, FLOW_LV);
		DBG_FlowStrPrint(" ]", FLOW_LV);
		if(testCBRParam.param1!= 0) {
			DBG_FlowStrPrint("\r\n[乻Error乼param1抣偑0偱偼偁傝傑偣傫]", FLOW_LV);
		}

		/* Display pParam */
		DBG_FlowStrPrint("\r\n[pParam : ", FLOW_LV);
		DBG_FlowValPrint(PRINT_DECIMAL_MODE, DBG_STORE_DWORD, (ULONG)testCBRParam.pParam, FLOW_LV);
		DBG_FlowStrPrint(" ]", FLOW_LV);
		if(testCBRParam.pParam != NULL) {
			DBG_FlowStrPrint("\r\n[乻Error乼pParam偺抣偑NULL偱偼偁傝傑偣傫]", FLOW_LV);
		}

		DBG_FlowStrPrint("\r\n[USBH_USBD_Init() API Test End]\r\n", FLOW_LV);

		DBG_FlowStrPrint("壗偐僉乕傪墴偟偰壓偝偄", FLOW_LV);
		DBG_input_wait();
	}
}

/*=============================================================================
// Function_Name: Test_USBH_USBD_Cleanup
// description	: USBH_USBD_Cleanup API Test
// argument		: none
// return		: none
//=============================================================================
*/
void Test_USBH_USBD_Cleanup( UCHAR dispsw )
{
	LONG	result;
	OS_FLGPTN	flgPtn;

	if(dispsw) {
		DBG_FlowStrPrint("[USBH_USBD_Cleanup() API Test Start]\r\n", FLOW_LV);
		DBG_FlowStrPrint("[HostStack傪掆巭偟傑偡]\r\n", FLOW_LV);
	}

	/* API Call */
	result = USBH_USBD_Cleanup();
	if(dispsw) {
		/* Display of return value */
		DBG_FlowStrPrint("[API偺栠傝抣偼亂", FLOW_LV);
		switch(result) {
			case USBH_USBD_STATUS_SUCCESS:
				DBG_FlowStrPrint("USBH_USBD_STATUS_SUCCESS", FLOW_LV);
				break;
			case USBH_USBD_STATUS_UNSUCCESSFUL:
				DBG_FlowStrPrint("USBH_USBD_STATUS_UNSUCCESSFUL", FLOW_LV);
				break;
			default:
				DBG_FlowValPrint( PRINT_DECIMAL_MODE, DBG_STORE_DWORD, result, FLOW_LV);
				DBG_FlowStrPrint(" 乻Error乼娫堘偭偨抣", FLOW_LV);
				break;
		}
		DBG_FlowStrPrint("亃偱偡]\r\n", FLOW_LV);

		DBG_FlowStrPrint("\r\n[USBH_USBD_Cleanup() API Test End]\r\n", FLOW_LV);

		DBG_FlowStrPrint("壗偐僉乕傪墴偟偰壓偝偄", FLOW_LV);
		DBG_input_wait();
	}
}

/*=============================================================================
// Function_Name: Test_USBH_USBD_SubmitCltURB
// description	: USBH_USBD_SubmitURB API test(for control transfer)
// argument		: none
// return		: none
//=============================================================================
*/
#define TEST_GET_STATUS				'1'			// USBH_USBD_SubmitURB API (GET_STATUS)
#define TEST_CLEAR_FEATURE			'2'			// USBH_USBD_SubmitURB API (CLEAR_FEATURE)
#define TEST_SET_FEATURE			'3'			// USBH_USBD_SubmitURB API (SET_FEATURE)
#define TEST_SET_ADDRESS			'4'			// USBH_USBD_SubmitURB API (SET_ADDRESS)
#define TEST_GET_DESCRIPTOR			'5'			// USBH_USBD_SubmitURB API (GET_DESCRIPTOR)
#define TEST_GET_CONFIGURATION		'6'			// USBH_USBD_SubmitURB API (GET_CONFIGURATION)
#define TEST_SET_CONFIGURATION		'7'			// USBH_USBD_SubmitURB API (SET_CONFIGURATION)
#define TEST_GET_INTERFACE			'8'			// USBH_USBD_SubmitURB API (GET_INTERFACE)
#define TEST_SET_INTERFACE			'9'			// USBH_USBD_SubmitURB API (SET_INTERFACE)
#define TEST_GET_STATUSHUB			'a'			// USBH_USBD_SubmitURB API (GET_STATUSHUB)
#define TEST_GET_STATUSPORT			'b'			// USBH_USBD_SubmitURB API (GET_STATUSPORT)
#define TEST_CLEAR_FEATUREHUB		'c'			// USBH_USBD_SubmitURB API (CLEAR_FEATUREHUB)
#define TEST_CLEAR_FEATUREPORT		'd'			// USBH_USBD_SubmitURB API (CLEAR_FEATUREPORT)
#define TEST_SET_FEATUREHUB			'e'			// USBH_USBD_SubmitURB API (SET_FEATUREHUB)
#define TEST_SET_FEATUREPORT		'f'			// USBH_USBD_SubmitURB API (SET_FEATUREPORT)
#define TEST_GET_DESCRIPTORC		'g'			// USBH_USBD_SubmitURB API (GET_DESCRIPTOR)
#define TEST_CLEAR_TT_BUFFER		'h'			// USBH_USBD_SubmitURB API (CLEAR_TT_BUFFER)
#define TEST_RESET_TT				'i'			// USBH_USBD_SubmitURB API (RESET_TT)
#define TEST_GET_TT_STATE			'j'			// USBH_USBD_SubmitURB API (GET_TT_STATE)
#define TEST_STOP_TT				'k'			// USBH_USBD_SubmitURB API (STOP_TT)
void Test_USBH_USBD_SubmitCtlURB(UCHAR classId)
{
	UCHAR	i;
	CHAR	inputData[80];
	USHORT	inputDataSize;

	// Variable initialization
	memset( inputData, 0x00, sizeof(inputData) );

	while(1) {
		DBG_FlowStrPrint("\r\n[    USBH_USBD_SubmitURB() API Test Menu(僐儞僩儘乕儖揮憲梡)            ]", FLOW_LV);
		DBG_FlowStrPrint("\r\n[    昡壙崁栚傪1乣?, q偺敿妏塸悢帤偱慖戰偟偰壓偝偄                      ]", FLOW_LV);
		DBG_FlowStrPrint("\r\n[1 : GET_STATUS                                                         ]", FLOW_LV);
		DBG_FlowStrPrint("\r\n[2 : CLEAR_FEATURE                                                      ]", FLOW_LV);
		DBG_FlowStrPrint("\r\n[3 : SET_FEATURE                                                        ]", FLOW_LV);
		DBG_FlowStrPrint("\r\n[4 : SET_ADDRESS                                                        ]", FLOW_LV);
		DBG_FlowStrPrint("\r\n[5 : GET_DESCRIPTOR                                                     ]", FLOW_LV);
		DBG_FlowStrPrint("\r\n[6 : GET_CONFIGURATION                                                  ]", FLOW_LV);
		DBG_FlowStrPrint("\r\n[7 : SET_CONFIGURATION                                                  ]", FLOW_LV);
		DBG_FlowStrPrint("\r\n[8 : GET_INTERFACE                                                      ]", FLOW_LV);
		DBG_FlowStrPrint("\r\n[9 : SET_INTERFACE                                                      ]", FLOW_LV);
		DBG_FlowStrPrint("\r\n[a : GET_STATUS(僴僽乯                                                  ]", FLOW_LV);
		DBG_FlowStrPrint("\r\n[b : GET_STATUS(億乕僩)                                                 ]", FLOW_LV);
		DBG_FlowStrPrint("\r\n[c : CLEAR_FEATURE(僴僽)                                                ]", FLOW_LV);
		DBG_FlowStrPrint("\r\n[d : CLEAR_FEATURE(億乕僩)                                              ]", FLOW_LV);
		DBG_FlowStrPrint("\r\n[e : SET_FEATURE(僴僽)                                                  ]", FLOW_LV);
		DBG_FlowStrPrint("\r\n[f : SET_FEATURE(億乕僩)                                                ]", FLOW_LV);
		DBG_FlowStrPrint("\r\n[g : GET_DESCRIPTORC                                                    ]", FLOW_LV);
		DBG_FlowStrPrint("\r\n[h : CLEAR_TT_BUFFER                                                    ]", FLOW_LV);
		DBG_FlowStrPrint("\r\n[i : RESET_TT                                                           ]", FLOW_LV);
		DBG_FlowStrPrint("\r\n[j : GET_TT_STATE                                                       ]", FLOW_LV);
		DBG_FlowStrPrint("\r\n[k : STOP_TT                                                            ]", FLOW_LV);
		DBG_FlowStrPrint("\r\n[q : End Test Menu                                                      ]", FLOW_LV);

		// Waiting key input & Get data of key input
		while(1) {
			DBG_FlowGetStr( inputData, &inputDataSize, 0 );
			if( inputDataSize == 1 &&
				((inputData[0] >= TEST_GET_STATUS  && inputData[0] <= TEST_STOP_TT)
				|| inputData[0] == QUIT_BIG || inputData[0] == QUIT_LITTLE) ) {
				break;
			} else {
				DBG_FlowStrPrint("\r\n[擖椡抣僄儔乕偱偡丅擖椡偟捈偟偰壓偝偄丅]", FLOW_LV);
			}
		}

		DBG_FlowStrPrint("\r\n[", FLOW_LV);
		DBG_FlowValPrint( PRINT_DECIMAL_MODE, DBG_STORE_DWORD, atob(inputData[0]), FLOW_LV);
		DBG_FlowStrPrint(" 偑慖戰偝傟傑偟偨丅]\r\n", FLOW_LV);

		for(i=0;i<MAX_USB_ADR + 1; i++) {
			if(testDevicePara[i].deviceStatus != DEVICE_CONNECT) {
				continue;
			}
			UsbDevInfo = testDevicePara[i].DevLH;

			/* USBH_USBD_SubmitURB control's transfer test */
			GetEndpointAddress(EP_ATTRIBUTES_BULK ,(USBH_USBD_DEVLIST_HEAD *)UsbDevInfo, &gin_epaddress, &gout_epaddress, NULL, NULL);


			// Evaluation item's judgment
			switch( inputData[0] ) {
				case TEST_GET_STATUS:
				case TEST_CLEAR_FEATURE:
				case TEST_SET_FEATURE:
				case TEST_SET_ADDRESS:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -