message.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:7k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

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