Commit | Line | Data |
---|---|---|
1da177e4 LT |
1 | /* $Id: message.h,v 1.1.10.1 2001/09/23 22:24:59 kai Exp $ |
2 | * | |
3 | * Copyright (C) 1996 SpellCaster Telecommunications Inc. | |
4 | * | |
5 | * structures, macros and defines useful for sending | |
6 | * messages to the adapter | |
7 | * | |
8 | * This software may be used and distributed according to the terms | |
9 | * of the GNU General Public License, incorporated herein by reference. | |
10 | * | |
11 | * For more information, please contact gpl-info@spellcast.com or write: | |
12 | * | |
13 | * SpellCaster Telecommunications Inc. | |
14 | * 5621 Finch Avenue East, Unit #3 | |
15 | * Scarborough, Ontario Canada | |
16 | * M1B 2T9 | |
17 | * +1 (416) 297-8565 | |
18 | * +1 (416) 297-6433 Facsimile | |
19 | */ | |
20 | ||
21 | /* | |
22 | * Board message macros, defines and structures | |
23 | */ | |
24 | ||
25 | #ifndef MESSAGE_H | |
26 | #define MESSAGE_H | |
27 | ||
28 | #define MAX_MESSAGES 32 /* Maximum messages that can be | |
29 | queued */ | |
30 | #define MSG_DATA_LEN 48 /* Maximum size of message payload */ | |
31 | #define MSG_LEN 64 /* Size of a message */ | |
32 | #define CMPID 0 /* Loader message process ID */ | |
33 | #define CEPID 64 /* Firmware message process ID */ | |
34 | ||
35 | /* | |
36 | * Macro to determine if a message is a loader message | |
37 | */ | |
38 | #define IS_CM_MESSAGE(mesg, tx, cx, dx) \ | |
39 | ((mesg.type == cmRspType##tx) \ | |
40 | &&(mesg.class == cmRspClass##cx) \ | |
41 | &&(mesg.code == cmRsp##dx)) | |
42 | ||
43 | /* | |
44 | * Macro to determine if a message is a firmware message | |
45 | */ | |
46 | #define IS_CE_MESSAGE(mesg, tx, cx, dx) \ | |
47 | ((mesg.type == ceRspType##tx) \ | |
48 | &&(mesg.class == ceRspClass##cx) \ | |
49 | &&(mesg.code == ceRsp##tx##dx)) | |
50 | ||
51 | /* | |
52 | * Loader Request and Response Messages | |
53 | */ | |
54 | ||
55 | /* message types */ | |
56 | #define cmReqType1 1 | |
57 | #define cmReqType2 2 | |
58 | #define cmRspType0 0 | |
59 | #define cmRspType1 1 | |
60 | #define cmRspType2 2 | |
61 | #define cmRspType5 5 | |
62 | ||
63 | /* message classes */ | |
64 | #define cmReqClass0 0 | |
65 | #define cmRspClass0 0 | |
66 | ||
67 | /* message codes */ | |
68 | #define cmReqHWConfig 1 /* 1,0,1 */ | |
69 | #define cmReqMsgLpbk 2 /* 1,0,2 */ | |
70 | #define cmReqVersion 3 /* 1,0,3 */ | |
71 | #define cmReqLoadProc 1 /* 2,0,1 */ | |
72 | #define cmReqStartProc 2 /* 2,0,2 */ | |
73 | #define cmReqReadMem 6 /* 2,0,6 */ | |
74 | #define cmRspHWConfig cmReqHWConfig | |
75 | #define cmRspMsgLpbk cmReqMsgLpbk | |
76 | #define cmRspVersion cmReqVersion | |
77 | #define cmRspLoadProc cmReqLoadProc | |
78 | #define cmRspStartProc cmReqStartProc | |
79 | #define cmRspReadMem cmReqReadMem | |
80 | #define cmRspMiscEngineUp 1 /* 5,0,1 */ | |
81 | #define cmRspInvalid 0 /* 0,0,0 */ | |
82 | ||
83 | ||
84 | /* | |
85 | * Firmware Request and Response Messages | |
86 | */ | |
87 | ||
88 | /* message types */ | |
89 | #define ceReqTypePhy 1 | |
90 | #define ceReqTypeLnk 2 | |
91 | #define ceReqTypeCall 3 | |
92 | #define ceReqTypeStat 1 | |
93 | #define ceRspTypeErr 0 | |
94 | #define ceRspTypePhy ceReqTypePhy | |
95 | #define ceRspTypeLnk ceReqTypeLnk | |
96 | #define ceRspTypeCall ceReqTypeCall | |
97 | #define ceRspTypeStat ceReqTypeStat | |
98 | ||
99 | /* message classes */ | |
100 | #define ceReqClass0 0 | |
101 | #define ceReqClass1 1 | |
102 | #define ceReqClass2 2 | |
103 | #define ceReqClass3 3 | |
104 | #define ceRspClass0 ceReqClass0 | |
105 | #define ceRspClass1 ceReqClass1 | |
106 | #define ceRspClass2 ceReqClass2 | |
107 | #define ceRspClass3 ceReqClass3 | |
108 | ||
109 | /* message codes (B) = BRI only, (P) = PRI only, (V) = POTS only */ | |
110 | #define ceReqPhyProcInfo 1 /* 1,0,1 */ | |
111 | #define ceReqPhyConnect 1 /* 1,1,1 */ | |
112 | #define ceReqPhyDisconnect 2 /* 1,1,2 */ | |
113 | #define ceReqPhySetParams 3 /* 1,1,3 (P) */ | |
114 | #define ceReqPhyGetParams 4 /* 1,1,4 (P) */ | |
115 | #define ceReqPhyStatus 1 /* 1,2,1 */ | |
116 | #define ceReqPhyAcfaStatus 2 /* 1,2,2 (P) */ | |
117 | #define ceReqPhyChCallState 3 /* 1,2,3 (P) */ | |
118 | #define ceReqPhyChServState 4 /* 1,2,4 (P) */ | |
119 | #define ceReqPhyRLoopBack 1 /* 1,3,1 */ | |
120 | #define ceRspPhyProcInfo ceReqPhyProcInfo | |
121 | #define ceRspPhyConnect ceReqPhyConnect | |
122 | #define ceRspPhyDisconnect ceReqPhyDisconnect | |
123 | #define ceRspPhySetParams ceReqPhySetParams | |
124 | #define ceRspPhyGetParams ceReqPhyGetParams | |
125 | #define ceRspPhyStatus ceReqPhyStatus | |
126 | #define ceRspPhyAcfaStatus ceReqPhyAcfaStatus | |
127 | #define ceRspPhyChCallState ceReqPhyChCallState | |
128 | #define ceRspPhyChServState ceReqPhyChServState | |
129 | #define ceRspPhyRLoopBack ceReqphyRLoopBack | |
130 | #define ceReqLnkSetParam 1 /* 2,0,1 */ | |
131 | #define ceReqLnkGetParam 2 /* 2,0,2 */ | |
132 | #define ceReqLnkGetStats 3 /* 2,0,3 */ | |
133 | #define ceReqLnkWrite 1 /* 2,1,1 */ | |
134 | #define ceReqLnkRead 2 /* 2,1,2 */ | |
135 | #define ceReqLnkFlush 3 /* 2,1,3 */ | |
136 | #define ceReqLnkWrBufTrc 4 /* 2,1,4 */ | |
137 | #define ceReqLnkRdBufTrc 5 /* 2,1,5 */ | |
138 | #define ceRspLnkSetParam ceReqLnkSetParam | |
139 | #define ceRspLnkGetParam ceReqLnkGetParam | |
140 | #define ceRspLnkGetStats ceReqLnkGetStats | |
141 | #define ceRspLnkWrite ceReqLnkWrite | |
142 | #define ceRspLnkRead ceReqLnkRead | |
143 | #define ceRspLnkFlush ceReqLnkFlush | |
144 | #define ceRspLnkWrBufTrc ceReqLnkWrBufTrc | |
145 | #define ceRspLnkRdBufTrc ceReqLnkRdBufTrc | |
146 | #define ceReqCallSetSwitchType 1 /* 3,0,1 */ | |
147 | #define ceReqCallGetSwitchType 2 /* 3,0,2 */ | |
148 | #define ceReqCallSetFrameFormat 3 /* 3,0,3 */ | |
149 | #define ceReqCallGetFrameFormat 4 /* 3,0,4 */ | |
150 | #define ceReqCallSetCallType 5 /* 3,0,5 */ | |
151 | #define ceReqCallGetCallType 6 /* 3,0,6 */ | |
152 | #define ceReqCallSetSPID 7 /* 3,0,7 (!P) */ | |
153 | #define ceReqCallGetSPID 8 /* 3,0,8 (!P) */ | |
154 | #define ceReqCallSetMyNumber 9 /* 3,0,9 (!P) */ | |
155 | #define ceReqCallGetMyNumber 10 /* 3,0,10 (!P) */ | |
156 | #define ceRspCallSetSwitchType ceReqCallSetSwitchType | |
157 | #define ceRspCallGetSwitchType ceReqCallSetSwitchType | |
158 | #define ceRspCallSetFrameFormat ceReqCallSetFrameFormat | |
159 | #define ceRspCallGetFrameFormat ceReqCallGetFrameFormat | |
160 | #define ceRspCallSetCallType ceReqCallSetCallType | |
161 | #define ceRspCallGetCallType ceReqCallGetCallType | |
162 | #define ceRspCallSetSPID ceReqCallSetSPID | |
163 | #define ceRspCallGetSPID ceReqCallGetSPID | |
164 | #define ceRspCallSetMyNumber ceReqCallSetMyNumber | |
165 | #define ceRspCallGetMyNumber ceReqCallGetMyNumber | |
166 | #define ceRspStatAcfaStatus 2 | |
167 | #define ceRspStat | |
168 | #define ceRspErrError 0 /* 0,0,0 */ | |
169 | ||
170 | /* | |
171 | * Call Types | |
172 | */ | |
173 | #define CALLTYPE_64K 0 | |
174 | #define CALLTYPE_56K 1 | |
175 | #define CALLTYPE_SPEECH 2 | |
176 | #define CALLTYPE_31KHZ 3 | |
177 | ||
178 | /* | |
179 | * Link Level data contains a pointer to and the length of | |
180 | * a buffer in shared RAM. Used by LnkRead and LnkWrite message | |
181 | * types. Part of RspMsgStruct and ReqMsgStruct. | |
182 | */ | |
183 | typedef struct { | |
184 | unsigned long buff_offset; | |
185 | unsigned short msg_len; | |
186 | } LLData; | |
187 | ||
188 | ||
189 | /* | |
190 | * Message payload template for an HWConfig message | |
191 | */ | |
192 | typedef struct { | |
193 | char st_u_sense; | |
194 | char powr_sense; | |
195 | char sply_sense; | |
196 | unsigned char asic_id; | |
197 | long ram_size; | |
198 | char serial_no[13]; | |
199 | char part_no[13]; | |
200 | char rev_no[2]; | |
201 | } HWConfig_pl; | |
202 | ||
203 | /* | |
204 | * A Message | |
205 | */ | |
206 | struct message { | |
207 | unsigned char sequence_no; | |
208 | unsigned char process_id; | |
209 | unsigned char time_stamp; | |
210 | unsigned char cmd_sequence_no; /* Rsp messages only */ | |
211 | unsigned char reserved1[3]; | |
212 | unsigned char msg_byte_cnt; | |
213 | unsigned char type; | |
214 | unsigned char class; | |
215 | unsigned char code; | |
216 | unsigned char phy_link_no; | |
217 | unsigned char rsp_status; /* Rsp messages only */ | |
218 | unsigned char reseved2[3]; | |
219 | union { | |
220 | unsigned char byte_array[MSG_DATA_LEN]; | |
221 | LLData response; | |
222 | HWConfig_pl HWCresponse; | |
223 | } msg_data; | |
224 | }; | |
225 | ||
226 | typedef struct message ReqMessage; /* Request message */ | |
227 | typedef struct message RspMessage; /* Response message */ | |
228 | ||
229 | /* | |
230 | * The first 5010 bytes of shared memory contain the message queues, | |
231 | * indexes and other data. This structure is its template | |
232 | */ | |
233 | typedef struct { | |
234 | volatile ReqMessage req_queue[MAX_MESSAGES]; | |
235 | volatile RspMessage rsp_queue[MAX_MESSAGES]; | |
236 | volatile unsigned char req_head; | |
237 | volatile unsigned char req_tail; | |
238 | volatile unsigned char rsp_head; | |
239 | volatile unsigned char rsp_tail; | |
240 | volatile unsigned long signature; | |
241 | volatile unsigned long trace_enable; | |
242 | volatile unsigned char reserved[4]; | |
243 | } DualPortMemory; | |
244 | ||
245 | #endif |