Skip to content
/ lpa Public

Low Power Assistant Middleware Library

License

Notifications You must be signed in to change notification settings

Infineon/lpa

Repository files navigation

Low Power Assistant (LPA) middleware library

Overview

The LPA middleware for Wi-Fi provides an easy way to make the low-power features available to developers in the form of a portable configuration layer. It provides features implementing low power functionality for MCUs, Wi-Fi, and Bluetooth®; however, the LPA library only needs to be included in applications that use low-power Wi-Fi operation.

The LPA middleware is essentially a Wi-Fi offload manager that is instantiated when Wi-Fi Connection Manager (WCM) initialization is done. The offload manager manages the offload configurations which are created using the Device Configurator. The Device Configurator consists of pin configurations for CYBSP_WIFI_HOST_WAKE, CYBSP_WIFI_DEVICE_WAKE, CYBSP_BT_HOST_WAKE, and CYBSP_BT_DEVICE_WAKE and the offload configurations.

Note: Pin configurations are not applicable for CYW955913EVK-01.

The LPA middleware library consists of the following components:

  • Configurator tool (using a personality), which makes the low-power features of the system easy to use. This personality writes data structures; after the configuration is saved, it generates cycfg_connectivity_wifi.h,cycfg_connectivity_wifi.c for PSoC™ 6 and cycfg_peripherals.h, cycfg_peripherals.c for CYW955913EVK-01 based on the settings made in the Device Configurator. See the ModusToolbox™ Device Configurator tool guide.

  • The generated source files are compiled and linked in the executable. The API in the generated source will be invoked at system initialization.

Features

  • MCU low power
  • Wi-Fi and Bluetooth® low power
  • Wi-Fi Address Resolution Protocol (ARP) offload
  • Wi-Fi packet filter offload
  • Wi-Fi TCP keepalive offload
  • DHCP Lease Time Renew Offload
  • ICMP Offload
  • Neighbor Discovery Offload
  • NULL Keppalive Offload
  • NAT Keepalive Offload
  • Wake on Wireless LAN
  • MQTT Keepalive Offload
  • Bluetooth® Low Power

For more release-specific information, see RELEASE.md

Note: CYW955913EVK-01 currently supports only ARP offload, packet filter offload and TCP keepalive offload.

Requirements

Supported platforms

This library and its features are supported on the following Infineon platforms:

Limitations

See the Low Power Assistant Middleware Library Limitations.

Dependent libraries

  • wifi-core-freertos-lwip-mbedtls: To use the LPA library with FreeRTOS, the application should pull the wifi-core-freertos-lwip-mbedtls library which will internally pull wifi-connection-manager, FreeRTOS, lwIP, mbed TLS, and other dependent modules.

  • wifi-core-threadx-cat5: To use the LPA library with ThreadX (Currently supported only on CYW955913EVK-01), the application should pull the wifi-core-threadx-cat5 library which will internally pull wifi-connection-manager and other dependent modules.

Quick start

The LPA could be configured using the ModusToolbox™ MCU, Wi-Fi, and Bluetooth® personalities. See the Low Power Assistant middleware library configuration considerations.

FreeRTOS

See wifi-core-freertos-lwip-mbedtls README Quick start section for basic Makefile changes required .

MCU Deep Sleep Functionality is enabled by default in FreeRTOSConfig.h as follows:

#include <cycfg_system.h>
#if (CY_CFG_PWR_SYS_IDLE_MODE == CY_CFG_PWR_MODE_SLEEP) || (CY_CFG_PWR_SYS_IDLE_MODE == CY_CFG_PWR_MODE_DEEPSLEEP)
extern void vApplicationSleep( uint32_t xExpectedIdleTime );
#define portSUPPRESS_TICKS_AND_SLEEP( xIdleTime ) vApplicationSleep( xIdleTime )
#define configUSE_TICKLESS_IDLE  2
#endif

/* Deep Sleep Latency Configuration */
#if CY_CFG_PWR_DEEPSLEEP_LATENCY > 0
#define configEXPECTED_IDLE_TIME_BEFORE_SLEEP   CY_CFG_PWR_DEEPSLEEP_LATENCY
#endif

ThreadX

Currently ThreadX is supported only on CYW955913EVK-01.

See wifi-core-threadx-cat5 README Quick start section for basic Makefile changes required .

MCU Deep Sleep Functionality is enabled by default in CYW955913EVK-01

Debugging

For Debugging, the application may enable debug, log, and error log messages by updating ol_log_level[] with LOG_OLA_LVL_DEBUG.

ol_log_level[LOG_OLA_OLM] = LOG_OLA_LVL_DEBUG;
ol_log_level[LOG_OLA_ARP] = LOG_OLA_LVL_DEBUG;
ol_log_level[LOG_OLA_PF]  = LOG_OLA_LVL_DEBUG;
ol_log_level[LOG_OLA_TKO] = LOG_OLA_LVL_DEBUG;

More information

The following resources contain more information:


All other trademarks or registered trademarks referenced herein are the property of their respective owners.

The Bluetooth® word mark and logos are registered trademarks owned by Bluetooth SIG, Inc., and any use of such marks by Infineon is under license.