📄 root.c
字号:
#include "sys_conf.h"
#include <prepc.h>
#include <psos.h>
#include <probe.h>
#include "constant.h"
#include "structure.h"
#include "command.h"
#include "tspack.h"
#include "nib.h"
unsigned long MemRng0;
unsigned long MemRng1;
unsigned long MemRng2;
unsigned long MemRng3;
unsigned long MemCount;
unsigned long SoftVer=2007041201;
unsigned char HardVer=0x11;
unsigned char SystemState;
System_Data SystemData;
System_Data DefSystemData;
unsigned char Connected; /* 是否与网管建立了连接 */
SelfTest_Result *presult;
unsigned char PanelOK; /* 面板对测试包的应答是否正确 */
unsigned char Has_Report_Device_Type;
unsigned char TCPIP_First_Run;
extern User_FIFO FIFO;
extern void Feed(void);
extern void TK_PanelInit(void);
extern void TK_ServerInit(void);
extern void TK_UserProc(void);
extern void TK_UserInit(void);
extern void TK_PATPMT(void);
extern void TK_Alarm(void);
extern void TK_Alarm_Mon(void);
extern void TK_IP_Monitor(void);
extern void TK_Con_Monitor(void);
extern void TK_InOutRateMon(void);
extern void TK_Feed(void);
extern void tk_appmon(void);
extern void TK_CmdProc(void);
extern void ReportResetState(void);
extern unsigned long ReportSelfTestState(SelfTest_Result *presult,unsigned char Type);
extern void AskForPara(Para_Valid *pvalid);
extern void TK_HardWareInit(void);
extern void IntHandleInit(void);
extern void UserDataLed(int H);
extern void ResetFPGA(void);
extern void ResetC54();
void tk_RstSystem(void);
extern void tk_caReStart(void);
void my_Delay(unsigned long int dly_ms)
{
unsigned long int delay;
delay=dly_ms/(1000/KC_TICKS2SEC);
if(delay==0)
delay=1;
if(delay!=0)
{
tm_wkafter(delay);
}
}
unsigned long GetCRC(unsigned char *pucHead, unsigned long ulLength)
{
unsigned long XOR_REG = 0;
unsigned long PN_REG = 0xffffffff;
unsigned long temp;
unsigned char data,datatemp;
unsigned long i,j;
for(i=0;i<ulLength;i++)
{
data = *pucHead++;
datatemp = data;
for(j=0;j<8;j++)
{
temp= PN_REG;
datatemp = data;
datatemp=(datatemp>>7)+(UCHAR)(temp>>31);
if(datatemp&0x01 == 0x01)
XOR_REG = 0x2608edb;
else
XOR_REG = 0;
PN_REG = PN_REG^XOR_REG;
PN_REG=PN_REG<<1;
if(datatemp&0x01 == 0x01)
PN_REG|=0x01;
else
PN_REG&=0xfffffffe;
data = data <<1;
}
}
return (PN_REG);
}
void InitDefCfg(void)
{
int i,j;
/*-----------------------------------------------------------------------*/
/* 以太网参数 */
/*-----------------------------------------------------------------------*/
/*0xAC602164: 172.96.33.100 此为默认IP地址*/
DefSystemData.EthernetPara.IP =0xAC602164;
DefSystemData.EthernetPara.GateWayIP =0xAC602164;
DefSystemData.EthernetPara.PhysicsAddr[0]=0x88;
DefSystemData.EthernetPara.PhysicsAddr[1]=0x88;
DefSystemData.EthernetPara.PhysicsAddr[2]=0x88;
DefSystemData.EthernetPara.PhysicsAddr[3]=0x44;
DefSystemData.EthernetPara.PhysicsAddr[4]=0x55;
DefSystemData.EthernetPara.PhysicsAddr[5]=0x66;
DefSystemData.EthernetPara.Reserve =0x00;
/*----------------------------------------------------------------------*/
/* 网络接口参数 */
/*----------------------------------------------------------------------*/
/*----------------------------------------------------------------------*/
/*禁用ES3/DS3,ASI码率37M */
/*----------------------------------------------------------------------*/
DefSystemData.NetworkPort.E3DS3Type =0x04;
DefSystemData.NetworkPort.ASIRate =370;
DefSystemData.NetworkPort.PCRDelay =0;
/*----------------------------------------------------------------------*/
/* 级连口参数 */
/*----------------------------------------------------------------------*/
DefSystemData.Cct_Port_Type=CCT_PORT_TYPE_ASI;
/*--------------------------------------------------------------------—*/
/*端口参数 */
/*----------------------------------------------------------------------*/
for(i=0;i<8;i++)
{
DefSystemData.PortConfig[i].Open=1;
DefSystemData.PortConfig[i].Connected=1;
DefSystemData.PortConfig[i].Rate=40;
DefSystemData.PortConfig[i].IPAddr=0x00000000;
}
/*----------------------------------------------------------------------*/
/* 数据通道参数 */
/*----------------------------------------------------------------------*/
DefSystemData.UserChannel.Type=USERCHANNELNOTUSE;
DefSystemData.UserChannel.BaudRate=0;
DefSystemData.UserChannel.CharSize=0;
DefSystemData.UserChannel.StopBits=0;
DefSystemData.UserChannel.Verify=0;
/*---------------------------------------------------------------------*/
/* 温度告警门限 */
/*---------------------------------------------------------------------*/
DefSystemData.TempAlarm.Temp1=60;
DefSystemData.TempAlarm.Temp2=60;
DefSystemData.TempAlarm.Temp3=60;
DefSystemData.TempAlarm.Reserve=0x0;
/*===================================================================*/
/* added for EPG 2002-09-17 */
/*===================================================================*/
for(i=0;i<8;i++)
for(j=0;j<4;j++)
DefSystemData.SIConfig.PortSIConfig[i][j]=0xFF;
DefSystemData.SIConfig.IntSIState=0xFFFFFFFF;
for(i=0;i<6;i++)
DefSystemData.PanelPassword[i]=1;
/*------------------------------------------------------------------*/
/* 自检和复位状态 */
/*------------------------------------------------------------------*/
DefSystemData.ResetState.C54_State =STATE_SOFTRESET;
DefSystemData.ResetState.FPGA_State =STATE_SOFTRESET;
DefSystemData.ResetState.MPC860_State=STATE_SOFTRESET;
DefSystemData.ResetState.Panel_State =STATE_SOFTRESET;
/*DefSystemData.SelfTestResult.C54_Result=SELFTEST_SUCCESS;*/
DefSystemData.SelfTestResult.Nib_Result =SELFTEST_SUCCESS;
DefSystemData.SelfTestResult.FPGA_Result =SELFTEST_SUCCESS;
DefSystemData.SelfTestResult.MPC860_Result=SELFTEST_SUCCESS;
DefSystemData.SelfTestResult.Panel_Result =SELFTEST_SUCCESS;
DefSystemData.ValidFlag=0;
}
/*------------------------------------------------------------------------------*/
void SaveSystemData(void)
{
unsigned char Success=0;
unsigned long VerifyFlag=0;
int i;
/*--------------------------------------------------------------------------*/
/*计算校验和 */
/*--------------------------------------------------------------------------*/
for(i=0;i<sizeof(System_Data) - 4;i++)
{
VerifyFlag+=*(unsigned char *)((unsigned char *)&SystemData + 4 + i);
}
SystemData.ValidFlag=VerifyFlag;
/*--------------------------------------------------------------------------*/
/* systemdata 保存在第一个扇区 */
/*--------------------------------------------------------------------------*/
SST39VF512_Sector_Erase(0x0);
while(!Success)
{
SST39VF512_Write(0x0,(unsigned char *)&SystemData,sizeof(System_Data));
Success=1;
for(i=0;i<sizeof(System_Data);i++)
{
if(*((unsigned char *)&SystemData + i)!=*(unsigned char *)(BD_FLASH_ADDR + i))
Success=0;
}
my_Delay(50);
}
}
/*------------------------------------------------------------------------------*/
/*get the bootup paramaters from flash */
/*if invalid paramaters found, default paramaters will be set and error reported*/
/*------------------------------------------------------------------------------*/
void LoadSystemData()
{
int i;
int j;
unsigned long VerifyFlag;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -