自己根据lkd和情境分析

源代码在线查看: message.h

软件大小: 50337 K
上传用户: hh831
关键词: lkd
下载地址: 免注册下载 普通下载 VIP

相关代码

				/* $Id: message.h,v 1.1.1.1 2004/02/04 12:56:18 laputa Exp $				 *				 * Copyright (C) 1996  SpellCaster Telecommunications Inc.				 *				 * structures, macros and defines useful for sending				 * messages to the adapter				 *				 * This software may be used and distributed according to the terms				 * of the GNU General Public License, incorporated herein by reference.				 *				 * For more information, please contact gpl-info@spellcast.com or write:				 *				 *     SpellCaster Telecommunications Inc.				 *     5621 Finch Avenue East, Unit #3				 *     Scarborough, Ontario  Canada				 *     M1B 2T9				 *     +1 (416) 297-8565				 *     +1 (416) 297-6433 Facsimile				 */								/*				 * Board message macros, defines and structures				 */				 				#ifndef MESSAGE_H				#define MESSAGE_H								#define MAX_MESSAGES		32	/* Maximum messages that can be									   queued */				#define MSG_DATA_LEN		48	/* Maximum size of message payload */				#define MSG_LEN			64	/* Size of a message */				#define CMPID			0	/* Loader message process ID */				#define CEPID			64	/* Firmware message process ID */								/*				 * Macro to determine if a message is a loader message				 */				#define IS_CM_MESSAGE(mesg, tx, cx, dx)		\						((mesg.type == cmRspType##tx)		\						&&(mesg.class == cmRspClass##cx)	\						&&(mesg.code == cmRsp##dx))								/*				 * Macro to determine if a message is a firmware message				 */				#define IS_CE_MESSAGE(mesg, tx, cx, dx)		\						((mesg.type == ceRspType##tx)		\						&&(mesg.class == ceRspClass##cx)	\						&&(mesg.code == ceRsp##tx##dx))								/* 				 * Loader Request and Response Messages				 */								/* message types */				#define cmReqType1			1				#define cmReqType2			2				#define cmRspType0			0				#define cmRspType1			1				#define cmRspType2			2				#define cmRspType5			5								/* message classes */				#define cmReqClass0			0				#define cmRspClass0			0								/* message codes */				#define cmReqHWConfig		1			/* 1,0,1 */				#define cmReqMsgLpbk		2			/* 1,0,2 */				#define cmReqVersion		3			/* 1,0,3 */				#define cmReqLoadProc		1			/* 2,0,1 */				#define cmReqStartProc		2			/* 2,0,2 */				#define cmReqReadMem		6			/* 2,0,6 */				#define cmRspHWConfig		cmReqHWConfig				#define	cmRspMsgLpbk		cmReqMsgLpbk				#define cmRspVersion		cmReqVersion				#define cmRspLoadProc		cmReqLoadProc				#define cmRspStartProc		cmReqStartProc				#define	cmRspReadMem		cmReqReadMem				#define cmRspMiscEngineUp	1			/* 5,0,1 */				#define cmRspInvalid		0			/* 0,0,0 */												/*				 * Firmware Request and Response Messages				 */								/* message types */				#define ceReqTypePhy		1				#define ceReqTypeLnk		2				#define ceReqTypeCall		3				#define ceReqTypeStat		1				#define ceRspTypeErr		0				#define	ceRspTypePhy		ceReqTypePhy				#define ceRspTypeLnk		ceReqTypeLnk				#define ceRspTypeCall		ceReqTypeCall				#define ceRspTypeStat		ceReqTypeStat								/* message classes */				#define ceReqClass0		0				#define ceReqClass1		1				#define ceReqClass2		2				#define ceReqClass3		3				#define ceRspClass0		ceReqClass0				#define ceRspClass1		ceReqClass1				#define ceRspClass2		ceReqClass2				#define ceRspClass3		ceReqClass3								/* message codes  (B) = BRI only, (P) = PRI only, (V) = POTS only */				#define ceReqPhyProcInfo	1			/* 1,0,1 */				#define ceReqPhyConnect		1			/* 1,1,1 */				#define ceReqPhyDisconnect	2			/* 1,1,2 */				#define ceReqPhySetParams	3			/* 1,1,3 (P) */				#define ceReqPhyGetParams	4			/* 1,1,4 (P) */				#define ceReqPhyStatus		1			/* 1,2,1 */				#define ceReqPhyAcfaStatus	2			/* 1,2,2 (P) */				#define ceReqPhyChCallState	3			/* 1,2,3 (P) */				#define ceReqPhyChServState	4			/* 1,2,4 (P) */				#define ceReqPhyRLoopBack	1			/* 1,3,1 */				#define ceRspPhyProcInfo	ceReqPhyProcInfo				#define	ceRspPhyConnect		ceReqPhyConnect				#define ceRspPhyDisconnect	ceReqPhyDisconnect				#define ceRspPhySetParams	ceReqPhySetParams				#define ceRspPhyGetParams	ceReqPhyGetParams				#define ceRspPhyStatus		ceReqPhyStatus				#define ceRspPhyAcfaStatus	ceReqPhyAcfaStatus				#define ceRspPhyChCallState	ceReqPhyChCallState				#define ceRspPhyChServState	ceReqPhyChServState				#define ceRspPhyRLoopBack	ceReqphyRLoopBack				#define ceReqLnkSetParam	1			/* 2,0,1 */				#define ceReqLnkGetParam	2			/* 2,0,2 */				#define ceReqLnkGetStats	3			/* 2,0,3 */				#define ceReqLnkWrite		1			/* 2,1,1 */				#define ceReqLnkRead		2			/* 2,1,2 */				#define ceReqLnkFlush		3			/* 2,1,3 */				#define ceReqLnkWrBufTrc	4			/* 2,1,4 */				#define ceReqLnkRdBufTrc	5			/* 2,1,5 */				#define ceRspLnkSetParam	ceReqLnkSetParam				#define ceRspLnkGetParam	ceReqLnkGetParam				#define ceRspLnkGetStats	ceReqLnkGetStats				#define ceRspLnkWrite		ceReqLnkWrite				#define ceRspLnkRead		ceReqLnkRead				#define ceRspLnkFlush		ceReqLnkFlush				#define ceRspLnkWrBufTrc	ceReqLnkWrBufTrc				#define ceRspLnkRdBufTrc	ceReqLnkRdBufTrc				#define ceReqCallSetSwitchType	1			/* 3,0,1 */				#define ceReqCallGetSwitchType	2			/* 3,0,2 */				#define ceReqCallSetFrameFormat	3			/* 3,0,3 */				#define ceReqCallGetFrameFormat	4			/* 3,0,4 */				#define ceReqCallSetCallType	5			/* 3,0,5 */				#define ceReqCallGetCallType	6			/* 3,0,6 */				#define ceReqCallSetSPID	7			/* 3,0,7 (!P) */				#define ceReqCallGetSPID	8			/* 3,0,8 (!P) */				#define ceReqCallSetMyNumber	9			/* 3,0,9 (!P) */				#define ceReqCallGetMyNumber	10			/* 3,0,10 (!P) */				#define	ceRspCallSetSwitchType	ceReqCallSetSwitchType				#define ceRspCallGetSwitchType	ceReqCallSetSwitchType				#define ceRspCallSetFrameFormat	ceReqCallSetFrameFormat				#define ceRspCallGetFrameFormat	ceReqCallGetFrameFormat				#define ceRspCallSetCallType	ceReqCallSetCallType				#define ceRspCallGetCallType	ceReqCallGetCallType				#define ceRspCallSetSPID	ceReqCallSetSPID				#define ceRspCallGetSPID	ceReqCallGetSPID				#define ceRspCallSetMyNumber	ceReqCallSetMyNumber				#define ceRspCallGetMyNumber	ceReqCallGetMyNumber				#define ceRspStatAcfaStatus	2				#define ceRspStat				#define ceRspErrError		0			/* 0,0,0 */								/*				 * Call Types				 */				#define CALLTYPE_64K		0				#define CALLTYPE_56K		1				#define CALLTYPE_SPEECH		2				#define CALLTYPE_31KHZ		3								/*				 * Link Level data contains a pointer to and the length of				 * a buffer in shared RAM. Used by LnkRead and LnkWrite message				 * types. Part of RspMsgStruct and ReqMsgStruct.				 */				typedef struct {					unsigned long buff_offset;					unsigned short msg_len;				} LLData;												/* 				 * Message payload template for an HWConfig message				 */				typedef struct {					char st_u_sense;					char powr_sense;					char sply_sense;					unsigned char asic_id;					long ram_size;					char serial_no[13];					char part_no[13];					char rev_no[2];				} HWConfig_pl;								/*				 * A Message				 */				struct message {					unsigned char sequence_no;					unsigned char process_id;					unsigned char time_stamp;					unsigned char cmd_sequence_no;	/* Rsp messages only */					unsigned char reserved1[3];					unsigned char msg_byte_cnt;					unsigned char type;					unsigned char class;					unsigned char code;					unsigned char phy_link_no;					unsigned char rsp_status;	/* Rsp messages only */					unsigned char reseved2[3];					union {						unsigned char byte_array[MSG_DATA_LEN];						LLData response;						HWConfig_pl HWCresponse;					} msg_data;				};								typedef struct message ReqMessage;	/* Request message */				typedef struct message RspMessage;	/* Response message */								/*				 * The first 5010 bytes of shared memory contain the message queues,				 * indexes and other data. This structure is its template				 */				typedef struct {					volatile ReqMessage req_queue[MAX_MESSAGES];					volatile RspMessage rsp_queue[MAX_MESSAGES];					volatile unsigned char req_head;					volatile unsigned char req_tail;					volatile unsigned char rsp_head;					volatile unsigned char rsp_tail;					volatile unsigned long signature;					volatile unsigned long trace_enable;					volatile unsigned char reserved[4];				} DualPortMemory;								#endif							

相关资源