📄 pimisc.c
字号:
/*
* Copyright (c) 1996, 2003 VIA Networking Technologies, Inc.
* All rights reserved.
*
* This software is copyrighted by and is the sole property of
* VIA Networking Technologies, Inc. This software may only be used
* in accordance with the corresponding license agreement. Any unauthorized
* use, duplication, transmission, distribution, or disclosure of this
* software is expressly forbidden.
*
* This software is provided by VIA Networking Technologies, Inc. "as is"
* and any express or implied warranties, including, but not limited to, the
* implied warranties of merchantability and fitness for a particular purpose
* are disclaimed. In no event shall VIA Networking Technologies, Inc.
* be liable for any direct, indirect, incidental, special, exemplary, or
* consequential damages.
*
*
* File: pimisc.c
*
* Purpose: Misc module UI callback functions
*
* Author: Tevin Chen
*
* Date: Jan 08, 2002
*
* Functions:
*
* Revision History:
*
*/
#if !defined(__STR_H__)
#include "str.h"
#endif
#if !defined(__SOC_H__)
#include "soc.h"
#endif
#if !defined(__TIMER_H__)
#include "timer.h"
#endif
#if !defined(__UART_H__)
#include "uart.h"
#endif
#include "swmisc.h"
#include "pigencfg.h"
#include "pidef.h"
#include "allpages.h"
#include "pisystem.h"
#if !defined(_PIMISC_H)
#include "pimisc.h"
#endif
#if !defined(__SWRATE_H__)
#include "swrate.h"
#endif
#if !defined(__SWFWD_H__)
#include "swfwd.h"
#endif
#if !defined(__SWSMACTB_H__)
#include "swsmactb.h"
#endif
/*--------------------- Static Definitions ------------------------*/
/*--------------------- Static Types ------------------------------*/
/*--------------------- Static Macros -----------------------------*/
/*--------------------- Static Classes ----------------------------*/
/*--------------------- Static Variables --------------------------*/
static UINT8 sg_abyAutoLogoutTime[] = {
// the value is time-out value - 1,
0, (5 - 1), (10 - 1), (20 - 1)
};
/*--------------------- Static Functions --------------------------*/
/*--------------------- Export Variables --------------------------*/
UINT16 g_wAutoLogoutTime = 0;
volatile UINT16 g_u16AutoLogoutCntr = 0;
#ifdef __MODULE_WEB_SMART
UINT16 g_wWebAutoLogoutTime = 0;
volatile UINT16 g_wWebAutoLogoutCntr = 0;
char g_aszWebLoginID[8 + 3] = ""; // in the form of "/12345678/"
#endif
void TASKvLogoutTimer(void)
{
// if auto-logout is enabled
if (g_wAutoLogoutTime != 0)
g_u16AutoLogoutCntr++;
// check auto logout counter of console
if (g_u16AutoLogoutCntr > g_wAutoLogoutTime) {
g_u16AutoLogoutCntr = 0;
g_bSemaphoreTtyLogout = TRUE;
}
#ifdef __MODULE_WEB_SMART
if (g_wWebAutoLogoutTime != 0)
g_wWebAutoLogoutCntr++;
// check auto logout counter of web
if (g_wWebAutoLogoutCntr > g_wWebAutoLogoutTime) {
g_wWebAutoLogoutCntr = 0;
g_aszWebLoginID[0] = '\0';
}
#endif
}
void PIMISC_vHookAutoLogout (void)
{
g_u16AutoLogoutCntr = 0;
}
void s_vSetCfgToHW(SMiscPageCfg* pSPageCfg_Misc)
{
//UINT8 byAutoAge; //TOCHECK
UINT8 byLoginEn, u8ii;
SBsfCfg sBSFCfg;
sBSFCfg.bBSFEn = TRUE;
sBSFCfg.bFldUcstMcstEn = TRUE; //this packet classify to BSF
sBSFCfg.bCtrlPktEn = TRUE;
sBSFCfg.bIpMcstEn = TRUE;
sBSFCfg.bBcstEn = TRUE;
if (pSPageCfg_Misc->f3BSFMode == BSF_MODE_OFF){
sBSFCfg.bBSFEn = FALSE;
sBSFCfg.byRateSel = 3; //HW default value
}
else
sBSFCfg.byRateSel = pSPageCfg_Misc->f3BSFMode;
SWRATE_bSetBsfCfg(&sBSFCfg);
//per port BSF enable/disable setting
for (u8ii = 0 ; u8ii < SWITCH_PORT_NUM ; u8ii++)
SWRATE_vSetBSFEn(u8ii, sBSFCfg.bBSFEn);
SWFWD_vSetAutoAgingCfg(pSPageCfg_Misc->f2AutoAging);
/* //TOCHECK
if (pSPageCfg_Misc->f2AutoAging == AUTO_AGING_OFF) {
g_bSoftAgeoutActive = FALSE;
}
else {
SWREG_vReadU8(FWDCTL_AGE_CYC_TIME, &byAutoAge);
g_wAgeoutTimer = byAutoAge * 2;
g_bSoftAgeoutActive = TRUE;
}
*/
SWFWD_vSetMacTblHashMode(pSPageCfg_Misc->f1MacHashMode);
SWMISC_vSetCollRetryEn(pSPageCfg_Misc->f1CollisionForever);
PIEEP_vGetCfgFromEep(EEP_ADDR_ADM_CFG, 1, &byLoginEn);
if (byLoginEn == 0)
g_wAutoLogoutTime = 0;
else
g_wAutoLogoutTime = sg_abyAutoLogoutTime[pSPageCfg_Misc->f2AutoLogout];
// reset g_u16AutoLogoutCntr and g_wWebAutoLogoutCntr to avoid immediate logout
g_u16AutoLogoutCntr = 0;
#ifdef __MODULE_WEB_SMART
if (byLoginEn == 0)
g_wWebAutoLogoutTime = 0;
else
g_wWebAutoLogoutTime = sg_abyAutoLogoutTime[pSPageCfg_Misc->f2WebAutoLogout + 1];
g_wWebAutoLogoutCntr = 0;
#endif
if (SWITCH_SMACTBL_RESERVED_PAGE_NUM != 0)
SWSMACTB_bReservePage(SWITCH_SMACTBL_RESERVED_PAGE_NUM);
}
void PIMISC_vSetEepDefault(SMiscPageCfg* pSPageCfg_Misc, BOOL bWriteDefault)
{
STR_pvMemset(pSPageCfg_Misc, 0, sizeof(SMiscPageCfg));
pSPageCfg_Misc->f1CollisionForever = DEFAULT_RETRY_FOREVER;
pSPageCfg_Misc->f2AutoAging = DEFAULT_AUTO_AGING;
pSPageCfg_Misc->f1MacHashMode = DEFAULT_MAC_HASH_MODE;
pSPageCfg_Misc->f3BSFMode = DEFAULT_BSF_MODE;
pSPageCfg_Misc->f2AutoLogout = DEFAULT_AUTO_LOGOUT;
#ifdef __MODULE_WEB_SMART
pSPageCfg_Misc->f2WebAutoLogout = DEFAULT_WEB_AUTO_LOGOUT;
#endif
if (bWriteDefault) {
// Set value to nvram software cache
STR_pvMemcpy(g_pu8NVRSwCache + (EEP_ADDR_MISC_CFG - NVR_ADDR_DATA_AREA_START), (PUINT8)pSPageCfg_Misc, EEP_SIZE_MISC_CFG);
}
else {
PIEEP_vSetCfgIntoEep((PUINT8)pSPageCfg_Misc, EEP_ADDR_MISC_CFG, EEP_SIZE_MISC_CFG);
NVRAM_vUpdateChecksum(EEP_SIZE_DATA_AREA);
}
}
void PIMISC_vSetHwFromEep(SMiscPageCfg* pSPageCfg_Misc)
{
PIMISC_vInitPage(pSPageCfg_Misc);
s_vSetCfgToHW(pSPageCfg_Misc);
}
void PIMISC_vSavePage(SMiscPageCfg* pSPageCfg_Misc)
{
PIEEP_vSetCfgIntoEep((PUINT8)pSPageCfg_Misc, EEP_ADDR_MISC_CFG, EEP_SIZE_MISC_CFG);
NVRAM_vUpdateChecksum(EEP_SIZE_DATA_AREA);
s_vSetCfgToHW(pSPageCfg_Misc);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -