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

📄 root.c

📁 有线电视系统前端设备复用器原代码。 用语接受卫星信号
💻 C
📖 第 1 页 / 共 2 页
字号:

#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 + -