📄 cmdproc.c
字号:
Cmd.ValidFlag=0xFFFF;
Cmd.CctPortType=SystemData.Cct_Port_Type;
Cmd.EthernetPara.IP=SystemData.EthernetPara.IP;
Cmd.EthernetPara.GateWayIP=SystemData.EthernetPara.GateWayIP;
for(i=0;i<8;i++)
{
Cmd.EthernetPara.PhysicsAddr[i] =SystemData.EthernetPara.PhysicsAddr[i];
Cmd.PortConfig[i].Open =SystemData.PortConfig[7-i].Open;
Cmd.PortConfig[i].Rate =SystemData.PortConfig[7-i].Rate;
Cmd.PortConfig[i].Connected =0;
Cmd.PortConfig[i].IPAddr =0;
}
Cmd.NetworkPort.ASIRate =SystemData.NetworkPort.ASIRate;
Cmd.NetworkPort.E3DS3Type =SystemData.NetworkPort.E3DS3Type;
Cmd.NetworkPort.PCRDelay =SystemData.NetworkPort.PCRDelay;
Cmd.UserChannel.BaudRate =SystemData.UserChannel.BaudRate;
Cmd.UserChannel.CharSize =SystemData.UserChannel.CharSize;
Cmd.UserChannel.StopBits =SystemData.UserChannel.StopBits;
Cmd.UserChannel.Type =SystemData.UserChannel.Type;
Cmd.UserChannel.Verify =SystemData.UserChannel.Verify;
Cmd.TempAlarm.Temp1 =SystemData.TempAlarm.Temp1;
Cmd.TempAlarm.Temp2 =SystemData.TempAlarm.Temp2;
Cmd.TempAlarm.Temp3 =SystemData.TempAlarm.Temp3;
Cmd.TempAlarm.Reserve =0;
/*===================================================================*/
/* added for EPG 2002-09-17 */
/*===================================================================*/
for(i=0;i<8;i++)
for(j=0;j<4;j++)
Cmd.SIConfig.PortSIConfig[7-i][j]=SystemData.SIConfig.PortSIConfig[i][j];
Cmd.SIConfig.IntSIState=SystemData.SIConfig.IntSIState;
/*===================================================================*/
/* added for EPG 2002-09-17 */
/*===================================================================*/
for(i=0;i<6;i++)
{
Cmd.PanelPassword[i]=1;/*SystemData.PanelPassword[i];*/
}
/*===================================================================*/
/* added for panel password 2002-10-30 */
/*===================================================================*/
Cmd.SoftVer =SoftVer;
NibVer=GetNibVer();
Cmd.HardVer =(unsigned long)(HardVer&0xFF) + (unsigned long)(NibVer<<8) ;
ThePacket=(Packet *)MemAlloc(RNG1ID,"ReportCurrentConfig ",sizeof(Packet) - 4 + sizeof(Cmd_Report_CurCfg));
if(ThePacket!=NULL)
{
ThePacket->Command =COMMAND_REPORT_CURRENT_CONFIG;
ThePacket->DeviceType =DEVICE_TYPE_MULTIPLEXER;
ThePacket->PacketType =Pck->PacketType;
ThePacket->DeviceIdt =Pck->DeviceIdt;
ThePacket->PacketIdt =Pck->PacketIdt;
ThePacket->Result =0;
ThePacket->PacketHeadLength=sizeof(Packet) - 4;
ThePacket->PacketLength =sizeof(Packet) - 4 + sizeof(Cmd_Report_CurCfg);
MemCopy((unsigned char *)&ThePacket->Data,(unsigned char *)&Cmd,sizeof(Cmd_Report_CurCfg));
/*--------------------------------------------------------------------------------------------*/
Msg.Flag =0x00;
Msg.MsgType=MSG_REPLY;
Msg.Length =ThePacket->PacketLength;
Msg.Pdata =(unsigned char *)ThePacket;
/*--------------------------------------------------------------------------------------*/
/* 消息来自网管系统 */
/*--------------------------------------------------------------------------------------*/
if(Connected)
{
Display("command report current configuration send out to Management System.\n");
SendQueue(QN_TCPIPSEND,&Msg);
Has_Report_Device_Type=TRUE;
my_Delay(500);/*by xu*/
/*------------------------------------------------------------*/
/* 上报自检状态和IP连接给网管 */
/*------------------------------------------------------------*/
ReportSelftestState(presult,0);
ReportIPAddr(0);
}
}
}
/*-------------------------------------------------------------------------*/
/* 上报当前配置,面板和网管有所不同 */
/*-------------------------------------------------------------------------*/
void ReportCurrentConfig(Packet *Pck)
{
if(Pck->PacketType==0x00)
ReportCurrentConfigToNM(Pck);
else
ReportCurrentConfigToPanel(Pck);
}
/*-------------------------------------------------------------------------*/
/* 数据同步,实现面板和网管系统的数据同步 */
/*-------------------------------------------------------------------------*/
void SynCurrentConfig(Packet *Pck,unsigned char Type)
{
if(Type==PANELTOSMCC)
ReportCurrentConfigToNM(Pck);
else
ReportCurrentConfigToPanel(Pck);
}
/*应答信息*/
void SendReply(Packet *ThePacket, unsigned char Success)
{
Packet *Pck;
MESSAGE Msg;
unsigned long Cmd;
unsigned short PckType;
PckType=ThePacket->PacketType;
Cmd=ThePacket->Command;
Pck=(Packet *)MemAlloc(RNG1ID,"SendReply ",sizeof(Packet) - 4);
if(Pck!=NULL)
{
Pck->Command=ThePacket->Command;
Pck->DeviceIdt=ThePacket->DeviceIdt;
Pck->DeviceType=ThePacket->DeviceType;
Pck->PacketIdt=ThePacket->PacketIdt;
Pck->PacketHeadLength=sizeof(Packet) - 4;
Pck->PacketLength=sizeof(Packet) - 4;
Pck->PacketType=ThePacket->PacketType;
Pck->PacketVersion=ThePacket->PacketVersion;
if(Success==FAILED)
Pck->Result=1;
else
Pck->Result=0;
Msg.Flag =0;
Msg.MsgType =MSG_REPLY;
Msg.Length =Pck->PacketLength;
Msg.Pdata =(unsigned char *)Pck;
Display("A command reply send, command number:0x%x , result: 0x%x.\n",Pck->Command, Pck->Result);
/*--------------------------------------------------------------------------------------*/
/* 消息来自网管系统 */
/*--------------------------------------------------------------------------------------*/
if((PckType==0x00)&&Connected)
{
SendQueue(QN_TCPIPSEND,&Msg);
if((Cmd==COMMAND_SET_PANEL_PASSWORD)||(Cmd==COMMAND_CONFIG_MULTIPLEXER))
{
if(Pck->Result==0)
SynCurrentConfig(Pck,SMCCTOPANEL);
}
}
/*--------------------------------------------------------------------------------------*/
/* 消息来自面板 */
/*--------------------------------------------------------------------------------------*/
else if(PanelOK)
{
SendQueue(QN_PANELSEND,&Msg);
if((Cmd==COMMAND_SET_PANEL_PASSWORD)||(Cmd==COMMAND_CONFIG_MULTIPLEXER))
{
if(Pck->Result==0)
SynCurrentConfig(Pck,PANELTOSMCC);
}
}
}
}
unsigned long CfgUserChannel(Cmd_Set_User_Channel *Cmd)
{
UARTBLOCK uart;
unsigned long rc,ret;
void *dummy;
unsigned char ChannelType;
unsigned long DevNo;
unsigned long tid_recv;
unsigned long BaudList[10]={2400,4800,9600,19200,38400,57600,115200,230400,460800,921600};
#if 0
ChannelType=SystemData.UserChannel.Type;
if((ChannelType==USERCHANNELNOTUSE)&&(OldUserChannelType!=ChannelType))
{
DelUserChannelPSI();
StopFPGA();
ConfigRemapTable(2);
StartFPGA();
}
if((ChannelType!=USERCHANNELNOTUSE)&&(OldUserChannelType==USERCHANNELNOTUSE))
{
AddUserChannelPSI();
StopFPGA();
ConfigRemapTable(2);
StartFPGA();
}
/*---------------------------------------------------------------------*/
/* 关闭用户通信口及相关任务,并重新启动用户通道处理相关任务 */
/*---------------------------------------------------------------------*/
if((OldUserChannelType==USERCHANNELRS232)||(OldUserChannelType==USERCHANNELRS422))
{
for(;;)
{
rc=t_ident(TN_USERRECV,0,&tid_recv);
if(rc==0)
break;
my_Delay(5);
}
t_suspend(tid_recv);
/*------------------------------------------------------------*/
/*关闭相应的通信口 */
/*------------------------------------------------------------*/
if(OldUserChannelType==USERCHANNELRS232)
{
uart.port=PORTRS232;
de_close(DEV_RS232,(void *)&uart,&ret);
}
if(OldUserChannelType==USERCHANNELRS422)
{
uart.port=PORTRS422;
de_close(DEV_RS422,(void *)&uart,&ret);
}
UserChannelAlarm=0;
SetUserTimerPeriod();
/*------------------------------------------------------------*/
/*根据配置重新打开相应的端口 */
/*------------------------------------------------------------*/
if(ChannelType==USERCHANNELNOTUSE)
{
OldUserChannelType=USERCHANNELNOTUSE;
t_delete(tid_recv);
}
else
{
if(ChannelType==USERCHANNELRS232)
{
uart.port=PORTRS232;
DevNo =DEV_RS232;
}
else if(ChannelType==USERCHANNELRS422)
{
uart.port=PORTRS422;
DevNo =DEV_RS422;
}
uart.BaudRate=BaudList[SystemData.UserChannel.BaudRate];
uart.CharSize=SystemData.UserChannel.CharSize;
uart.StopBits=SystemData.UserChannel.StopBits;
uart.Verify =SystemData.UserChannel.Verify;
rc=de_init(DevNo,(void *)&uart,&ret,&dummy);
if(rc)
{
}
rc=de_open(DevNo,(void *)&uart,&ret);
if(rc)
{
Display("deopen error, errno=0x%x \n",rc);
}
t_restart(tid_recv,0);
OldUserChannelType=ChannelType;
}
}
else if(ChannelType!=USERCHANNELNOTUSE)
{
CreateStartTask(TN_USERINIT,TASKPRIO2,SUPERSTACK,USERSTACK,0,TK_UserInit,0);
}
#endif
return 0;
}
/*网络接口及用户通道设置*/
unsigned long Config_Multiplexer(Cmd_Config_Multiplexer *Cmd)
{
int i,j;
UARTBLOCK uart;
unsigned long tid_init,tid_recv,tid_proc,qid_proc;
unsigned long rc,ret;
unsigned long Para[4];
MESSAGE Msg;
unsigned char Cct;
unsigned char UserChannelChanged=0;
unsigned char NeedNewPAT=0;
/*--------------------------------------------------------*/
/* 保存级连口的配置数据 */
/*--------------------------------------------------------*/
SystemData.Cct_Port_Type=Cmd->Cct_Port_Type;
/*--------------------------------------------------------*/
/* 保存网络接口的配置数据 */
/*--------------------------------------------------------*/
SystemData.NetworkPort.ASIRate =Cmd->CmdSetNetwork.ASIRate;
SystemData.NetworkPort.E3DS3Type=Cmd->CmdSetNetwork.E3DS3Type;
SystemData.NetworkPort.PCRDelay =Cmd->CmdSetNetwork.PCRDelay;
/*--------------------------------------------------------*/
/*D0=0:E3/1:DS3 */
/*--------------------------------------------------------*/
if(SystemData.NetworkPort.E3DS3Type&0x4)
{
if(SystemData.NetworkPort.ASIRate>1720)
SystemData.NetworkPort.ASIRate=1720;
}
else
{
if(SystemData.NetworkPort.E3DS3Type&0x1)
{
if(SystemData.NetworkPort.ASIRate>447)
SystemData.NetworkPort.ASIRate=447;
}
else
{
if(SystemData.NetworkPort.ASIRate>343)
SystemData.NetworkPort.ASIRate=343;
}
}
if(SystemData.NetworkPort.PCRDelay>100)
SystemData.NetworkPort.PCRDelay=80;
/*-------------------------------------------------------*/
/* 重新设置网络接口板参数 */
/*-------------------------------------------------------*/
Config_Nib();
/*-------------------------------------------------------*/
/* 保存端口的配置数据 */
/*-------------------------------------------------------*/
for(i=0;i<8;i++)
{
/*
SystemData.PortConfig[i].Open=Cmd->CmdSetPort.Port[7-i].Open;
SystemData.PortConfig[i].Rate=Cmd->CmdSetPort.Port[7-i].Rate;
*/
SystemData.PortConfig[i].Open=1;
SystemData.PortConfig[i].Rate=40;
}
/*-------------------------------------------------------*/
/* 保存用户通道的配置数据 */
/*-------------------------------------------------------*/
if((Cmd->CmdSetUserChannel.Type>2)||(Cmd->CmdSetUserChannel.BaudRate>9)||(Cmd->CmdSetUserChannel.CharSize>8)||(Cmd->CmdSetUserChannel.StopBits>2)||(Cmd->CmdSetUserChannel.Verify>1))
{
if(SystemData.UserChannel.Type!=0)
{
UserChannelChanged=1;
NeedNewPAT=1;
}
SystemData.UserChannel.Type=0;
SystemData.UserChannel.BaudRate=0;
SystemData.UserChannel.CharSize=0;
SystemData.UserChannel.StopBits=0;
SystemData.UserChannel.Verify=0;
}
else
{
if(Cmd->CmdSetUserChannel.Type!=USERCHANNELNOTUSE)
{
if(SystemData.UserChannel.Type!=Cmd->CmdSetUserChannel.Type)
{
NeedNewPAT=1;
UserChannelChanged=1;
SystemData.UserChannel.Type=Cmd->CmdSetUserChannel.Type;
}
if(SystemData.UserChannel.BaudRate!=Cmd->CmdSetUserChannel.BaudRate)
{
UserChannelChanged=1;
SystemData.UserChannel.BaudRate=Cmd->CmdSetUserChannel.BaudRate;
}
if(SystemData.UserChannel.CharSize!=Cmd->CmdSetUserChannel.CharSize)
{
UserChannelChanged=1;
SystemData.UserChannel.CharSize=Cmd->CmdSetUserChannel.CharSize;
}
if(SystemData.UserChannel.StopBits!=Cmd->CmdSetUserChannel.StopBits)
{
UserChannelChanged=1;
SystemData.UserChannel.StopBits=Cmd->CmdSetUserChannel.StopBits;
}
if(SystemData.UserChannel.Verify!=Cmd->CmdSetUserChannel.Verify)
{
UserChannelChanged=1;
SystemData.UserChannel.Verify=Cmd->CmdSetUserChannel.Verify;
}
}
else
{
if(SystemData.UserChannel.Type!=Cmd->CmdSetUserChannel.Type)
{
UserChannelChanged=1;
NeedNewPAT=1;
SystemData.UserChannel.Type=Cmd->CmdSetUserChannel.Type;
SystemData.UserChannel.BaudRate=Cmd->CmdSetUserChannel.BaudRate;
SystemData.UserChannel.CharSize=Cmd->CmdSetUserChannel.CharSize;
SystemData.UserChannel.StopBits=Cmd->CmdSetUserChannel.StopBits;
SystemData.UserChannel.Verify=Cmd->CmdSetUserChannel.Verify;
}
}
}
/*-------------------------------------------------------*/
/*保存新的配置数据到数据库 */
/*-------------------------------------------------------*/
SaveSystemData();
/*-------------------------------------------------------*/
/* 设置级连口 */
/* ASI: BIT0=1 */
/* SPI: BIT1=1 */
/* E3: BIT3=1 */
/* T3: BIT3=0 */
/*-------------------------------------------------------*/
switch(SystemData.Cct_Port_Type)
{
case CCT_PORT_TYPE_ASI:
Cct=0x01;
break;
case CCT_PORT_TYPE_SPI:
Cct=0x02;
break;
case CCT_PORT_TYPE_E3:
Cct=0x08;
break;
case CCT_PORT_TYPE_T3:
Cct=0x00;
break;
}
CCT_PORT_TYPE_REG=Cct;
Msg.Flag =0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -