Skip to content

Commit 9dd1d58

Browse files
facchinmpennam
authored andcommitted
Import WHD component from TARGET_PSOC6
1 parent 98143e4 commit 9dd1d58

File tree

108 files changed

+182181
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

108 files changed

+182181
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
/*
2+
* This file is used to set the MAC address in NVRAM.
3+
* The MAC address of the Wi-Fi device may be configured in OTP and/or in NVRAM.
4+
* If both OTP and NVRAM contains the MAC address then OTP programmed MAC address will be used.
5+
* PSOC boards are usually programmed with OTP MAC address.
6+
* MAC address is printed during WHD power up
7+
*/
8+
9+
#define NVRAM_GENERATED_MAC_ADDRESS "macaddr=00:A0:50:6f:b2:ea"
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
/*
2+
* Copyright 2020 Cypress Semiconductor Corporation
3+
* SPDX-License-Identifier: Apache-2.0
4+
*
5+
* Licensed under the Apache License, Version 2.0 (the "License");
6+
* you may not use this file except in compliance with the License.
7+
* You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*/
17+
18+
/** @file whd.h
19+
* Provides abstract pointer type to act as instance for: driver, interface, buffer funcs, network funcs, resource funcs and bus funcs.
20+
*/
21+
22+
#include "whd_types.h"
23+
24+
#ifndef INCLUDED_WHD_H
25+
#define INCLUDED_WHD_H
26+
27+
#ifdef __cplusplus
28+
extern "C"
29+
{
30+
#endif
31+
32+
/**
33+
* Abstract pointer type that acts as a handle to an instance of the driver
34+
*/
35+
typedef struct whd_driver *whd_driver_t;
36+
37+
/**
38+
* Abstract pointer type to handle instance of whd interface
39+
*/
40+
typedef struct whd_interface *whd_interface_t;
41+
42+
/**
43+
* Abstract type that acts as a handle to an instance of a buffer function
44+
*/
45+
typedef struct whd_buffer_funcs whd_buffer_funcs_t;
46+
47+
/**
48+
* Abstract type that acts as a handle to an instance of a network interface function
49+
*/
50+
typedef struct whd_netif_funcs whd_netif_funcs_t;
51+
52+
/**
53+
* Abstract type that acts as a handle to an instance of a resource function
54+
*/
55+
typedef struct whd_resource_source whd_resource_source_t;
56+
57+
/**
58+
* Abstract type that acts as a handle to an instance of a bus function used for SDIO specific functionality
59+
*/
60+
typedef struct whd_bus_funcs whd_sdio_funcs_t;
61+
62+
/**
63+
* Abstract type that acts as a handle to an instance of a bus function used for SPI specific functionality
64+
*/
65+
typedef struct whd_bus_funcs whd_spi_funcs_t;
66+
67+
/**
68+
* Structure for storing WHD init configurations
69+
*/
70+
typedef struct whd_init_config
71+
{
72+
void *thread_stack_start; /**< Pointer to the WHD thread stack */
73+
uint32_t thread_stack_size; /**< Size of the WHD thread stack */
74+
uint32_t thread_priority; /**< Priority to be set to WHD Thread */
75+
whd_country_code_t country; /**< Variable to strore country code information */
76+
} whd_init_config_t;
77+
78+
#ifdef __cplusplus
79+
} /* extern "C" */
80+
#endif
81+
#endif /* INCLUDED_WHD_H */
82+
Lines changed: 226 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,226 @@
1+
/*
2+
* Copyright 2020 Cypress Semiconductor Corporation
3+
* SPDX-License-Identifier: Apache-2.0
4+
*
5+
* Licensed under the Apache License, Version 2.0 (the "License");
6+
* you may not use this file except in compliance with the License.
7+
* You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*/
17+
18+
/** @file whd_events.h
19+
* Header for Event detection
20+
*
21+
* Provides constants and prototypes for functions that allow
22+
* user applications to receive event callbacks and set event handlers
23+
*/
24+
#ifndef INCLUDED_WHD_EVENTS_API_H
25+
#define INCLUDED_WHD_EVENTS_API_H
26+
27+
#include "whd.h"
28+
29+
#ifdef __cplusplus
30+
extern "C"
31+
{
32+
#endif
33+
34+
/* List of events */
35+
#define WLC_E_NONE (0x7FFFFFFE) /**< Indicates the end of the event array list */
36+
37+
#define WLC_E_SET_SSID 0 /**< Indicates status of set SSID. This event occurs when STA tries to join the AP*/
38+
#define WLC_E_AUTH 3 /**< 802.11 AUTH request event occurs when STA tries to get authenticated with the AP */
39+
#define WLC_E_DEAUTH 5 /**< 802.11 DEAUTH request event occurs when the the SOFTAP is stopped to deuthenticate the connected stations*/
40+
#define WLC_E_DEAUTH_IND 6 /**< 802.11 DEAUTH indication event occurs when the STA gets deauthenticated by the AP */
41+
#define WLC_E_ASSOC 7 /**< 802.11 ASSOC request event occurs when STA joins the AP */
42+
#define WLC_E_ASSOC_IND 8 /**< 802.11 ASSOC indication occurs when a station joins the SOFTAP that is started */
43+
#define WLC_E_REASSOC 9 /**< 802.11 REASSOC request event when the STA again gets associated with the AP */
44+
#define WLC_E_REASSOC_IND 10 /**< 802.11 REASSOC indication occurs when a station again reassociates with the SOFTAP*/
45+
#define WLC_E_DISASSOC 11 /**< 802.11 DISASSOC request occurs when the STA the tries to leave the AP*/
46+
#define WLC_E_DISASSOC_IND 12 /**< 802.11 DISASSOC indication occurs when the connected station gets disassociates from SOFTAP,
47+
also when STA gets diassociated by the AP*/
48+
#define WLC_E_LINK 16 /**< generic link indication */
49+
#define WLC_E_PROBREQ_MSG 44 /**< Indicates probe request received for the SOFTAP started*/
50+
#define WLC_E_PSK_SUP 46 /**< WPA Handshake fail during association*/
51+
#define WLC_E_ACTION_FRAME 59 /**< Indicates Action frame Rx */
52+
#define WLC_E_ACTION_FRAME_COMPLETE 60 /**< Indicates Action frame Tx complete */
53+
#define WLC_E_ESCAN_RESULT 69 /**< escan result event occurs when we scan for the networks */
54+
55+
/* List of status codes - Applicable for any event type */
56+
#define WLC_E_STATUS_SUCCESS 0 /**< operation was successful */
57+
#define WLC_E_STATUS_FAIL 1 /**< operation failed */
58+
#define WLC_E_STATUS_TIMEOUT 2 /**< operation timed out */
59+
#define WLC_E_STATUS_NO_NETWORKS 3 /**< failed due to no matching network found */
60+
#define WLC_E_STATUS_ABORT 4 /**< operation was aborted */
61+
#define WLC_E_STATUS_NO_ACK 5 /**< protocol failure: packet not ack'd */
62+
#define WLC_E_STATUS_UNSOLICITED 6 /**< AUTH or ASSOC packet was unsolicited */
63+
#define WLC_E_STATUS_ATTEMPT 7 /**< attempt to assoc to an auto auth configuration */
64+
#define WLC_E_STATUS_PARTIAL 8 /**< scan results are incomplete */
65+
#define WLC_E_STATUS_NEWSCAN 9 /**< scan aborted by another scan */
66+
#define WLC_E_STATUS_NEWASSOC 10 /**< scan aborted due to assoc in progress */
67+
#define WLC_E_STATUS_11HQUIET 11 /**< 802.11h quiet period started */
68+
#define WLC_E_STATUS_SUPPRESS 12 /**< user disabled scanning (WLC_SET_SCANSUPPRESS) */
69+
#define WLC_E_STATUS_NOCHANS 13 /**< no allowable channels to scan */
70+
#define WLC_E_STATUS_CCXFASTRM 14 /**< scan aborted due to CCX fast roam */
71+
#define WLC_E_STATUS_CS_ABORT 15 /**< abort channel select */
72+
#define WLC_E_STATUS_ERROR 16 /**< request failed due to error */
73+
#define WLC_E_STATUS_INVALID 0xff /**< Invalid status code to init variables. */
74+
75+
#define WLC_SUP_STATUS_OFFSET (256) /**< Status offset added to the status codes to match the values from firmware. */
76+
77+
/**
78+
* @brief Status code for event WLC_E_PSK_SUP
79+
*
80+
* -Basic supplicant authentication states
81+
*
82+
+ WLC_SUP_DISCONNECTED
83+
* + WLC_SUP_CONNECTING
84+
* + WLC_SUP_IDREQUIRED
85+
* + WLC_SUP_AUTHENTICATING
86+
* + WLC_SUP_AUTHENTICATED
87+
* + WLC_SUP_KEYXCHANGE
88+
* + WLC_SUP_KEYED
89+
* + WLC_SUP_TIMEOUT
90+
* + WLC_SUP_LAST_BASIC_STATE
91+
* -Extended supplicant authentication states
92+
* + WLC_SUP_KEYXCHANGE_WAIT_M1
93+
* + WLC_SUP_KEYXCHANGE_PREP_M2
94+
* + WLC_SUP_KEYXCHANGE_WAIT_M3
95+
* + WLC_SUP_KEYXCHANGE_PREP_M4
96+
* + WLC_SUP_KEYXCHANGE_WAIT_G1
97+
* + WLC_SUP_KEYXCHANGE_PREP_G2
98+
*/
99+
typedef enum sup_auth_status
100+
{
101+
WLC_SUP_DISCONNECTED = 0 + WLC_SUP_STATUS_OFFSET, /**< Disconnected */
102+
WLC_SUP_CONNECTING = 1 + WLC_SUP_STATUS_OFFSET, /**< Connecting */
103+
WLC_SUP_IDREQUIRED = 2 + WLC_SUP_STATUS_OFFSET, /**< ID Required */
104+
WLC_SUP_AUTHENTICATING = 3 + WLC_SUP_STATUS_OFFSET, /**< Authenticating */
105+
WLC_SUP_AUTHENTICATED = 4 + WLC_SUP_STATUS_OFFSET, /**< Authenticated */
106+
WLC_SUP_KEYXCHANGE = 5 + WLC_SUP_STATUS_OFFSET, /**< Key Exchange */
107+
WLC_SUP_KEYED = 6 + WLC_SUP_STATUS_OFFSET, /**< Key Exchanged */
108+
WLC_SUP_TIMEOUT = 7 + WLC_SUP_STATUS_OFFSET, /**< Timeout */
109+
WLC_SUP_LAST_BASIC_STATE = 8 + WLC_SUP_STATUS_OFFSET, /**< Last Basic State */
110+
WLC_SUP_KEYXCHANGE_WAIT_M1 = WLC_SUP_AUTHENTICATED, /**< Waiting to receive handshake msg M1 */
111+
WLC_SUP_KEYXCHANGE_PREP_M2 = WLC_SUP_KEYXCHANGE, /**< Preparing to send handshake msg M2 */
112+
WLC_SUP_KEYXCHANGE_WAIT_M3 = WLC_SUP_LAST_BASIC_STATE, /**< Waiting to receive handshake msg M3 */
113+
WLC_SUP_KEYXCHANGE_PREP_M4 = 9 + WLC_SUP_STATUS_OFFSET, /**< Preparing to send handshake msg M4 */
114+
WLC_SUP_KEYXCHANGE_WAIT_G1 = 10 + WLC_SUP_STATUS_OFFSET, /**< Waiting to receive handshake msg G1 */
115+
WLC_SUP_KEYXCHANGE_PREP_G2 = 11 + WLC_SUP_STATUS_OFFSET /**< Preparing to send handshake msg G2 */
116+
} sup_auth_status_t;
117+
118+
#define WHD_MSG_IFNAME_MAX 16 /**< Max length of Interface name */
119+
120+
#pragma pack(1)
121+
122+
/**
123+
* Structure to store ethernet header fields in event packets
124+
*/
125+
typedef struct whd_event_eth_hdr
126+
{
127+
uint16_t subtype; /**< Vendor specific..32769 */
128+
uint16_t length; /**< Length of ethernet header*/
129+
uint8_t version; /**< Version is 0 */
130+
uint8_t oui[3]; /**< Organizationally Unique Identifier */
131+
uint16_t usr_subtype; /**< User specific data */
132+
} whd_event_eth_hdr_t;
133+
134+
/**
135+
* Structure to store ethernet destination, source and ethertype in event packets
136+
*/
137+
typedef struct whd_event_ether_header
138+
{
139+
whd_mac_t destination_address; /**< Ethernet destination address */
140+
whd_mac_t source_address; /**< Ethernet source address */
141+
uint16_t ethertype; /**< Ethertype for identifying event packets */
142+
} whd_event_ether_header_t;
143+
144+
/**
145+
* Structure to store fields after ethernet header in event message
146+
*/
147+
struct whd_event_msg
148+
{
149+
uint16_t version; /**< Version */
150+
uint16_t flags; /**< see flags below */
151+
uint32_t event_type; /**< Event type indicating a response from firmware for IOCTLs/IOVARs sent */
152+
uint32_t status; /**< Status code corresponding to any event type */
153+
uint32_t reason; /**< Reason code associated with the event occurred */
154+
uint32_t auth_type; /**< WLC_E_AUTH: 802.11 AUTH request */
155+
uint32_t datalen; /**< Length of data in event message */
156+
whd_mac_t addr; /**< Station address (if applicable) */
157+
char ifname[WHD_MSG_IFNAME_MAX]; /**< name of the incoming packet interface */
158+
uint8_t ifidx; /**< destination OS i/f index */
159+
uint8_t bsscfgidx; /**< source bsscfg index */
160+
};
161+
162+
/**
163+
* Event structure used by driver msgs
164+
*/
165+
typedef struct whd_event
166+
{
167+
whd_event_ether_header_t eth; /**< Variable to store ethernet destination, source and ethertype in event packets */
168+
whd_event_eth_hdr_t eth_evt_hdr; /**< Variable to store ethernet header fields in event message */
169+
whd_event_header_t whd_event; /**< Variable to store rest of the event packet fields after ethernet header */
170+
/* data portion follows */
171+
} whd_event_t;
172+
173+
#pragma pack()
174+
175+
/** @addtogroup event WHD Event handling API
176+
* Functions that allow user applications to receive event callbacks and set event handlers
177+
* @{
178+
*/
179+
/** Event handler prototype definition
180+
*
181+
* @param ifp Pointer to handle instance of whd interface
182+
* @param event_header whd event header
183+
* @param event_data event data
184+
* @param handler_user_data semaphore data
185+
*/
186+
typedef void *(*whd_event_handler_t)(whd_interface_t ifp, const whd_event_header_t *event_header,
187+
const uint8_t *event_data, void *handler_user_data);
188+
189+
/** Registers a handler to receive event callbacks.
190+
*
191+
* This function registers a callback handler to be notified when
192+
* a particular event is received.
193+
*
194+
*
195+
* @note Currently each event may only be registered to one handler and there is a limit to the number of simultaneously
196+
* registered events. Maximum of 5 event handlers can registered simultaneously, this also includes the internal
197+
* event handler registration which happens during scan, join and starting an AP.
198+
*
199+
* @param ifp Pointer to handle instance of whd interface
200+
* @param event_type Pointer to the event list array
201+
* @param handler_func A function pointer to the handler callback
202+
* @param handler_user_data A pointer value which will be passed to the event handler function
203+
* at the time an event is triggered (NULL is allowed)
204+
* @param event_index Entry where the event handler is registered in the list
205+
*
206+
* @return WHD_SUCCESS or Error code
207+
*/
208+
uint32_t whd_wifi_set_event_handler(whd_interface_t ifp, const uint32_t *event_type, whd_event_handler_t handler_func,
209+
void *handler_user_data, uint16_t *event_index);
210+
/* @} */
211+
212+
/** Delete/Deregister the event entry where callback is registered
213+
*
214+
* @param ifp Pointer to handle instance of whd interface
215+
* @param event_index Event index obtained during registration by whd_wifi_set_event_handler
216+
*
217+
* @return WHD_SUCCESS or Error code
218+
*/
219+
220+
uint32_t whd_wifi_deregister_event_handler(whd_interface_t ifp, uint16_t event_index);
221+
222+
#ifdef __cplusplus
223+
} /* extern "C" */
224+
#endif
225+
#endif /* ifndef */
226+

0 commit comments

Comments
 (0)