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
RevLine 
[1477]1/*! \file warpnet.h
2\brief Header file for the WARPMAC Framework.
[1203]3
[1616]4@version 16.00
[1477]5@author Chris Hunter and Patrick Murphy
[1203]6
[1477]7This header file contains the macros, function prototypes, and typedefs required for WARPMAC.
8*/
[1203]9
[1477]10#ifndef WARPNET_H
11#define WARPNET_H
12
[1801]13#include "xbasic_types.h"
14
[1477]15#define ARPREPEAT 5
[1537]16#define WARPNET_ETHTYPE_SVR2NODE        0x9090
17#define WARPNET_ETHTYPE_NODE2SVR        0x9191
18#define WARPNET_ETHTYPE_ARBTRAFFIC      0x9292
19#define WARPNET_ETHTYPE_NODE2COPROC     0x9393
[1546]20#define WARPNET_ETHTYPE_NODE2BER        0x9494
[1477]21
[1252]22//Index of OFDM PHY pkt buffer used for sending WARPnet Ethernet packets
[1262]23#define WARPNET_SVR2NODE_PKTBUFFINDEX   0
[1537]24
25#define WARPNET_NODE2COPROC_PKTBUFFINDEX    30
26
[1262]27#define WARPNET_NODE2SVR_PKTBUFFINDEX   31
28
[1252]29
[1491]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
[1537]43#define STRUCTID_CONCAT                     0x1C
44#define STRUCTID_RXPHYDUMP                  0x1E
[1504]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
[1516]51#define STRUCTID_OBSERVE_PER                0x26
52#define STRUCTID_OBSERVE_PER_REQ            0x27
[1537]53#define STRUCTID_OBSERVE_COOPBER            0x28
54#define STRUCTID_OBSERVE_COOPBER_REQ        0x29
55#define STRUCTID_RAWPKT                     0x30
56
[1625]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
[1504]63/*************************/
[1491]64
[1478]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
[1516]75#define COMMANDID_RESET_PER             0x50
[1620]76#define COMMANDID_ENABLE_BER_TESTING    0x51
77#define COMMANDID_DISABLE_BER_TESTING    0x52
[1478]78
79typedef struct {
80    unsigned char controllerID;
81    unsigned char controllerGrp;
82    unsigned char access;
[1504]83    unsigned char reserved0;
[1478]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 {
[1801]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)));
[1478]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 {
[1477]147    unsigned char structID;
[1203]148    unsigned char nodeID;
[1491]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;
[1368]161
[1504]162
163/********* Patrick's structs *************/
[1368]164typedef struct {
[1504]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;
[1524]172    unsigned int pktStatus;
[1504]173} warpnetCFO;
174
175typedef struct {
[1815]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;
[1504]188} warpnetPHYctrl;
[1507]189
190typedef struct {
191    unsigned char structID;
192    unsigned char nodeID;
193    unsigned short sequenceNumber;
[1530]194   
[1507]195    unsigned char nodeID_tx;
196    unsigned char nodeID_rx;
197    unsigned short mac_seqNum;
[1530]198   
199    unsigned char mac_pktType;
200    unsigned char reserved0;
201    unsigned char reserved1;
202    unsigned char reserved2;
203   
[1507]204    unsigned int bits_rx;
205    unsigned int bits_errors;
206} warpnetObserveBER;
[1516]207
208typedef struct {
209    unsigned char structID;
210    unsigned char nodeID;
211    unsigned char reqNum;
[1530]212    unsigned char reqType;
[1516]213    unsigned int numPkts_tx;
214    unsigned int numPkts_rx_good;
215    unsigned int numPkts_rx_goodHdrBadPyld;
[1524]216    unsigned int numPkts_rx_badHdr;
[1801]217} warpnetObservePER __attribute__ ((aligned (4)));
[1516]218
[1530]219typedef struct {
220    char structID;
221    char nodeID;
222    char reqNum;
223    char reqType;
224} warpnetPERreq;
[1537]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;
[1597]242    unsigned int cfoEst_coarse;
243    unsigned int cfoEst_pilots;
[1537]244} warpnetRxPHYdump;
245
[1625]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;
[1504]266/********* END Patrick's structs *************/
267
268typedef struct {
[1477]269    char structID;
270    char nodeID;
271    short cmdID;//NOTE: We are going to overload cmdID to be the "source" packet
272} warpnetRequest;
[1203]273
[1494]274void warpnet_setMacAddr(void* macAddr);
[1477]275void warpnet_sendGratuitousArp(char myID);
[1203]276
277
[1252]278
[1477]279#endif//ifndef WARPNET_H
Note: See TracBrowser for help on using the repository browser.