📄 cmdpkt.h
字号:
/*** -----------------------------------------------------------------------------**** Perle Specialix driver for Linux** Ported from existing RIO Driver for SCO sources. * * (C) 1990 - 2000 Specialix International Ltd., Byfleet, Surrey, UK. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.**** Module : cmdpkt.h** SID : 1.2** Last Modified : 11/6/98 11:34:09** Retrieved : 11/6/98 11:34:20**** ident @(#)cmdpkt.h 1.2**** -----------------------------------------------------------------------------*/#ifndef __rio_cmdpkt_h__#define __rio_cmdpkt_h__#ifdef SCCS_LABELS#ifndef lintstatic char *_cmdpkt_h_sccs_ = "@(#)cmdpkt.h 1.2";#endif#endif/*** overlays for the data area of a packet. Used in both directions** (to build a packet to send, and to interpret a packet that arrives)** and is very inconvenient for MIPS, so they appear as two separate** structures - those used for modifying/reading packets on the card** and those for modifying/reading packets in real memory, which have an _M** suffix.*/#define RTA_BOOT_DATA_SIZE (PKT_MAX_DATA_LEN-2)/*** The boot information packet looks like this:** This structure overlays a PktCmd->CmdData structure, and so starts** at Data[2] in the actual pkt!*/struct BootSequence{ WORD NumPackets; WORD LoadBase; WORD CodeSize;};#define BOOT_SEQUENCE_LEN 8struct SamTop{ BYTE Unit; BYTE Link;};struct CmdHdr{ BYTE PcCommand; union { BYTE PcPhbNum; BYTE PcLinkNum; BYTE PcIDNum; } U0;};struct PktCmd{ union { struct { struct CmdHdr CmdHdr; struct BootSequence PcBootSequence; } S1; struct { WORD PcSequence; BYTE PcBootData[RTA_BOOT_DATA_SIZE]; } S2; struct { WORD __crud__; BYTE PcUniqNum[4]; /* this is really a uint. */ BYTE PcModuleTypes; /* what modules are fitted */ } S3; struct { struct CmdHdr CmdHdr; BYTE __undefined__; BYTE PcModemStatus; BYTE PcPortStatus; BYTE PcSubCommand; /* commands like mem or register dump */ WORD PcSubAddr; /* Address for command */ BYTE PcSubData[64]; /* Date area for command */ } S4; struct { struct CmdHdr CmdHdr; BYTE PcCommandText[1]; BYTE __crud__[20]; BYTE PcIDNum2; /* It had to go somewhere! */ } S5; struct { struct CmdHdr CmdHdr; struct SamTop Topology[LINKS_PER_UNIT]; } S6; } U1;};struct PktCmd_M{ union { struct { struct { uchar PcCommand; union { uchar PcPhbNum; uchar PcLinkNum; uchar PcIDNum; } U0; } CmdHdr; struct { ushort NumPackets; ushort LoadBase; ushort CodeSize; } PcBootSequence; } S1; struct { ushort PcSequence; uchar PcBootData[RTA_BOOT_DATA_SIZE]; } S2; struct { ushort __crud__; uchar PcUniqNum[4]; /* this is really a uint. */ uchar PcModuleTypes; /* what modules are fitted */ } S3; struct { ushort __cmd_hdr__; uchar __undefined__; uchar PcModemStatus; uchar PcPortStatus; uchar PcSubCommand; ushort PcSubAddr; uchar PcSubData[64]; } S4; struct { ushort __cmd_hdr__; uchar PcCommandText[1]; uchar __crud__[20]; uchar PcIDNum2; /* Tacked on end */ } S5; struct { ushort __cmd_hdr__; struct Top Topology[LINKS_PER_UNIT]; } S6; } U1;};#define Command U1.S1.CmdHdr.PcCommand#define PhbNum U1.S1.CmdHdr.U0.PcPhbNum#define IDNum U1.S1.CmdHdr.U0.PcIDNum#define IDNum2 U1.S5.PcIDNum2#define LinkNum U1.S1.CmdHdr.U0.PcLinkNum#define Sequence U1.S2.PcSequence#define BootData U1.S2.PcBootData#define BootSequence U1.S1.PcBootSequence#define UniqNum U1.S3.PcUniqNum#define ModemStatus U1.S4.PcModemStatus#define PortStatus U1.S4.PcPortStatus#define SubCommand U1.S4.PcSubCommand#define SubAddr U1.S4.PcSubAddr#define SubData U1.S4.PcSubData#define CommandText U1.S5.PcCommandText#define RouteTopology U1.S6.Topology#define ModuleTypes U1.S3.PcModuleTypes#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -