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

📄 mirroring.cpp

📁 ks8995m5口交换机启动eeprom配置源码
💻 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 + -