2 * OS independent remote wl declarations
4 * Copyright (C) 2010, Broadcom Corporation
7 * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Broadcom Corporation;
8 * the contents of this file may not be disclosed to third parties, copied
9 * or duplicated in any form, in whole or in part, without the prior
10 * written permission of Broadcom Corporation.
12 * $Id: wlu_remote.h,v 1.19 2010-01-27 08:57:35 Exp $
17 /* Remote wl declararions */
19 #define REMOTE_SERIAL 1
20 #define REMOTE_SOCKET 2
22 #define REMOTE_DONGLE 4
23 #define SHELL_CMD -1 /* Invalid cmd id for shell */
24 #define ASD_CMD -2 /* Cmd id for ASD command */
25 #define SERVER_RESPONSE_MAX_BUF_LEN 8192
26 #define SHELL_RESP_SIZE 1024
27 #define CTRLC_PACKET 0xDEADBEAF
29 #define VISTA_CMD -3 /* cmd id for remote vista */
31 /* For cross OS support */
38 /* Used in cdc_ioctl_t.flags field */
39 #define REMOTE_SET_IOCTL 1
40 #define REMOTE_GET_IOCTL 2
41 #define REMOTE_REPLY 4
42 #define REMOTE_SHELL_CMD 8
43 #define REMOTE_FINDSERVER_IOCTL 16 /* Find remote server */
44 #define REMOTE_ASD_CMD 32 /* ASD integration */
45 #define RDHD_SET_IOCTL 64
46 #define RDHD_GET_IOCTL 128
47 #define REMOTE_VISTA_CMD 256 /* for remote vista specific commands */
48 #define RWL_WIFI_DEFAULT_TYPE 0x00
49 #define RWL_WIFI_DEFAULT_SUBTYPE 0x00
50 #define RWL_ACTION_FRAME_DATA_SIZE 1024 /* fixed size for the wifi frame data */
51 #define RWL_WIFI_CDC_HEADER_OFFSET 0
52 #define RWL_WIFI_FRAG_DATA_SIZE 960 /* max size of the frag data */
53 #define RWL_DEFAULT_WIFI_FRAG_COUNT 127 /* maximum fragment count */
54 #define RWL_WIFI_RETRY 5 /* CMD retry count for wifi */
55 #define RWL_WIFI_RX_RETRY 20 /* WIFI response rerty count */
56 #define RWL_WIFI_SEND 5 /* WIFI frame sent count */
57 #define RWL_WIFI_RETRY_DELAY 1000 /* wifi specific retry delay */
58 #define RWL_WIFI_SEND_DELAY 100 /* delay between two frames */
59 #define RWL_WIFI_RX_DELAY 250 /* wait between send and receive */
60 #define RWL_WIFI_RX_SHELL_DELAY 1000 /* delay added for shell cmd response read */
61 #define RWL_CHANNEL_RX_SCAN_DELAY 10 /* Delay between findserver rx calls */
62 #define RWL_CHANNEL_SCAN_WAIT 250 /* Sleep time in between the channel scans */
63 #define RWL_WIFI_BUF_LEN 64
64 #define RWL_WIFI_SHELL_CMD 1
65 #define RWL_WIFI_WL_CMD 0
66 #define RWL_WIFI_FIND_SER_CMD "findserver"
67 #define RWL_WIFI_ACTION_CMD "wifiaction"
68 #define RWL_WIFI_GET_ACTION_CMD "rwlwifivsaction"
69 #define RWL_DONGLE_SET_CMD "dongleset"
70 #define DATA_FRAME_LEN 960
71 /* wl & shell cmd work fine for 960 (512+256+128+64) */
75 * Information about the action frame data fields in the
76 * dot11_action_wifi_vendor_specific
77 * cdc struct (1 to 16. This does not include status flag. Since this
78 * is not directly visible to the driver code we cant use sizeof struct
79 * cdc_ioctl_t. Hence Ref MAC address offset starts from byte 17.
80 * REF MAC ADDR (6 bytes (MAC Address len) from byte 17 to 22)
81 * DUT MAC ADDR (6 bytes after the REF MAC Address byte 23 to 28)
82 * unused (byte 29 to 49)
83 * REF/Client Channel offset (50)
84 * DUT/Server channel offset (51)
85 * ---------------------------------------------------------------------------------------
86 * cdc struct|REF MAC ADDR|DUT_MAC_ADDR|un used|REF Channel|DUT channel|Action frame Data|
87 * 1---------17-----------23-------------------50----------51----------52----------------1040
88 * REF MAC addr after CDC struct without status flag (status flag not used by wifi)
90 #define RWL_ACTION_WIFI_CATEGORY 127 /* Vendor Specific category value for wifi */
91 #define RWL_REF_MAC_ADDRESS_OFFSET 17
92 #define RWL_DUT_MAC_ADDRESS_OFFSET 23
93 #define RWL_WIFI_CLIENT_CHANNEL_OFFSET 50
94 #define RWL_WIFI_SERVER_CHANNEL_OFFSET 51
99 #define SERIAL_PORT_ERR -3
101 #define DEFAULT_SERVER_PORT 8000
103 #define WL_MAX_BUF_LEN (127 * 1024)
104 #define MAX_VISTA_ARGC 10
105 #define HOST_TO_NETWORK TRUE
106 #define NETWORK_TO_HOST FALSE
112 /* We don't want the server to allocate bigger buffers for some of the commands
113 * like scanresults. Server can still allocate 8K memory and send the response
114 * in fragments. This is used in case of Get commands only.
116 #define SERVER_RESPONSE_MAX_BUF_LEN 8192
117 /* Used to set the cmds for wifi specific init */
118 typedef struct remote_wifi_cmds
{
119 uint32 cmd
; /* common ioctl definition */
120 char *data
; /* max size of the data length */
122 } remote_wifi_cmds_t
;
124 /* Added for debug utility support */
126 #define OUTPUT stdout
128 #define DEBUG_DEFAULT 0x0001
129 #define DEBUG_ERR 0x0001
130 #define DEBUG_INFO 0x0002
131 #define DEBUG_DBG 0x0004
133 #define DPRINT_ERR if (defined_debug & DEBUG_ERR) \
135 #define DPRINT_INFO if (defined_debug & DEBUG_INFO) \
137 #define DPRINT_DBG if (defined_debug & DEBUG_DBG) \
139 extern unsigned short defined_debug
;
141 #define IPV4_ADDR_LEN 4
142 /* IPV4 packet formats */
144 uint8 addr
[IPV4_ADDR_LEN
];
146 /* Function defined in wlu.c for client and wlu_server_ce.c for server */
147 extern int wl_atoip(const char *a
, struct ipv4_addr
*n
);
149 /* Function defined to do host to network and network to host conversions */
150 void rwl_swap_header(rem_ioctl_t
*rem_ptr
, bool host_to_network
);
152 /* Macros to access remote type */
153 extern int remote_type
;
154 #define rwl_get_remote_type() (remote_type)
155 #define rwl_set_remote_type(type) (remote_type = type)
157 /* Macros to access server IP and port globals */
158 extern char *g_rwl_servIP
;
159 #define rwl_get_server_ip() (g_rwl_servIP)
160 #define rwl_set_server_ip(ip) (g_rwl_servIP = ip)
161 extern unsigned short g_rwl_servport
;
162 #define rwl_get_server_port() (g_rwl_servport)
163 #define rwl_set_server_port(port) (g_rwl_servport = port)
165 extern int rwl_connectsocket(int SocketDes
, struct sockaddr
* SerAddr
, int SizeOfAddr
);
166 extern int rwl_send_to_streamsocket(int SocketDes
, const char* SendBuff
, int data_size
, int Flag
);
167 extern int rwl_receive_from_streamsocket(int SocketDes
, char* RecvBuff
, int data_size
, int Flag
);
168 extern int rwl_read_serial_port(void* hndle
, char* read_buf
, uint data_size
, uint
*numread
);
169 extern int rwl_write_serial_port(void* hndle
, char* write_buf
, unsigned long size
,
170 unsigned long *numwritten
);
171 extern void rwl_sleep(int delay
);
172 extern void* rwl_open_transport(int remote_type
, char *port
, int ReadTotalTimeout
, int debug
);
173 extern int rwl_close_transport(int remote_type
, void * handle
);
174 extern int rwl_poll_serial_buffer(void *hndle
);
175 extern int rwl_serial_handle_timeout(void);
176 extern void rwl_sync_delay(uint noframes
);
177 extern int rwl_init_server_socket_setup(int argc
, char** argv
, uint remote_type
);
179 extern int rwl_GetifAddr(char *ifname
, struct sockaddr_in
* sa
);
180 extern int rwl_acceptconnection(int SocketDes
, struct sockaddr
*ClientAddr
, int *SizeOfAddr
);
181 extern int set_interface(void *wl
, char *intf_name
);
182 /* Linux specific function in wlu_pipe_linux.c */
183 extern int rwl_get_if_addr(char *ifname
, struct sockaddr_in
*sa
);
185 /* Win32 specific function wlu_pipe_win32.c */
186 extern int rwl_init_ws2_32dll(void);
187 extern int rwl_terminate_ws2_32dll(void);
189 /* Function definitions for wlu_client_shared.c and wlu_server_shared.c */
190 extern int rwl_var_getbuf(void *wl
, const char *iovar
, void *param
, int param_len
, void **bufptr
);
191 extern int rwl_var_setbuf(void *wl
, const char *iovar
, void *param
, int param_len
);
192 extern int rwl_var_send_vs_actionframe(void* wl
, const char* iovar
, void* param
, int param_len
);
194 /* Function definitions for wlu_ndis.c/wlu_linux.c and wlu_server_ce.c/wlu_server_linux.c */
195 extern int wl_get(void *wl
, int cmd
, void *buf
, int len
);
196 extern int wl_set(void *wl
, int cmd
, void *buf
, int len
);
198 typedef unsigned char BYTE
;
199 extern void wfa_dut_init(BYTE
**tBuf
, BYTE
**rBuf
, BYTE
**paBuf
, BYTE
**cBuf
, struct timeval
**);
200 extern int remote_asd_exec(unsigned char* command
, int* cmd_len
);
201 void wfa_dut_deinit(void);
203 extern int get_ctrlc_header(void *wl
);
204 extern int remote_tx_response(void *wl
, void *buf_ptr
, int cmd
);
205 extern rem_ioctl_t
*g_rem_ptr
;
206 extern int g_rwl_hndle
;
207 /* Variable to indiate if the server child has completed execution */
208 extern volatile sig_atomic_t g_sig_chld
;
211 * Separate paths are defined for android and linux machines
212 * / filesystem on android is read only memory
215 #ifdef TARGETENV_android
216 #define SH_PATH "/data/busybox/sh"
217 #define SHELL_RESP_PATH "/data/local/RWL/" /* Default path for storing files for shell response */
218 #define TEMPLATE "/data/local/RWL/SyncXXXXXX"
220 #define SHELL_RESP_PATH "/tmp/RWL/" /* Default path for storing files for shell response */
221 #define TEMPLATE "/tmp/RWL/SyncXXXXXX"
222 #define SH_PATH "/bin/sh"
225 #endif /* _wlu_remote_h */