WiFi middleware core
Overview

This library comprises the core components needed for Wi-Fi connectivity support - bundles FreeRTOS, lwIP TCP/IP stack, mbed TLS for security, Wi-Fi host driver (WHD), Secure Sockets interface configuration files, and associated code to bind these components together.The ModusToolbox™ Wi-Fi code examples download this library automatically, so you don't need to.

Features and functionality

The following components are part of this library. These components are bundled as ".lib" entries; each ".lib" points to the respective repositories, where they are hosted. All but lwIP and mbed TLS libraries are hosted on Cypress' GitHub repository. lwIP and mbed TLS libraries are hosted on their respective external repositories.

  • Wi-Fi Host Driver (WHD) - Embedded Wi-Fi host driver that provides a set of APIs to interact with Cypress WLAN chips. See Wi-Fi host driver(WHD) for details.
  • FreeRTOS for Infineon MCUs - FreeRTOS kernel, distributed as standard C source files with the configuration header file, for use with the Infineon MCUs. See the Readme for details.
  • The CLib FreeRTOS Support Library - This library provides the necessary hooks to make C library functions such as malloc and free thread-safe. This implementation is specific to FreeRTOS and requires it to be present to build. See CLib FreeRTOS Support Library.
  • lwIP - A Lightweight open-source TCP/IP stack, version: 2.1.2. See lwIP.
    Note
    Using this library in a project will cause lwIP to be downloaded on your computer. It is your responsibility to understand and accept the lwIP license
  • mbed TLS - An open source, portable, easy to use, readable and flexible SSL library that has cryptographic capabilities, version: 2.25.0. See mbed TLS.
    Note
    Using this library in a project will cause mbed TLS to be downloaded on your computer. It is your responsibility to understand and accept the mbed TLS license and regional use restrictions (including abiding by all applicable export control laws).
  • mbedTLS Crypto acceleration for CAT1A, CAT1B & CAT1C MCUs - This repository contains mbedTLS hardware accelerated basic cryptography implemented for CAT1A, CAT1B & CAT1C MCUs.
  • RTOS Abstraction Layer - The RTOS Abstraction APIs allow middleware to be written to be RTOS aware, but without depending on any particular RTOS. See RTOS Abstraction Layer.
  • Secure Sockets - Network abstraction APIs for underlying lwIP network stack and mbed TLS security library. Secure Sockets library eases application development by exposing a socket-like interface for both secure and non-secure socket communication. See Secure Sockets.
  • Predefined configuration files for FreeRTOS, lwIP and mbed TLS for typical embedded IoT use-cases. See the "Quick Start" section for details.
  • Associated glue layer between lwIP and WHD

This library is designed to work with PSoC 6 kits with Wi-Fi capability, supported through the ModusToolbox™ software environment.

In order to enable Wi-Fi connectivity on platforms with smaller memory footprint, a set of LwIP and MbedTLS configuration parameters that can be enabled/disabled have been documented here Optimization of Wi-Fi Middleware Core

Supported Platforms

This library and its features are supported on the following PSoC™ 6 platforms:

PSoC™ 6 Wi-Fi Bluetooth® prototyping kit (CY8CPROTO-062-4343W)

PSoC™ 62S2 Wi-Fi Bluetooth® pioneer kit (CY8CKIT-062S2-43012)

PSoC™ 6 Wi-Fi Bluetooth® pioneer kit (CY8CKIT-062-WiFi-BT)

PSoC™ 64S0S2 Wi-Fi Bluetooth® pioneer kit (CY8CKIT-064S0S2-4343W)

PSoC™ 62S2 evaluation kit (CY8CEVAL-062S2-LAI-4373M2)

CYW954907AEVAL1F Evaluation Kit(CYW954907AEVAL1F)

CYW943907AEVAL1F Evaluation Kit(CYW943907AEVAL1F)

PSoC™ 62S2 evaluation kit (CY8CEVAL-062S2-MUR-43439M2)

Quick Start

  • A set of pre-defined configuration files have been bundled with this library for FreeRTOS, lwIP, and mbed TLS. These files are located in the configs folder. You should do the following:
    • Copy the lwipopts.h, and mbedtls_user_config.h files from the configs directory to the top-level code example directory in the project.
    • Configure the MBEDTLS_USER_CONFIG_FILE C macro to "mbedtls_user_config.h" in the Makefile to provide the user configuration to the mbed TLS library. The Makefile entry should look like as follows:
      DEFINES+=MBEDTLS_USER_CONFIG_FILE='"mbedtls_user_config.h"'
    • Add the CYBSP_WIFI_CAPABLE build configuration to enable Wi-Fi functionality. The Makefile entry should look like as follows:
      DEFINES+=CYBSP_WIFI_CAPABLE
    • Add the CY_RTOS_AWARE build configuration to inform the HAL that an RTOS environment is being used. The Makefile entry should look like as follows:
      DEFINES+=CY_RTOS_AWARE
    • If your application uses automatic private IP addressing (Auto IP), enable LWIP_AUTOIP and LWIP_DHCP_AUTOIP_COOP in lwipopts.h like as follows:
      #define AUTOIP 1
      #define LWIP_DHCP_AUTOIP_COOP 1
    • Add the following to COMPONENTS in the code example project's Makefile: FREERTOS, LWIP, and MBEDTLS.

      COMPONENTS=FREERTOS LWIP MBEDTLS
      Note
      PSOC6HAL and either 43012 or 4343W are necessary for the library depending on the platform used, but these are already included in BSP's Makefile. Hence no need to include them here again.
    • By default, the wifi-mw-core library enables mbedtls alternate implementation for the cryptographic operations supported by cy-mbedtls-acceleration module. Do the following to disable the mbedtls alternate implementation:
      DEFINES+=DISABLE_MBEDTLS_ACCELERATION
    • The cy-mbedtls-acceleration module included in wifi-mw-core library, enables mbed TLS ALT configurations for the crypto operations supported by the platform. Even if all the crypto operations under mbedTLS ALT config are not supported by the platform, the cy-mbedtls-acceleration module enables the mbedTLS ALT config. For example, even though all the eliptic curves are not supported, it enables MBEDTLS_ECP_ALT. In such cases, it is user's responsibility to disable the mbed TLS ALT config to use the mbed TLS software crypto. For example, if the user enables a cipher-suite that involes in eliptic curve crypto operation that is not supported by cy-mbedtls-acceleration, then he need to disable the MBEDTLS_ECP_ALT config. To know the supported hardware crypto operations, See mbedTLS Crypto acceleration for CAT1A, CAT1B & CAT1C MCUs documentation.
    • The wifi-mw-core library disables all debug log messages by default. Do the following to enable log messages:
      • Add the ENABLE_WIFI_MIDDLEWARE_LOGS macro to the DEFINES in the code example's Makefile. The Makefile entry should look like as follows:
        DEFINES+=ENABLE_WIFI_MIDDLEWARE_LOGS
      • Call the cy_log_init() function provided by the cy-log module. cy-log is part of the connectivity-utilities library. See connectivity-utilities library API documentation for cy-log details.
  • Secure Sockets, lwIP, and mbed TLS libraries contain reference and test applications. For these applications to not conflict with the code examples, a .cyignore file is also included with this library.