/* * Copyright 2019, Cypress Semiconductor Corporation or a subsidiary of * Cypress Semiconductor Corporation. All Rights Reserved. * * This software, associated documentation and materials ("Software") * is owned by Cypress Semiconductor Corporation, * or one of its subsidiaries ("Cypress") and is protected by and subject to * worldwide patent protection (United States and foreign), * United States copyright laws and international treaty provisions. * Therefore, you may use this Software only as provided in the license * agreement accompanying the software package from which you * obtained this Software ("EULA"). * If no EULA applies, Cypress hereby grants you a personal, non-exclusive, * non-transferable license to copy, modify, and compile the Software * source code solely for use in connection with Cypress's * integrated circuit products. Any reproduction, modification, translation, * compilation, or representation of this Software except as specified * above is prohibited without the express written permission of Cypress. * * Disclaimer: THIS SOFTWARE IS PROVIDED AS-IS, WITH NO WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, NONINFRINGEMENT, IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Cypress * reserves the right to make changes to the Software without notice. Cypress * does not assume any liability arising out of the application or use of the * Software or any product or circuit described in the Software. Cypress does * not authorize its products for use in any products where a malfunction or * failure of the Cypress product may reasonably be expected to result in * significant property damage, injury or death ("High Risk Product"). By * including Cypress's product in a High Risk Product, the manufacturer * of such system or application assumes all risk of such use and in doing * so agrees to indemnify Cypress against all liability. */ /** @file * Prototypes of functions for controlling the Wi-Fi system sleep and wake functionality * */ #ifndef INCLUDED_WWD_WIFI_SLEEP_H #define INCLUDED_WWD_WIFI_SLEEP_H #ifdef __cplusplus extern "C" { #endif /** ****************************************************************************** * Deep Sleep 1 (DS1) types */ typedef enum { STATE_DS_DISABLED = 0, STATE_DS_ENABLING = 1, STATE_DS_ENABLED = 2, STATE_DS_DISABLING = 3 } wwd_ds_state_t; /* user_parameter is specified when registering for callback */ typedef void (*wwd_ds1_state_change_callback_t)( void* user_parameter ); /** ****************************************************************************** * Deep Sleep 1 (DS1) functions */ /* Begin process of entering deep sleep */ extern wwd_result_t wwd_wifi_enter_ds1( wwd_interface_t interface, uint32_t ulp_wait_milliseconds ); /* Determine if FW caused wake; process it if so */ extern wwd_result_t wwd_wifi_ds1_wake_handle( wiced_bool_t force ); /* Attempt to disable DS1 and clear wowl */ extern wwd_result_t wwd_wifi_ds1_disable( wwd_interface_t interface ); /* Called by Other modules in WWD to report a DS entry event */ extern void* wwd_wifi_event_ulp_handler( const wwd_event_header_t* event_header, const uint8_t* event_data, /*@returned@*/ void* handler_user_data ); /* Register a callback for deep sleep state changes; current state can then be queried */ extern wwd_result_t wwd_wifi_ds1_set_state_change_callback( wwd_ds1_state_change_callback_t callback, void *user_parameter ); /* Get current DS1 state */ extern wwd_ds_state_t wwd_wifi_ds1_get_state( void ); /* Return status as a string */ void wwd_wifi_ds1_get_status_string( uint8_t *output, uint16_t max_output_length ); /** ****************************************************************************** * Wake On Wireless LAN (WOWL) functions */ /* Enable Wake on Wireless and add 1 or more of: patterns, host_ip, or keep alive to trigger Wake */ extern wwd_result_t wwd_wifi_wowl_enable( wwd_interface_t interface, uint32_t wowl_caps, uint32_t wowl_os, wl_mkeep_alive_pkt_t *wowl_keepalive_data, uint8_t *pattern_data, uint32_t pattern_data_size, uint32_t *arp_host_ip_v4_address ); /* Disable WOWL and clear any settings */ extern wwd_result_t wwd_wifi_wowl_disable( wwd_interface_t interface ); #ifdef __cplusplus } /* extern "C" */ #endif #endif /* INCLUDED_WWD_WIFI_SLEEP_H */