source: PlatformSupport/WARPMAC/warp_v3/warpnet.h

Last change on this file was 1815, checked in by murphpo, 12 years ago
  • Property svn:executable set to *
File size: 6.4 KB
Line 
1/*! \file warpnet.h
2\brief Header file for the WARPMAC Framework.
3
4@version 16.00
5@author Chris Hunter and Patrick Murphy
6
7This header file contains the macros, function prototypes, and typedefs required for WARPMAC.
8*/
9
10#ifndef WARPNET_H
11#define WARPNET_H
12
13#include "xbasic_types.h"
14
15#define ARPREPEAT 5
16#define WARPNET_ETHTYPE_SVR2NODE        0x9090
17#define WARPNET_ETHTYPE_NODE2SVR        0x9191
18#define WARPNET_ETHTYPE_ARBTRAFFIC      0x9292
19#define WARPNET_ETHTYPE_NODE2COPROC     0x9393
20#define WARPNET_ETHTYPE_NODE2BER        0x9494
21
22//Index of OFDM PHY pkt buffer used for sending WARPnet Ethernet packets
23#define WARPNET_SVR2NODE_PKTBUFFINDEX   0
24
25#define WARPNET_NODE2COPROC_PKTBUFFINDEX    30
26
27#define WARPNET_NODE2SVR_PKTBUFFINDEX   31
28
29
30
31#define TXPACKET            0xFF
32
33
34#define STRUCTID_CONTROL                    0x13
35#define STRUCTID_CONTROL_ACK                0x14
36#define STRUCTID_OBSERVE_REQUEST_NORELAY    0x15
37#define STRUCTID_OBSERVE_REQUEST_RELAY      0x19
38#define STRUCTID_OBSERVE                    0x16
39#define STRUCTID_COMMAND                    0x17   
40#define STRUCTID_COMMAND_ACK                0x18
41#define STRUCTID_RTOBSERVE_REQUEST          0x1A
42#define STRUCTID_RTOBSERVE                  0x1B
43#define STRUCTID_CONCAT                     0x1C
44#define STRUCTID_RXPHYDUMP                  0x1E
45/*******Patrick's**********/
46#define STRUCTID_CFO                        0x20
47#define STRUCTID_PHYCTRL                    0x22
48#define STRUCTID_PHYCTRL_ACK                0x23
49#define STRUCTID_OBSERVE_BER                0x24
50#define STRUCTID_OBSERVE_BER_REQ            0x25
51#define STRUCTID_OBSERVE_PER                0x26
52#define STRUCTID_OBSERVE_PER_REQ            0x27
53#define STRUCTID_OBSERVE_COOPBER            0x28
54#define STRUCTID_OBSERVE_COOPBER_REQ        0x29
55#define STRUCTID_RAWPKT                     0x30
56
57#define STRUCTID_OBSERVE_PER_MULTIRATE      0x32
58#define STRUCTID_OBSERVE_PER_MULTIRATE_REQ  0x33
59
60#define STRUCTID_RXSTATUS                   0x34
61#define STRUCTID_RXSTATUS_REQ               0x35
62
63/*************************/
64
65#define COMMANDID_STARTTRIAL            0x40
66#define COMMANDID_STOPTRIAL             0x41
67#define COMMANDID_RELAYSTATE            0x42
68    #define COMMANDPARAM_OFF            0x43
69    #define COMMANDPARAM_AF             0x44
70    #define COMMANDPARAM_DF             0x45
71    #define COMMANDPARAM_ALTERNATING    0x49
72#define COMMANDID_PKTGEN                0x46
73    #define COMMANDPARAM_ENABLE         0x47
74    #define COMMANDPARAM_DISABLE        0x48
75#define COMMANDID_RESET_PER             0x50
76#define COMMANDID_ENABLE_BER_TESTING    0x51
77#define COMMANDID_DISABLE_BER_TESTING    0x52
78
79typedef struct {
80    unsigned char controllerID;
81    unsigned char controllerGrp;
82    unsigned char access;
83    unsigned char reserved0;
84} warpnetControllerGroup;
85
86typedef struct {
87    unsigned char macAddr[6];
88} Netconfig;
89
90//Struct representing raw Ethernet header + packet contents
91typedef struct {
92    //Standard 14-byte Ethernet header (dest/src MAC addresses + EtherType)
93    unsigned char dstAddr[6];
94    unsigned char srcAddr[6];
95    unsigned short ethType;
96    //total number of bytes in pkt, including this header
97    unsigned short pktLength;
98    //number of warpnet structs that follow
99    unsigned char numStructs;
100    //Sequence number to match packets to ACKs
101    unsigned char seqNum;
102} warpnetEthernetPktHeader;
103
104typedef struct {
105    char structID;
106    char nodeID;
107    short cmdID;
108} warpnetAck;
109
110typedef struct {
111    u8 structID;
112    u8 nodeID;
113    u8 txPower;
114    u8 channel;
115    u8 modOrderHeader;
116    u8 modOrderPayload;
117    u8 codeRatePayload;
118    u8 reserved;
119    u32 pktGen_period;
120    u32 pktGen_length;
121} warpnetControl __attribute__ ((aligned (4)));
122
123typedef struct {
124    char structID;
125    char nodeID;
126    char cmdID;
127    char cmdParam;
128} warpnetCommand;
129
130typedef struct {
131    unsigned char structID;
132    unsigned char nodeID;
133    unsigned short sourceNode;
134    unsigned int numDataTx;
135    unsigned int numNACKTx;
136    unsigned int numDataRx;
137    unsigned int numNACKRx;
138    unsigned int numBadHeaderRx;
139    unsigned int sumGains;
140    unsigned int sumRSSI;
141    unsigned int sumPacketCountRx;
142    unsigned int trialDuration;
143    unsigned int timeStamp;
144} warpnetObserve;
145
146typedef struct {
147    unsigned char structID;
148    unsigned char nodeID;
149    unsigned short sequenceNumber;
150    unsigned char pktType;
151    unsigned char srcNode;
152    unsigned char destNode;
153    unsigned char relNode;
154    unsigned char state;
155    unsigned char reserved;
156    unsigned short rssi;
157    unsigned short gain;
158    unsigned short timeStampHigh;
159    unsigned int timeStampLow;
160} warpnetRTObserve;
161
162
163/********* Patrick's structs *************/
164typedef struct {
165    unsigned char structID;
166    unsigned char nodeID;
167    unsigned short sequenceNumber;
168    unsigned int cfo_c;
169    unsigned int cfo_p;
170    unsigned int cfo_b;
171    unsigned int txCFO;
172    unsigned int pktStatus;
173} warpnetCFO;
174
175typedef struct {
176    u8 structID;
177    u8 nodeID;
178    u16 param0;
179    u32 param1;
180    u32 param2;
181    u32 param3;
182    u32 param4;
183    u32 param5;
184    u32 param6;
185    u32 param7;
186    u32 param8;
187    u32 param9;
188} warpnetPHYctrl;
189
190typedef struct {
191    unsigned char structID;
192    unsigned char nodeID;
193    unsigned short sequenceNumber;
194   
195    unsigned char nodeID_tx;
196    unsigned char nodeID_rx;
197    unsigned short mac_seqNum;
198   
199    unsigned char mac_pktType;
200    unsigned char reserved0;
201    unsigned char reserved1;
202    unsigned char reserved2;
203   
204    unsigned int bits_rx;
205    unsigned int bits_errors;
206} warpnetObserveBER;
207
208typedef struct {
209    unsigned char structID;
210    unsigned char nodeID;
211    unsigned char reqNum;
212    unsigned char reqType;
213    unsigned int numPkts_tx;
214    unsigned int numPkts_rx_good;
215    unsigned int numPkts_rx_goodHdrBadPyld;
216    unsigned int numPkts_rx_badHdr;
217} warpnetObservePER __attribute__ ((aligned (4)));
218
219typedef struct {
220    char structID;
221    char nodeID;
222    char reqNum;
223    char reqType;
224} warpnetPERreq;
225
226typedef struct {
227    unsigned char structID;
228    unsigned char nodeID;
229    unsigned short numBytes;
230} warpnetRawPkt;
231
232typedef struct {
233    unsigned char structID;
234    unsigned char nodeID;
235    unsigned short seqNum;
236    unsigned char pktType;
237    unsigned char rxStatus;
238    unsigned char includedData; //bitwise OR of RXPHYDUMP_INCLUDE_*
239    unsigned char reserved0;
240    unsigned short rssi;
241    unsigned short rxGains;
242    unsigned int cfoEst_coarse;
243    unsigned int cfoEst_pilots;
244} warpnetRxPHYdump;
245
246//MS DEMO
247typedef struct {
248    unsigned char structID;
249    unsigned char nodeID;
250    unsigned char reqNum;
251    unsigned char reqType;
252    unsigned int numPkts_tx[4];
253    unsigned int numPkts_rx_good[4];
254    unsigned int numPkts_rx_goodHdrBadPyld[4];
255    unsigned int numPkts_rx_badHdr;
256} warpnetObservePER_multiRate;
257
258typedef struct {
259    unsigned char structID;
260    unsigned char nodeID;
261    unsigned char rxStatus;
262    unsigned char reserved0;
263    unsigned short rssi;
264    unsigned short rxGains;
265} warpnetRxStatus;
266/********* END Patrick's structs *************/
267
268typedef struct {
269    char structID;
270    char nodeID;
271    short cmdID;//NOTE: We are going to overload cmdID to be the "source" packet
272} warpnetRequest;
273
274void warpnet_setMacAddr(void* macAddr);
275void warpnet_sendGratuitousArp(char myID);
276
277
278
279#endif//ifndef WARPNET_H
Note: See TracBrowser for help on using the repository browser.