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

📄 vlan.cpp

📁 ks8995m5口交换机启动eeprom配置源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// Vlan.cpp : implementation file
//

#include "stdafx.h"
#include "DgbTool.h"
#include "Vlan.h"
#include "ks95mspi.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CVlan property page

IMPLEMENT_DYNCREATE(CVlan, CPropertyPage)

CVlan::CVlan() : CPropertyPage(CVlan::IDD)
{
    WORD i, j;
	WORD wTemp;

	union utag {
		BYTE data[3];	
		struct stag {
			unsigned VID2 : 8;
			unsigned VID1 : 4;
			unsigned Fid : 4;
			unsigned Membership: 5;
			unsigned Valid :1;
			unsigned filler : 2;
		} field;

	} vlantab;

	// TODO: Add your specialized code here and/or call the base class
	CDgbToolApp	*pApp;

	pApp = (CDgbToolApp *)AfxGetApp();

	// Block background MIB read
	pApp->m_bHWSemaphore = NOMIBREAD;

    for (i = 0; i < VLANCOUNT ; i++)
    {
	    GetVLANBytes ( (BYTE)i, &vlantab.data[0], &vlantab.data[1], &vlantab.data[2] );

        for ( j = 0; j < PORTCOUNT; j++ )
        {
            m_VLAN [ i * PORTCOUNT + j ] = (vlantab.field.Membership >> j) & 0x01 ;
        }
        
        m_sVLANID[ i ].Format("%d", (vlantab.field.VID1 << 8 ) | vlantab.field.VID2 );

		m_bActivate [ i ] = vlantab.field.Valid;
    }

    m_bEnableVLAN = (pApp->ReadData ( GLOBALCTL3 ) & 0x80) ? 1: 0;

	for (i=0; i < PORTCOUNT; i++)
	{
		wTemp = pApp->ReadData ( PORT1CTL0 + i * PORTCTLREGOFFSET );
		m_bTagInsertion [ i ] =  wTemp & PORTINSERTION ? 1: 0;
		m_bTagRemoval [ i ] =  wTemp & PORTREMOVAL ? 1: 0;

		wTemp = pApp->ReadData ( PORT1CTL2 + i * PORTCTLREGOFFSET );
		m_bEnableIngressFiltering [ i ] =  wTemp & ENABLEINGRESSFILTERING ? 1: 0;
		m_bDiscardNonPVIDPackets [ i ] =  wTemp & DISCARDNONPVIDPACKETS ? 1: 0;

        m_sDefaultVLANID[ i ].Format("%d", 
			((pApp->ReadData ( PORT1CTL3 + i * PORTCTLREGOFFSET ) & PORTVIDHI) << 8 ) | 
			(pApp->ReadData ( PORT1CTL4 + i * PORTCTLREGOFFSET )));
    }

	// Release background MIB read
	pApp->m_bHWSemaphore = ~NOMIBREAD;

}

CVlan::~CVlan()
{
}

void CVlan::DoDataExchange(CDataExchange* pDX)
{
    int i;

	CPropertyPage::DoDataExchange(pDX);

    for ( i = 0; i < PORTCOUNT; i++ )
    {
 	    DDX_Control(pDX, IDC_EDIT17 + i, m_cDefaultVLANID[ i ]);
	    DDX_Text(pDX, IDC_EDIT17 + i, m_sDefaultVLANID[ i ]);
	    DDV_MaxChars(pDX, m_sDefaultVLANID[ i ], 4);

		DDX_Check(pDX, IDC_CHECK113 + i, m_bTagInsertion [ i ]);
		DDX_Check(pDX, IDC_CHECK118 + i, m_bTagRemoval [ i ]);

		DDX_Check(pDX, IDC_CHECK123 + i, m_bEnableIngressFiltering [ i ]);
		DDX_Check(pDX, IDC_CHECK128 + i, m_bDiscardNonPVIDPackets [ i ]);

    }
	

    for ( i = 0; i < VLANCOUNT * PORTCOUNT; i++ )
 	    DDX_Check(pDX, IDC_CHECK1 + i, m_VLAN[i]);

    DDX_Check(pDX, IDC_CHECK81, m_bEnableVLAN);

    for ( i = 0; i < VLANCOUNT; i++ )
    {
		DDX_Control(pDX, IDC_EDIT1 + i, m_cVLANID[ i ]);
        DDX_Text(pDX, IDC_EDIT1 + i, m_sVLANID[ i ]);
	    DDV_MaxChars(pDX, m_sVLANID[ i ], 4);

		DDX_Check(pDX, IDC_CHECK82 + i, m_bActivate [ i ]);
    }

}


BEGIN_MESSAGE_MAP(CVlan, CPropertyPage)
	// VLAN IDs
    ON_EN_UPDATE(IDC_EDIT1, OnUpdate)
    ON_EN_UPDATE(IDC_EDIT2, OnUpdate)
    ON_EN_UPDATE(IDC_EDIT3, OnUpdate)
    ON_EN_UPDATE(IDC_EDIT4, OnUpdate)
    ON_EN_UPDATE(IDC_EDIT5, OnUpdate)
    ON_EN_UPDATE(IDC_EDIT6, OnUpdate)
    ON_EN_UPDATE(IDC_EDIT7, OnUpdate)
    ON_EN_UPDATE(IDC_EDIT8, OnUpdate)
    ON_EN_UPDATE(IDC_EDIT9, OnUpdate)
    ON_EN_UPDATE(IDC_EDIT10, OnUpdate)
    ON_EN_UPDATE(IDC_EDIT11, OnUpdate)
    ON_EN_UPDATE(IDC_EDIT12, OnUpdate)
    ON_EN_UPDATE(IDC_EDIT13, OnUpdate)
    ON_EN_UPDATE(IDC_EDIT14, OnUpdate)
    ON_EN_UPDATE(IDC_EDIT15, OnUpdate)
    ON_EN_UPDATE(IDC_EDIT16, OnUpdate)

	// Port member
    ON_BN_CLICKED(IDC_CHECK1, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK2, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK3, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK4, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK5, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK6, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK7, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK8, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK9, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK20, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK21, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK22, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK23, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK24, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK25, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK26, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK27, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK28, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK29, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK30, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK31, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK32, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK33, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK34, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK35, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK36, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK37, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK38, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK39, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK40, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK41, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK42, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK43, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK44, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK45, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK46, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK47, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK48, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK49, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK50, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK51, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK52, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK53, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK54, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK55, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK56, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK57, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK58, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK59, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK60, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK61, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK62, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK63, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK64, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK65, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK66, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK67, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK68, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK69, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK70, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK71, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK72, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK73, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK74, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK75, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK76, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK77, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK78, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK79, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK80, OnUpdate)

	// Enable 802.1Q
    ON_BN_CLICKED(IDC_CHECK81, OnUpdate)

	// Activate
    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_CHECK80, 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)

	// Tag insertion
    ON_BN_CLICKED(IDC_CHECK113, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK114, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK115, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK116, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK117, OnUpdate)

	// Tag removal
    ON_BN_CLICKED(IDC_CHECK118, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK119, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK120, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK121, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK122, OnUpdate)

	// Enable ingress filtering
	ON_BN_CLICKED(IDC_CHECK122, OnUpdate)
	ON_BN_CLICKED(IDC_CHECK123, OnUpdate)
	ON_BN_CLICKED(IDC_CHECK124, OnUpdate)
	ON_BN_CLICKED(IDC_CHECK125, OnUpdate)
	ON_BN_CLICKED(IDC_CHECK126, OnUpdate)
	ON_BN_CLICKED(IDC_CHECK127, OnUpdate)

    // Discard Non-PVID packets
    ON_BN_CLICKED(IDC_CHECK128, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK129, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK130, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK131, OnUpdate)
    ON_BN_CLICKED(IDC_CHECK132, OnUpdate)


    ON_EN_UPDATE(IDC_EDIT17, OnUpdate)
    ON_EN_UPDATE(IDC_EDIT18, OnUpdate)
    ON_EN_UPDATE(IDC_EDIT19, OnUpdate)
    ON_EN_UPDATE(IDC_EDIT20, OnUpdate)
    ON_EN_UPDATE(IDC_EDIT21, OnUpdate)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CVlan message handlers

BOOL CVlan::OnInitDialog() 
{
	int i;

	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here

    for (i = 0; i < VLANCOUNT ; i++)
    {
	    m_cVLANID[ i ].EnableWindow(TRUE);
    }

	for (i = 0; i < PORTCOUNT; i++)
	{
		m_cDefaultVLANID[ i ].EnableWindow(TRUE);
	}


	return TRUE;  // return TRUE unless you set the focus to a control

⌨️ 快捷键说明

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