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

📄 pimisc.c

📁 vt6528芯片交换机API函数和文档运行程序
💻 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 + -