| /* $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 |