/* $Id: message.h,v 1.1.10.1 2001/09/23 22:24:59 kai 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