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

📄 controlcmdtab.cpp

📁 国半usbn9604芯片开发办的源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			field.Format(_T("bLength....%d"),configDesc->bLength);
			m_requestTree.InsertItem(field,hDesc);
			field.Format(_T("bDescriptorType....%d"),configDesc->bDescriptorType);
			m_requestTree.InsertItem(field,hDesc);
			field.Format(_T("wTotalLength....%d"),configDesc->wTotalLength);
			m_requestTree.InsertItem(field,hDesc);
			field.Format(_T("bNumInterfaces....%d"),configDesc->bNumInterfaces);
			m_requestTree.InsertItem(field,hDesc);
			field.Format(_T("bConfigurationValue....%d"),configDesc->bConfigurationValue);
			m_requestTree.InsertItem(field,hDesc);
			field.Format(_T("iConfiguration....%d"),configDesc->iConfiguration);
			m_requestTree.InsertItem(field,hDesc);
			field.Format(_T("bmAttributes....%d"),configDesc->bmAttributes);
			m_requestTree.InsertItem(field,hDesc);
			field.Format(_T("MaxPower....%d"),configDesc->MaxPower);
			m_requestTree.InsertItem(field,hDesc);
			HTREEITEM hInter;
				/* Print Interface Descriptor */
			while (dataLength)
			{
				USB_interface_desc_t* interDesc = (USB_interface_desc_t *)buffer;
				field.Format(_T("Interface descriptor - %d Alt. setting - %d"),interDesc->bInterfaceNumber,interDesc->bAlternateSetting);
				hInter = m_requestTree.InsertItem(field,hDesc);
				if (dataLength < SIZEOF_USB_INT_DESC)
				{
					m_requestTree.InsertItem("Data length less then size of Interface. Descriptor",hInter);
					break;
				}
				buffer += interDesc->bLength;
				dataLength -=  interDesc->bLength;
				field.Format(_T("bLength....%d"),interDesc->bLength);
				m_requestTree.InsertItem(field,hInter);
				field.Format(_T("bDescriptorType....%d"),interDesc->bDescriptorType);
				m_requestTree.InsertItem(field,hInter);
				field.Format(_T("bInterfaceNumber....%d"),interDesc->bInterfaceNumber);
				m_requestTree.InsertItem(field,hInter);
				field.Format(_T("bAlternateSetting....%d"),interDesc->bAlternateSetting);
				m_requestTree.InsertItem(field,hInter);
				field.Format(_T("bNumEndpoints....%d"),interDesc->bNumEndpoints);
				m_requestTree.InsertItem(field,hInter);
				field.Format(_T("bInterfaceClass....%d"),interDesc->bInterfaceClass);
				m_requestTree.InsertItem(field,hInter);
				field.Format(_T("bInterfaceProtocol....%d"),interDesc->bInterfaceProtocol);
				m_requestTree.InsertItem(field,hInter);
				field.Format(_T("iInterface....%d"),interDesc->iInterface);
				m_requestTree.InsertItem(field,hInter);
				HTREEITEM hEnd;
				int j;
				for (j = 0; j < interDesc->bNumEndpoints; j++)
				{
					field.Format(_T("Endpoint descriptor - %d "),j+1);
					hEnd = m_requestTree.InsertItem(field,hInter);
					if (dataLength < SIZEOF_USB_END_DESC)
					{
						m_requestTree.InsertItem("Data length less then size of Endpoint Descriptor",hEnd);
						break;
					}
					USB_endpoint_desc_t* endDesc = (USB_endpoint_desc_t*)buffer;
					buffer += endDesc->bLength;
					dataLength -=endDesc->bLength;
					field.Format(_T("bLength....%d"),endDesc->bLength);
					m_requestTree.InsertItem(field,hEnd);
					field.Format(_T("bDescriptorType....%d"),endDesc->bDescriptorType);
					m_requestTree.InsertItem(field,hEnd);
					HTREEITEM hAddr = m_requestTree.InsertItem("bEndpoinAddress",hEnd);
					field.Format(_T("address....%d"),endDesc->bEndpointAddress.address);
					m_requestTree.InsertItem(field,hAddr);
					field.Format(_T("direction....%d"),endDesc->bEndpointAddress.direction);
					m_requestTree.InsertItem(field,hAddr);
					field.Format(_T("bmAttributes....%d"),endDesc->bmAttributes);
					m_requestTree.InsertItem(field,hEnd);
					field.Format(_T("wMaxPacketSize....%d"),endDesc->wMaxPacketSize);
					m_requestTree.InsertItem(field,hEnd);
					field.Format(_T("bInterval....%d"),endDesc->bInterval);
					m_requestTree.InsertItem(field,hEnd);
				}
			}
			}
			break;
		case STRING:
			{
				/* print String Descriptor */
			hDesc = m_requestTree.InsertItem("String Descriptor",TVI_ROOT);
			if (dataLength < sizeof(USB_string_desc_t))
			{
				m_requestTree.InsertItem("Data length less then size of String Descriptor",hDesc);
				break;
			}
			USB_string_desc_t* stringDesc = (USB_string_desc_t *)buffer;
			field.Format(_T("bLength....%d"),stringDesc->bLength);
			m_requestTree.InsertItem(field,hDesc);
			field.Format(_T("bDescriptorType....%d"),stringDesc->bDescriptorType);
			m_requestTree.InsertItem(field,hDesc);
			if ((curwValue &0xff) == 0)
			{
				/* language ID */
			field.Format(_T("LANGID....0x%x"),*((WORD *)(buffer+2)));
			m_requestTree.InsertItem(field,hDesc);
			}
			else
			{
				field.Format(_T("bString"));
				HTREEITEM hString = m_requestTree.InsertItem(field,hDesc);
				if (dataLength < stringDesc->bLength)
				{
					m_requestTree.InsertItem("Data length less then size of current string",hString);
					break;
				}
				m_requestTree.InsertItem(BuildString(buffer+2,stringDesc->bLength-2),hString);
				}
			}
			break;
		}
		break;
	case GET_CONFIGURATION:
		hDesc = m_requestTree.InsertItem("Current configuration",TVI_ROOT);
		field.Format(_T("%d"),*buffer);
		m_requestTree.InsertItem(field,hDesc);
		break;
	case GET_INTERFACE:
		hDesc = m_requestTree.InsertItem("Selected  alternate setting",TVI_ROOT);
		field.Format(_T("%d"),*buffer);
		m_requestTree.InsertItem(field,hDesc);
		break;


	}
}

CString controlCmdTab::BuildString(BYTE* buffer, BYTE stringSize)
{
	CString string;
	int i;

	for (i = 0; i < stringSize/2; i++)
		string+=buffer[i*2];

	return string;

}
void controlCmdTab::BuildReqList()
{
	int i;

	for (i = 0; i < REQUEST_NUM; i++)
		m_requestCombo.AddString(ReqString[i]);
}




void controlCmdTab::OnSelendokDescIndexCombo() 
{
	int descIndex = m_descIndexCombo.GetCurSel();

	curwValue &= 0xff00;
	curwValue |= descIndex;
	
	switch(descIndex)
	{
	case 0:
		/* LANGID*/
		m_indexCombo.EnableWindow(FALSE);
		m_indexCombo.ResetContent();
		m_indexCombo.AddString("0");
		m_indexCombo.SetCurSel(0);
		curwIndex = 0;
		m_lengthCombo.EnableWindow(FALSE);
		m_lengthCombo.ResetContent();
		m_lengthCombo.AddString("4");
		m_lengthCombo.SetCurSel(0);
		curwLength = 4;
		break;
	default:
		m_indexCombo.EnableWindow(FALSE);
		m_indexCombo.ResetContent();
		m_indexCombo.AddString("ENGLISH_US");
		m_indexCombo.SetCurSel(0);
		curwIndex = 0x0409;
		m_lengthCombo.EnableWindow(FALSE);
		m_lengthCombo.ResetContent();
		m_lengthCombo.AddString("255");
		m_lengthCombo.SetCurSel(0);
		curwLength = 255;
		break;
	}
	m_goButton.EnableWindow(TRUE);
}

void controlCmdTab::OnSelendokDescTypeCombo() 
{
	int i;
	CString descIndex;
	DescriptorType desc = (DescriptorType)(m_descTypeCombo.GetCurSel() + 1);
	curwValue = 0;
	curwValue |= (desc<<8);
	switch (desc)
	{
	case DEVICE:
	case CONFIGURATION:
		m_descIndexCombo.ResetContent();
		m_descIndexCombo.EnableWindow(FALSE);
		m_descIndexCombo.AddString("0");
		m_descIndexCombo.SetCurSel(0);
		m_indexCombo.EnableWindow(FALSE);
		m_indexCombo.ResetContent();
		m_indexCombo.AddString("0");
		m_indexCombo.SetCurSel(0);
		curwIndex = 0;
		m_lengthCombo.EnableWindow(FALSE);
		m_lengthCombo.ResetContent();
		m_lengthCombo.AddString("255");
		curwLength = 255;
		m_lengthCombo.SetCurSel(0);
		m_goButton.EnableWindow(TRUE);
		break;
	case STRING:
		m_goButton.EnableWindow(FALSE);
		m_indexCombo.EnableWindow(FALSE);
		m_indexCombo.ResetContent();
		m_lengthCombo.EnableWindow(FALSE);
		m_lengthCombo.ResetContent();
		m_descIndexCombo.ResetContent();
		m_descIndexCombo.EnableWindow(TRUE);

		for (i = 0; i < STRING_INDEX; i++)
		{
			descIndex.Format(_T("%d"),i);
			m_descIndexCombo.AddString(descIndex);
		}
		break;
	default:
		break;
	}
	
}

void controlCmdTab::OnSelendokIndexCombo() 
{
	// TODO: Add your control notification handler code here
	
}

void controlCmdTab::OnSelendokLengthCombo() 
{
	// TODO: Add your control notification handler code here
	
}

void controlCmdTab::OnSelendokValueCombo() 
{
	// TODO: Add your control notification handler code here
	
}

⌨️ 快捷键说明

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