📄 controlcmdtab.cpp
字号:
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 + -