📄 mirroring.cpp
字号:
// Mirroring.cpp : implementation file
//
#include "stdafx.h"
#include "DgbTool.h"
#include "Mirroring.h"
#include "ks95mspi.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
#include "ks95mspi.h"
/////////////////////////////////////////////////////////////////////////////
// CMirroring property page
IMPLEMENT_DYNCREATE(CMirroring, CPropertyPage)
CMirroring::CMirroring() : CPropertyPage(CMirroring::IDD)
{
int i;
BYTE bData;
CDgbToolApp *pApp;
pApp = (CDgbToolApp *)AfxGetApp();
// Block background MIB read
pApp->m_bHWSemaphore = NOMIBREAD;
//
// Read enable bits
//
for ( i = 0; i < PORTCOUNT; i++)
{
bData = pApp->ReadData ( MIRRORPORT1 + PORTCTLREGOFFSET * i );
m_Mirror[i] = ( bData & MIRRORPORT) ? 1:0;
m_TxMirrored [ i ] = ( bData & TXMIRROREDPORT ) ? 1:0;
m_RxMirrored [ i ] = ( bData & RXMIRROREDPORT ) ? 1:0;
}
m_EnableBadFrames = pApp->ReadData ( GLOBALCTL1 ) & INCLUDEBADFRAMES ? 1:0;
m_MatchTxANDRxPorts = pApp->ReadData ( GLOBALCTL3 ) & MIRRORMODESELECT ? 1:0;
// Release background MIB read
pApp->m_bHWSemaphore = ~NOMIBREAD;
}
CMirroring::~CMirroring()
{
}
void CMirroring::DoDataExchange(CDataExchange* pDX)
{
int i;
CPropertyPage::DoDataExchange(pDX);
for ( i = 0; i < PORTCOUNT; i++ )
{
DDX_Check(pDX, IDC_CHECK82 + i, m_Mirror[ i ]);
DDX_Check(pDX, IDC_CHECK87 + i, m_TxMirrored[ i ]);
DDX_Check(pDX, IDC_CHECK92 + i, m_RxMirrored[ i ]);
}
DDX_Check(pDX, IDC_CHECK97, m_EnableBadFrames);
DDX_Check(pDX, IDC_CHECK98, m_MatchTxANDRxPorts);
}
BEGIN_MESSAGE_MAP(CMirroring, CPropertyPage)
ON_BN_CLICKED(IDC_CHECK82, OnUpdate)
ON_BN_CLICKED(IDC_CHECK83, OnUpdate)
ON_BN_CLICKED(IDC_CHECK84, OnUpdate)
ON_BN_CLICKED(IDC_CHECK85, OnUpdate)
ON_BN_CLICKED(IDC_CHECK86, OnUpdate)
ON_BN_CLICKED(IDC_CHECK87, OnUpdate)
ON_BN_CLICKED(IDC_CHECK88, OnUpdate)
ON_BN_CLICKED(IDC_CHECK89, OnUpdate)
ON_BN_CLICKED(IDC_CHECK90, OnUpdate)
ON_BN_CLICKED(IDC_CHECK91, OnUpdate)
ON_BN_CLICKED(IDC_CHECK92, OnUpdate)
ON_BN_CLICKED(IDC_CHECK93, OnUpdate)
ON_BN_CLICKED(IDC_CHECK94, OnUpdate)
ON_BN_CLICKED(IDC_CHECK95, OnUpdate)
ON_BN_CLICKED(IDC_CHECK96, OnUpdate)
ON_BN_CLICKED(IDC_CHECK97, OnUpdate)
ON_BN_CLICKED(IDC_CHECK98, OnUpdate)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMirroring message handlers
BOOL CMirroring::OnSetActive()
{
UpdateData(FALSE);
return CPropertyPage::OnSetActive();
}
BOOL CMirroring::OnApply()
{
WORD i;
BYTE bData;
CDgbToolApp *pApp;
pApp = (CDgbToolApp *)AfxGetApp();
// Block background MIB read
pApp->m_bHWSemaphore = NOMIBREAD;
UpdateData(TRUE);
for ( i = 0; i < PORTCOUNT; i++ )
{
bData = pApp->ReadData ( MIRRORPORT1 + PORTCTLREGOFFSET * i );
bData &= ~(MIRRORPORT | RXMIRROREDPORT | TXMIRROREDPORT);
if ( m_Mirror [ i ] )
{
bData |= MIRRORPORT;
}
if ( m_TxMirrored [ i ] )
{
bData |= TXMIRROREDPORT;
}
if ( m_RxMirrored [ i ] )
{
bData |= RXMIRROREDPORT;
}
pApp->WriteData ( MIRRORPORT1 + PORTCTLREGOFFSET * i, bData );
}
bData = pApp->ReadData ( GLOBALCTL1 );
// Disable frame length checking if bad frame passing is enabled
bData &= ~(INCLUDEBADFRAMES | FRAMELENCHECKING);
if ( m_EnableBadFrames )
{
bData |= INCLUDEBADFRAMES;
}
pApp->WriteData ( GLOBALCTL1, bData );
bData = pApp->ReadData ( GLOBALCTL3 );
bData &= ~MIRRORMODESELECT;
if ( m_MatchTxANDRxPorts )
{
bData |= MIRRORMODESELECT;
}
pApp->WriteData ( GLOBALCTL3, bData );
// Release background MIB read
pApp->m_bHWSemaphore = ~NOMIBREAD;
return CPropertyPage::OnApply();
}
void CMirroring::OnUpdate()
{
SetModified(TRUE);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -