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