📄 ezmrfrm.cpp
字号:
////////////////////////////////////////////////////////////////////////////////
// EzMrFrm.cpp : implementation of the CEzMrFrame class
// $Header: /USB/Util/EzMr/EzMrFrm.cpp 8 3/07/02 11:18p Tpm $
// Copyright (c) 2000 Cypress Semiconductor. May not be reproduced without permission.
// See the EzUsb Developer's Kit license agreement for more details.
////////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "EzMr.h"
#include "main.h" // for PUSBD_INTERFACE_INFORMATION
#include "EzMrFrm.h" //TPMDo: Add ToolBar manually
#include "EzMrDoc.h"
#include "EzMrView.h" // for SendOp()
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#define MAX_CBOX_STRING 193 // 64 (2 nibble) hex values max
/////////////////////////////////////////////////////////////////////////////
// CEzMrFrame
PCHAR g_strIoctl[] =
{
"Get Device Desc",
"Get Config Desc",
"Get Pipe Info",
"Vendor Request",
"Bulk Byte Transfer",
"Anchor Download",
"Reset Pipe",
"Abort Pipe",
"ISO Transfer",
"Set Interface",
"8051 Reset Hold",
"8051 Reset Release",
"Get URB Status",
"Get Current Frame",
"Get String Desc",
"Reset Port"
};
IMPLEMENT_DYNCREATE(CEzMrFrame, CMDIChildWnd)
BEGIN_MESSAGE_MAP(CEzMrFrame, CMDIChildWnd)
//{{AFX_MSG_MAP(CEzMrFrame)
ON_WM_CREATE()
ON_WM_CLOSE()
//}}AFX_MSG_MAP
ON_COMMAND_EX(CG_ID_VIEW_USBDEV, OnBarCheck)
ON_UPDATE_COMMAND_UI(CG_ID_VIEW_USBDEV, OnUpdateControlBarMenu)
ON_COMMAND_EX(CG_ID_VIEW_DLGMAIN, OnBarCheck)
ON_UPDATE_COMMAND_UI(CG_ID_VIEW_DLGMAIN, OnUpdateControlBarMenu)
ON_COMMAND_EX(ID_VIEW_TBAR_VEN, OnBarCheck) //TPMDo: Add m_wndTBarVen manually
ON_UPDATE_COMMAND_UI(ID_VIEW_TBAR_VEN, OnUpdateControlBarMenu)
ON_COMMAND_EX(ID_VIEW_TBAR_ISO, OnBarCheck) //TPMDo: Add m_wndTBarIso manually
ON_UPDATE_COMMAND_UI(ID_VIEW_TBAR_ISO, OnUpdateControlBarMenu)
ON_COMMAND_EX(ID_VIEW_TBAR_DLD, OnBarCheck) //TPMDo: Add m_wndTBarDld manually
ON_UPDATE_COMMAND_UI(ID_VIEW_TBAR_DLD, OnUpdateControlBarMenu)
ON_COMMAND_EX(ID_VIEW_TBAR_BLK, OnBarCheck) //TPMDo: Add m_wndTBarBlk manually
ON_UPDATE_COMMAND_UI(ID_VIEW_TBAR_BLK, OnUpdateControlBarMenu)
ON_COMMAND_EX(ID_VIEW_TBAR_FIL, OnBarCheck) //TPMDo: Add m_wndTBarFil manually
ON_UPDATE_COMMAND_UI(ID_VIEW_TBAR_FIL, OnUpdateControlBarMenu)
ON_COMMAND_EX(ID_VIEW_TBAR_RES, OnBarCheck) //TPMDo: Add m_wndTBarRes manually
ON_UPDATE_COMMAND_UI(ID_VIEW_TBAR_RES, OnUpdateControlBarMenu)
ON_COMMAND_EX(ID_VIEW_TBAR_UNA, OnBarCheck) //TPMDo: Add m_wndTBarUna manually
ON_UPDATE_COMMAND_UI(ID_VIEW_TBAR_UNA, OnUpdateControlBarMenu)
ON_COMMAND_EX(ID_VIEW_TBAR_CFG, OnBarCheck) //TPMDo: Add m_wndTBarCfg manually
ON_UPDATE_COMMAND_UI(ID_VIEW_TBAR_CFG, OnUpdateControlBarMenu)
ON_CBN_SELCHANGE(IDC_SEL_OP, OnSelChangeOp)
ON_CBN_SELCHANGE(IDW_TBAR_DRV, OnSelChangeDev)
ON_CBN_SELCHANGE(IDL_BLK_TYPE, OnSelChangeBlk)
ON_CBN_EDITCHANGE(IDC_VENDOR_DATA, OnEditVenData)
ON_CBN_SELCHANGE(IDC_VENDOR_DATA, OnEditVenData)
ON_CBN_SELCHANGE(IDC_DIRECTION, OnEditVenData)
ON_CBN_EDITCHANGE(IDC_DATA_VALUE, OnEditchangeData)
ON_CBN_SELCHANGE(IDC_DATA_VALUE, OnEditchangeData)
ON_CBN_SELCHANGE(IDC_BLK_PIPE, OnEditchangeData)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CEzMrFrame construction/destruction
CEzMrFrame::CEzMrFrame()
{
m_pTxt_idx = 0;
}
CEzMrFrame::~CEzMrFrame()
{
for(int idx=0; idx<m_pTxt_idx; idx++)
{
delete m_pTxt[idx];
}
}
BOOL CEzMrFrame::PreCreateWindow(CREATESTRUCT& cs)
{
return CMDIChildWnd::PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
// CEzMrFrame diagnostics
#ifdef _DEBUG
void CEzMrFrame::AssertValid() const
{
CMDIChildWnd::AssertValid();
}
void CEzMrFrame::Dump(CDumpContext& dc) const
{
CMDIChildWnd::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CEzMrFrame message handlers
void CEzMrFrame::NewTBarText(CToolBar* pTB, int idx, UINT nID, int nPw, char* pLbl)
{
CRect rect;
CFont* pFont = m_wndTBarOps.GetFont(); // used hereafter
m_pTxt[m_pTxt_idx] = new CStatic();
pTB->SetButtonInfo(idx, nID, TBBS_SEPARATOR, nPw);
pTB->GetItemRect(idx, &rect);
rect.top += 4;
m_pTxt[m_pTxt_idx]->Create(pLbl, WS_CHILD | WS_VISIBLE, rect, pTB, nID);
m_pTxt[m_pTxt_idx]->SetFont(pFont, TRUE);
m_pTxt_idx++;
}
void CEzMrFrame::NewTBarEBox(CToolBar* pTB, int idx, UINT nID, int nPw, char* pLbl, CEdit* pEB)
{
CRect rect;
pTB->SetButtonInfo(idx, nID, TBBS_SEPARATOR, nPw);
pTB->GetItemRect(idx, &rect);
pEB->Create(WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER, rect, pTB, nID);
pEB->SetWindowText(pLbl);
}
int CEzMrFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
CRect rect;
if (CMDIChildWnd::OnCreate(lpCreateStruct) == -1)
return -1;
{ //TPMDo: Add Operations ToolBar manually; OnCreate function from WM_CREATE msg handler
if (!m_wndTBarOps.Create(this,
WS_CHILD | CBRS_TOP | WS_VISIBLE |
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC,
ID_VIEW_TBAR_OPS) ||
!m_wndTBarOps.LoadToolBar(IDR_TBAR_OPS))
{
TRACE0("Failed to create dialog bar m_wndTBarOps\n");
return -1; // fail to create
}
m_wndTBarOps.EnableDocking(CBRS_ALIGN_TOP | CBRS_ALIGN_BOTTOM);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndTBarOps);
m_wndTBarOps.SetButtonInfo(0, IDC_SEL_OP, TBBS_SEPARATOR, 184); // bogart a space
m_wndTBarOps.GetItemRect(0, &rect);
rect.top = 0;
rect.bottom = rect.top + 250;
if (!m_CBoxOps.Create(
CBS_DROPDOWNLIST|WS_VISIBLE|WS_TABSTOP|WS_VSCROLL|WS_CHILD,
rect, &m_wndTBarOps, IDC_SEL_OP))
{
TRACE0("Failed to create combo-box\n");
return FALSE;
}
for(int idx=0; idx<MAX_OP_NUMBER; idx++)
{
m_CBoxOps.AddString(g_strIoctl[idx]);
}
m_CBoxOps.SetCurSel(2);
NewTBarText(&m_wndTBarOps, 4, IDC_BDRIVER_NAME, 40, "Device");
m_wndTBarOps.SetButtonInfo(5, IDW_TBAR_DRV, TBBS_SEPARATOR, 90); // bogart
m_wndTBarOps.GetItemRect(5, &rect);
rect.top = 0;
rect.bottom = rect.top + 100;
if (!m_CBoxDrv.Create(
CBS_DROPDOWNLIST|WS_VISIBLE|WS_TABSTOP|WS_VSCROLL|WS_CHILD,
rect, &m_wndTBarOps, IDW_TBAR_DRV))
{
TRACE0("Failed to create combo-box\n");
return FALSE;
}
UpdDrvCBox();
m_CBoxDrv.SetCurSel(0);
m_SelDrv = 0;
}
{ //TPMDo: Add m_wndTBarUna manually; Add ID_VIEW_TBAR_UNA menu toggle option
if (!m_wndTBarUna.Create(this,
WS_CHILD | CBRS_TOP | WS_VISIBLE |
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC,
ID_VIEW_TBAR_UNA) ||
!m_wndTBarUna.LoadToolBar(IDR_TBAR_UNA))
{
TRACE0("Failed to create dialog bar m_wndTBarUna\n");
return -1; // fail to create
}
m_wndTBarUna.EnableDocking(CBRS_ALIGN_TOP | CBRS_ALIGN_BOTTOM);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndTBarUna);
m_wndTBarUna.SetWindowText("Unary Operations");
}
{ //TPMDo: Add m_wndTBarVen manually; Add ID_VIEW_TBAR_VEN menu toggle option
if (!m_wndTBarVen.Create(this,
WS_CHILD | CBRS_TOP | WS_VISIBLE |
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC,
ID_VIEW_TBAR_VEN) ||
!m_wndTBarVen.LoadToolBar(IDR_TBAR_VEN))
{
TRACE0("Failed to create dialog bar m_wndTBarVen\n");
return -1; // fail to create
}
m_wndTBarVen.EnableDocking(CBRS_ALIGN_TOP | CBRS_ALIGN_BOTTOM);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndTBarVen);
NewTBarText(&m_wndTBarVen, 2, ID_BREQ, 30, "Req");
NewTBarEBox(&m_wndTBarVen, 3, IDC_BREQUEST, 50, "0xA2", &m_EBoxReq);
NewTBarText(&m_wndTBarVen, 5, ID_BVAL, 30, "Value");
NewTBarEBox(&m_wndTBarVen, 6, IDC_WVALUE, 70, "0x0000", &m_EBoxVal);
NewTBarText(&m_wndTBarVen, 8, ID_BIND, 30, "Index");
NewTBarEBox(&m_wndTBarVen, 9, IDC_WINDEX, 70, "0xBEEF", &m_EBoxInd);
NewTBarText(&m_wndTBarVen, 11, ID_BLEN, 37, "Length");
NewTBarEBox(&m_wndTBarVen, 12, IDC_WLENGTH, 50, "16", &m_EBoxLen);
NewTBarText(&m_wndTBarVen, 14, ID_BDIR, 18, "Dir");
m_wndTBarVen.SetButtonInfo(15, IDC_DIRECTION, TBBS_SEPARATOR, 64); // bogart
m_wndTBarVen.GetItemRect(15, &rect);
rect.top = 0;
rect.bottom = rect.top + 200;
if (!m_CBoxVenDir.Create(
CBS_DROPDOWNLIST|WS_VISIBLE|WS_TABSTOP|CBS_AUTOHSCROLL|WS_CHILD,
rect, &m_wndTBarVen, IDC_DIRECTION))
{
TRACE0("Failed to create combo-box\n");
return FALSE;
}
m_CBoxVenDir.AddString("1 IN");
m_CBoxVenDir.AddString("0 OUT");
m_CBoxVenDir.SetCurSel(0);
// NewTBarText(&m_wndTBarVen, 17, ID_BDAT, 55, "Hex Bytes");
NewTBarText(&m_wndTBarVen, 17, ID_BDAT, 54, "Hex Bytes");
m_wndTBarVen.SetButtonInfo(18, IDC_VENDOR_DATA, TBBS_SEPARATOR, 160); // bogart
m_wndTBarVen.GetItemRect(18, &rect);
rect.top = 0;
rect.bottom = rect.top + 200;
if (!m_CBoxVenData.Create(
CBS_DROPDOWN|WS_VISIBLE|WS_TABSTOP|CBS_AUTOHSCROLL|WS_CHILD,
rect, &m_wndTBarVen, IDC_VENDOR_DATA))
{
TRACE0("Failed to create combo-box\n");
return FALSE;
}
m_CBoxVenData.AddString(IDS_USB_EE_DEV);
m_CBoxVenData.AddString(IDS_USB_EE_EZLINK);
m_CBoxVenData.AddString(IDS_USB_EE_EXAMPLE);
m_CBoxVenData.SetCurSel(0);
} //TPMDo: Add m_wndTBarVen manually; Add IDC_BREQUEST ID and string
{ //TPMDo: Add m_wndTBarIso manually; Add ID_VIEW_TBAR_ISO menu toggle option
if (!m_wndTBarIso.Create(this,
WS_CHILD | CBRS_TOP | WS_VISIBLE |
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC,
ID_VIEW_TBAR_ISO) ||
!m_wndTBarIso.LoadToolBar(IDR_TBAR_ISO))
{
TRACE0("Failed to create dialog bar m_wndTBarIso\n");
return -1; // fail to create
}
m_wndTBarIso.EnableDocking(CBRS_ALIGN_TOP | CBRS_ALIGN_BOTTOM);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndTBarIso);
NewTBarText(&m_wndTBarIso, 2, ID_BPIPE, 30, "Pipe");
m_wndTBarIso.SetButtonInfo(3, IDC_ISO_PIPE, TBBS_SEPARATOR, 160); // bogart
m_wndTBarIso.GetItemRect(3, &rect);
rect.top = 0;
rect.bottom = rect.top + 200;
if (!m_CBoxIsoPipe.Create(
CBS_DROPDOWNLIST|WS_VISIBLE|WS_TABSTOP|WS_VSCROLL|WS_CHILD,
rect, &m_wndTBarIso, IDC_ISO_PIPE))
{
TRACE0("Failed to create combo-box\n");
return FALSE;
}
NewTBarText(&m_wndTBarIso, 5, ID_BPACKETS, 45, "Packets");
NewTBarEBox(&m_wndTBarIso, 6, IDC_ISO_PACKETS, 50, "128", &m_EBoxPack);
NewTBarText(&m_wndTBarIso, 8, ID_BSIZE, 30, "Size");
NewTBarEBox(&m_wndTBarIso, 9, IDC_ISO_SIZE, 50, "16", &m_EBoxSize);
NewTBarText(&m_wndTBarIso, 11, ID_BISO_BUF_CNT, 40, "Buffers");
NewTBarEBox(&m_wndTBarIso, 12, IDC_ISO_BUF_CNT, 50, "2", &m_EBoxIsoBufCnt);
NewTBarText(&m_wndTBarIso, 14, ID_BPAK_PER, 80, "Frames / Buffer");
NewTBarEBox(&m_wndTBarIso, 15, IDC_PAK_PER, 50, "8", &m_EBoxIsoPakPer);
}
{ //TPMDo: Add m_wndTBarBlk manually; Add ID_VIEW_TBAR_BLK menu toggle option
if (!m_wndTBarBlk.Create(this,
WS_CHILD | CBRS_TOP | WS_VISIBLE |
CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC,
ID_VIEW_TBAR_BLK) ||
!m_wndTBarBlk.LoadToolBar(IDR_TBAR_BLK))
{
TRACE0("Failed to create dialog bar m_wndTBarBlk\n");
return -1; // fail to create
}
m_wndTBarBlk.EnableDocking(CBRS_ALIGN_TOP | CBRS_ALIGN_BOTTOM);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndTBarBlk);
NewTBarText(&m_wndTBarBlk, 2, IDC_BBLK_PIPE, 30, "Pipe");
m_wndTBarBlk.SetButtonInfo(3, IDC_BLK_PIPE, TBBS_SEPARATOR, 160); // bogart
m_wndTBarBlk.GetItemRect(3, &rect);
rect.top = 0;
rect.bottom = rect.top + 200;
if (!m_CBoxBlkPipe.Create(
CBS_DROPDOWNLIST|WS_VISIBLE|WS_TABSTOP|WS_VSCROLL|WS_CHILD,
rect, &m_wndTBarBlk, IDC_BLK_PIPE))
{
TRACE0("Failed to create combo-box\n");
return FALSE;
}
NewTBarText(&m_wndTBarBlk, 5, IDC_BEDIT_WRITE_DATA_LENGTH, 45, "Length");
NewTBarEBox(&m_wndTBarBlk, 6, IDC_DATA_LENGTH, 50, "64", &m_EBoxBlkLen);
NewTBarText(&m_wndTBarBlk, 8, IDC_BDATA_VALUE, 55, "Hex Bytes");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -