1 #ifndef _BES_SNIFFER_H_
2 #define _BES_SNIFFER_H_
3 
4 #define SNIFFER_STATE_ENABLE_MASK  0x001
5 #define SNIFFER_STATE_DISABLE      0x000
6 #define SNIFFER_STATE_ENABLE       0x001
7 #define SNIFFER_STATE_MGMT         0x002
8 #define SNIFFER_STATE_FROMDS       0x004
9 #define SNIFFER_STATE_TODS         0x008
10 #define SNIFFER_STATE_40M          0x010
11 #define SNIFFER_STATE_ACK          0x020
12 #define SNIFFER_STATE_RTSCTX       0x040
13 #define SNIFFER_STATE_NULL         0x080
14 
15 enum TYPESUBTYPE_T
16 {
17     ASSOC_REQ             = 0x00,
18     ASSOC_RSP             = 0x10,
19     REASSOC_REQ           = 0x20,
20     REASSOC_RSP           = 0x30,
21     PROBE_REQ             = 0x40,
22     PROBE_RSP             = 0x50,
23     BEACON                = 0x80,
24     ATIM                  = 0x90,
25     DISASOC               = 0xA0,
26     AUTH                  = 0xB0,
27     DEAUTH                = 0xC0,
28     ACTION                = 0xD0,
29     PS_POLL               = 0xA4,
30     RTS                   = 0xB4,
31     CTS                   = 0xC4,
32     ACK                   = 0xD4,
33     CFEND                 = 0xE4,
34     CFEND_ACK             = 0xF4,
35     DATA                  = 0x08,
36     DATA_ACK              = 0x18,
37     DATA_POLL             = 0x28,
38     DATA_POLL_ACK         = 0x38,
39     NULL_FRAME            = 0x48,
40     CFACK                 = 0x58,
41     CFPOLL                = 0x68,
42     CFPOLL_ACK            = 0x78,
43     QOS_DATA              = 0x88,
44     QOS_DATA_ACK          = 0x98,
45     QOS_DATA_POLL         = 0xA8,
46     QOS_DATA_POLL_ACK     = 0xB8,
47     QOS_NULL_FRAME        = 0xC8,
48     QOS_CFPOLL            = 0xE8,
49     QOS_CFPOLL_ACK        = 0xF8,
50     BLOCKACK_REQ          = 0x84,
51     BLOCKACK              = 0x94
52 };
53 
54 typedef int (*sniffer_handler_t)(unsigned short data_len, void *data);
55 
56 int bes_sniffer_start(sniffer_handler_t handler);
57 int bes_sniffer_stop(void);
58 int bes_sniffer_set_channel(u8 channel);
59 int bes_sniffer_set_filter(u8 f_mgmt, u8 f_fromds, u8 f_tods, u8 f_error, u8 f_ack, u8 f_rts, u8 f_null);
60 int bes_sniffer_send_mgmt_frame(u8 channel, const u8 *data, size_t len);
61 
62 #endif
63