Skip to content

This code example demonstrates the maximum throughput (using GATT layer notification and GATT write command) that can be achieved with Infineon® PSoC™ 6 MCU with AIROC™ Bluetooth® LE, AIROC™ CYW20829, and AIROC™ Wi-Fi & Bluetooth® combo SoC devices.

License

Infineon/mtb-example-btstack-freertos-throughput-server

Repository files navigation

BTSTACK: Bluetooth® LE GATT Server Throughput

This code example demonstrates the maximum throughput (using GATT layer notification and GATT write command) that can be achieved with Infineon PSoC™ 6 MCU with AIROC™ Bluetooth® LE, AIROC™ CYW89829, and AIROC™ CYW20829 Bluetooth® LE SoC devices.

This application sends GATT notifications and calculates the Bluetooth® LE Tx throughput and receives GATT write command and calculates the Bluetooth® LE Rx throughput.

View this README on GitHub.

Provide feedback on this code example.

Requirements

Supported toolchains (make variable 'TOOLCHAIN')

  • GNU Arm® Embedded Compiler v10.3.1 (GCC_ARM) – Default value of TOOLCHAIN
  • Arm® Compiler v6.16 (ARM)
  • IAR C/C++ Compiler v9.30.1 (IAR)

Supported kits (make variable 'TARGET')

Hardware setup

This example uses the board's default configuration. See the kit user guide to ensure that the board is configured correctly.

Two Bluetooth® LE boards are required to use this code example: one for Bluetooth® LE GATT Server throughput measurement and another for Bluetooth® LE GATT Client throughput measurement.

Note: PSoC™ 6 Bluetooth® LE Pioneer Kit (CY8CKIT-062-BLE) and the PSoC™ ship with KitProg2 installed. ModusToolbox™ requires KitProg3. Before using this code example, make sure that the board is upgraded to KitProg3. The tool and instructions are available in the Firmware Loader GitHub repository. If you do not upgrade, you will see an error like "unable to find CMSIS-DAP device" or "KitProg firmware is out of date".

AIROC™ CYW20829 Bluetooth® LE Kit (CYW920829M2EVK-02) ships with KitProg3 version 2.21 installed. ModusToolbox™ requires KitProg3 with the latest version 2.40. Before using this code example, make sure that the board is upgraded to KitProg3. The tool and instructions are available in the Firmware Loader GitHub repository. If you do not upgrade, you will see an error such as "unable to find CMSIS-DAP device" or "KitProg firmware is out of date".

Software setup

See the ModusToolbox™ tools package installation guide for information about installing and configuring the tools package.

Download and install the AIROC™ Bluetooth® Connect App for iOS or Android.

Scan the following QR codes from your mobile phone to download the AIROC™ Bluetooth® Connect App.

Install a terminal emulator if you don't have one. Instructions in this document use Tera Term.

Note: If you are using an iOS/Android smartphone as Bluetooth® LE Central, all features of the GATT Server throughput application cannot be used. Throughput can be measured only for GATT notifications. In this case, throughput rates obtained depend on the connection parameters negotiated and the PHY of the Central device.

Using the code example

Create the project

The ModusToolbox™ tools package provides the Project Creator as both a GUI tool and a command line tool.

Use Project Creator GUI
  1. Open the Project Creator GUI tool.

    There are several ways to do this, including launching it from the dashboard or from inside the Eclipse IDE. For more details, see the Project Creator user guide (locally available at {ModusToolbox™ install directory}/tools_{version}/project-creator/docs/project-creator.pdf).

  2. On the Choose Board Support Package (BSP) page, select a kit supported by this code example. See Supported kits.

    Note: To use this code example for a kit not listed here, you may need to update the source files. If the kit does not have the required resources, the application may not work.

  3. On the Select Application page:

    a. Select the Applications(s) Root Path and the Target IDE.

    Note: Depending on how you open the Project Creator tool, these fields may be pre-selected for you.

    b. Select this code example from the list by enabling its check box.

    Note: You can narrow the list of displayed examples by typing in the filter box.

    c. (Optional) Change the suggested New Application Name and New BSP Name.

    d. Click Create to complete the application creation process.

Use Project Creator CLI

The 'project-creator-cli' tool can be used to create applications from a CLI terminal or from within batch files or shell scripts. This tool is available in the {ModusToolbox™ install directory}/tools_{version}/project-creator/ directory.

Use a CLI terminal to invoke the 'project-creator-cli' tool. On Windows, use the command-line 'modus-shell' program provided in the ModusToolbox™ installation instead of a standard Windows command-line application. This shell provides access to all ModusToolbox™ tools. You can access it by typing "modus-shell" in the search box in the Windows menu. In Linux and macOS, you can use any terminal application.

The following example clones the "mtb-example-btstack-freertos-throughput-server" application with the desired name "LE_GATT_Server_Throughput" configured for the CY8CKIT-062-BLE BSP into the specified working directory, C:/mtb_projects:

project-creator-cli --board-id CY8CKIT-062-BLE --app-id mtb-example-btstack-freertos-throughput-server --user-app-name LE_GATT_Server_Throughput --target-dir "C:/mtb_projects"

The 'project-creator-cli' tool has the following arguments:

Argument Description Required/optional
--board-id Defined in the field of the BSP manifest Required
--app-id Defined in the field of the CE manifest Required
--target-dir Specify the directory in which the application is to be created if you prefer not to use the default current working directory Optional
--user-app-name Specify the name of the application if you prefer to have a name other than the example's default name Optional

Note: The project-creator-cli tool uses the git clone and make getlibs commands to fetch the repository and import the required libraries. For details, see the "Project creator tools" section of the ModusToolbox™ tools package user guide (locally available at {ModusToolbox™ install directory}/docs_{version}/mtb_user_guide.pdf).

Open the project

After the project has been created, you can open it in your preferred development environment.

Eclipse IDE

If you opened the Project Creator tool from the included Eclipse IDE, the project will open in Eclipse automatically.

For more details, see the Eclipse IDE for ModusToolbox™ user guide (locally available at {ModusToolbox™ install directory}/docs_{version}/mt_ide_user_guide.pdf).

Visual Studio (VS) Code

Launch VS Code manually, and then open the generated {project-name}.code-workspace file located in the project directory.

For more details, see the Visual Studio Code for ModusToolbox™ user guide (locally available at {ModusToolbox™ install directory}/docs_{version}/mt_vscode_user_guide.pdf).

Keil µVision

Double-click the generated {project-name}.cprj file to launch the Keil µVision IDE.

For more details, see the Keil µVision for ModusToolbox™ user guide (locally available at {ModusToolbox™ install directory}/docs_{version}/mt_uvision_user_guide.pdf).

IAR Embedded Workbench

Open IAR Embedded Workbench manually, and create a new project. Then select the generated {project-name}.ipcf file located in the project directory.

For more details, see the IAR Embedded Workbench for ModusToolbox™ user guide (locally available at {ModusToolbox™ install directory}/docs_{version}/mt_iar_user_guide.pdf).

Command line

If you prefer to use the CLI, open the appropriate terminal, and navigate to the project directory. On Windows, use the command-line 'modus-shell' program; on Linux and macOS, you can use any terminal application. From there, you can run various make commands.

For more details, see the ModusToolbox™ tools package user guide (locally available at {ModusToolbox™ install directory}/docs_{version}/mtb_user_guide.pdf).

Operation

  1. Connect the board to your PC using the provided USB cable through the KitProg3 USB connector.

  2. Use your serial terminal application and connect to the KitProg3 COM port. Configure the terminal application to access the serial port using the following settings.

    Baud rate: 115200 bps; Data: 8 bits; Parity: None; stop: 1 bit; Flow control: None; New line for receiving data: Line Feed (LF) or auto setting

  3. Program the board using one of the following:

    Using Eclipse IDE
    1. Select the application project in the Project Explorer.

    2. In the Quick Panel, scroll down, and click <Application Name> Program (KitProg3_MiniProg4).

    In other IDEs

    Follow the instructions in your preferred IDE.

    Using CLI

    From the terminal, execute the make program command to build and program the application using the default toolchain to the default target. The default toolchain is specified in the application's Makefile but you can override this value manually:

    make program TOOLCHAIN=<toolchain>
    

    Example:

    make program TOOLCHAIN=GCC_ARM
    
  4. Unplug the board and then connect the second board to your PC using the provided USB cable through the USB connector. Follow Steps 2 and 3 again to program the second board with the GATT_client application.

  5. Connect the first board (programmed with GATT_server) to your PC and open its terminal to view the UART messages. If required, reset the board after opening the UART terminal.

  6. Press the user button on your GATT Client device to start.

    The client checks for peer devices with the name TPUT. If it finds a device with this name, it initiates the connection. Therefore, after pressing the button, the kits will be auto-connected. User LED 1 will turn on after connection.

  7. Press the user button on the Bluetooth® LE GATT Client device.

    GATT Notifications are enabled. The Bluetooth® LE GATT Server starts sending the GATT notifications of 244 bytes. Throughput is calculated for every second and displayed on the terminal. In this case, the Bluetooth® LE GATT Server calculates the Tx throughput, while the Bluetooth® LE GATT Client calculates the Rx throughput.

    Figure 1. Terminal output: Data transfer mode 1

  8. Press the user button on the Bluetooth® LE GATT Client device.

    GATT Notifications are disabled and GATT write is enabled. The Bluetooth® LE GATT Client starts sending the GATT write of 244 bytes. Throughput is calculated for every second and displayed on the terminal. In this case, the Bluetooth® LE GATT Server calculates the Rx throughput, while the Bluetooth® LE GATT Client calculates the Tx throughput.

    Figure 2. Terminal output: Data transfer mode 2

  9. Press the user button again.

    GATT Notifications are enabled and GATT write stays enabled. The Bluetooth® LE GATT Client starts sending the GATT write of 244 bytes and The Bluetooth® LE GATT Server starts sending the GATT notification of 244 bytes. Throughput is calculated for every second and displayed on the terminal. In this case, the Bluetooth® LE GATT Server calculates the Rx and Tx throughput, while the Bluetooth® LE GATT Client calculates the Tx and Rx throughput.

    Figure 3. Terminal output: Data transfer mode 3

  10. Consecutive button presses change the mode of data transfer as mentioned in Steps 7, 8, and 9.

  11. If a disconnection occurs, the GATT Server device starts advertising again.

  12. To test using the AIROC™ Bluetooth® Connect mobile app:

    1. Connect the board to your PC using the provided USB cable through the USB connector.

    2. Open a terminal program and select the KitProg3 COM port. Set the serial port parameters to 8N1 and 115200 baud.

    3. Program the board with the Bluetooth® LE GATT Server Throughput application.

    4. Turn on Bluetooth® on your Android or iOS device and launch the AIROC™ Bluetooth® Connect App.

    5. Swipe down on the AIROC™ Bluetooth® Connect App home screen to start scanning for Bluetooth® LE peripherals; your device appears in the AIROC™ Bluetooth® Connect App home screen with the name TPUT. Select your device to establish the Bluetooth® LE connection.

    After the connection is established, User LED 1 will be on.

    1. Select GATT DB from the carousel view. Swipe left or right to change the carousel selections.

    2. Select Unknown Service and then select the Characteristic with the Notify property.

    3. Select Notify.

    Figure 4. Testing with AIROC™ Bluetooth® Connect App on Android

  The device starts sending the GATT notifications to the smartphone.

  The Tx GATT throughput values (in kbps) will be displayed on the UART terminal.

Debugging

You can debug the example to step through the code.

In Eclipse IDE

Use the <Application Name> Debug (KitProg3_MiniProg4) configuration in the Quick Panel. For details, see the "Program and debug" section in the Eclipse IDE for ModusToolbox™ software user guide.

Note: (Only while debugging) On the CM4 CPU, some code in main() may execute before the debugger halts at the beginning of main(). This means that some code executes twice – once before the debugger stops execution, and again after the debugger resets the program counter to the beginning of main(). See KBA231071 to learn about this and for the workaround.

In other IDEs

Follow the instructions in your preferred IDE.

Note: Debugging is of limited value when there is an active Bluetooth® LE connection because as soon as the Bluetooth® LE device stops responding, the connection gets dropped.

Design and implementation

GATT Throughput measurement

In this code example, Bluetooth® LE throughput is measured using GATT data sent/received by the application. The application accumulates the number of data packets sent/received and calculates the throughput each second.

GATT Throughput = ( number of bytes sent/received in 1 second * 8 bits ) bps

Or

GATT Throughput = ( number of bytes sent/received in 1 second * 8 bits )/1000 kbps

While calculating the throughput, consider only GATT data bytes. All the header bytes appended to GATT data must not be considered. Figure 5 shows the data flow through LE protocol layers and headers being appended in each layer.

Figure 5. GATT data flow

To achieve the maximum throughput:

  • PHY is set to 2M
  • ATT MTU is set to 247
  • Connection interval in the range of 67.5 msec to 75 msec is requested by the peripheral
  • Data Length Extension (DLE) is used
  • The GATT data is 244 bytes

Factors influencing throughput

A few of the known factors that affect the data throughput are as follows:

  1. PHY

    The PHY rate being used will have a direct impact on the maximum data throughput. You can select either 1-Mbps or 2-Mbps PHY. In this code example, PHY is set to 2M after connection. If the Bluetooth® LE Central device does not support 2M PHY, the value falls back to 1M. The PHY selected is printed on the UART terminal.

  2. Connection Interval

    Bluetooth® LE Connection Interval is the time between two data transfer events between the Central and the Peripheral device (in other words, how often the devices talk). It ranges from 7.5 ms to 4 seconds (with increments of 1.25 ms). In a connection interval, there may be only one Tx/Rx pair or, if the PDU has the More Data (MD) flag set, multiple packets may be sent in the same interval.

    A connection event is the time duration within the connection interval where there is actual Tx/Rx activity happening. The connection event is always less than the connection interval. A connection event ends 1 inter frame space (IFS) before the connection interval. Therefore, the connection interval value chosen will impact the throughput.

    A Bluetooth® LE connection is established with the connection interval value set by the Central device. However, the Peripheral may request a different value. The Central device makes the final decision and chooses a value that may be different from, but closer to, the requested value. In this code example, for the CY8CKIT-062-BLE kit acting as GATT Server, the device requests a connection interval value in the range of 37.5 msec to 38.75 msec, but the value you receive will depend on the Central device that you use.

    The connection interval differs between iOS and Android. It also changes depending on the version of the OS running on the device. This is because the Bluetooth® LE radio may have to attend to other events from the OS and the number of packets sent per connection event may not reach the maximum possible by the Bluetooth® LE stack.

  3. ATT Maximum Transmission Unit (MTU)

    The minimum ATT MTU allowed is 23 bytes. This allows a maximum of 20 bytes of ATT payload (3 bytes are used for the ATT header and 4 bytes for the L2CAP header). There is no limit on the maximum MTU value.

    If the ATT MTU is exactly 247 bytes, 244 bytes of ATT data will fit into a single packet. If the MTU is greater than 247 bytes, the MTU will span multiple packets causing the throughput to go down because of an increase in packet overhead and timing in between packets. Therefore, the GATT data size chosen in the application is 244 bytes.

  4. Data Length Extension (DLE)

    The DLE feature is introduced in version 4.2 of the Bluetooth® specification. DLE allows the link layer packet to hold a larger payload of up to 251 bytes Figure 6. This means that for one Tx/Rx pair, 244 bytes of GATT data can be sent/received with DLE enabled. If the GATT data is larger than 244 bytes, it is split, and takes multiple LL packets to be transmitted. This introduces header bytes for every chunk of data and therefore lower throughput. Older versions of Bluetooth® LE can support a maximum payload of 27 bytes.

  5. Packet Overhead

    Figure 6. LE packet format

    As shown in Figure 6, the LE packet includes many packet header bytes which get added up in each layer that are not accounted for in the application data throughput. To minimize the packet overhead, try to configure the ATT MTU size in such a way that the ATT payload data will always fit in a single LE packet. In this code example, the ATT MTU size used is 247 bytes, which exactly matches the ATT payload data size of 244 bytes.

Resources and settings

This section explains the ModusToolbox™ resources and their configurations as used in this code example. Note that all the configurations explained in this section have already been implemented in the code example.

  • Device Configurator: ModusToolbox™ stores the configuration settings of the application in the design.modus file. This file is used by the device configurator that generates the configuration firmware. This firmware is stored in the application’s GeneratedSource folder.

    By default, all applications in a workspace share the same design.modus file i.e., they share the same pin configuration. Each BSP has a default design.modus file in the mtb_shared\TARGET_<bsp name><version>\COMPONENT_BSP_DESIGN_MODUS directory. It is not recommended to modify the configuration of a standard BSP directly.

    To modify the configuration for a single application or to create a custom BSP see the ModusToolbox™ user guide. In this example, using the default configuration. See the ModusToolbox™ Device Configurator user guide.

  • Bluetooth® Configurator: The Bluetooth® peripheral has an additional configurator called the “Bluetooth® Configurator” that is used to generate the Bluetooth® LE GATT database and various Bluetooth® settings for the application. These settings are stored in the file named design.cybt.

    Note that, unlike the device configurator, the Bluetooth® Configurator settings and files are local to each respective application. The services and characteristics added are explained in the Design and implementation section. See the ModusToolbox™ Bluetooth® Configurator user guide.

Note: For PSoC™ 6 Bluetooth® LE based BSPs (CY8CKIT-062-BLE, CY8CPROTO-063-BLE, and CYBLE-416045-EVAL) with support for AIROC™ BTSTACK, if you want to use Bluetooth® Configurator tool, select the option 'AIROC™ BTSTACK with Bluetooth® LE only (CYW20829, PSoC™ 6 with CYW43xxx Connectivity device)' from the dropdown to select the device. Do not use the option 'PSoC™ Bluetooth® LE Legacy Stack (PSoC™ 6-BLE)' because it is not compatible with AIROC™ BTSTACK.

Bluetooth® LE GATT Server Throughput measurement

In this code example, the kit acts as a Bluetooth® LE GAP Peripheral and GATT Server. When the kit is powered up, the Bluetooth® LE stack is initialized along with the Bluetooth® porting layer for the respective device. After this, the FreeRTOS Scheduler is started.

In the application, there is a task that calculates the throughput every second based on the number of packets successfully sent or received. A HAL timer is configured for 1 millisecond. Every millisecond a task to send notifications is notified through this timer callback. The task sends a notification packet and updates the Tx packet count if it is successfully sent. Use a millisecond timer to send out as many packets as possible to achieve maximum throughput.

A connection is established when any Client device sends a connection request. After connection, PHY is set to 2M and a request to update the connection interval is sent to GATT Client. The PHY selected and new connection interval values are displayed on the terminal.

The GATT Server has a custom service called "Throughput Measurement". This service has two characteristics called "Notify" and "WriteMe". The Notify Characteristic has a Client Characteristic Configuration Descriptor (CCCD).

Figure 7. Throughput measurement custom service

Custom service

Figure 8 shows the flowchart for the application.

Figure 8. Bluetooth® LE GATT Server application flow

Notify Characteristic: This characteristic is used to send GATT notifications and has a length of 244 bytes. The bytes sent are used to calculate the Tx throughput.

  • When the GATT Client writes the value '1' into the CCCD, notifications are enabled, and the GATT Server starts sending notification packets that have 244 bytes of data. Notifications are sent every millisecond. A millisecond timer is configured and used for this purpose.
  • When the GATT Client writes the value '0' into the CCCD, notifications are disabled, and the GATT Server stops sending notifications.

WriteMe characteristic: This characteristic is used to receive GATT writes from the GATT Client device and has a length of 244 bytes. The bytes received are used to calculate the Rx throughput.

Related resources

Resources Links
Application notes AN228571 – Getting started with PSoC™ 6 MCU on ModusToolbox™
AN215656 – PSoC™ 6 MCU: Dual-CPU system design
AN238254 Getting started with AIROC™ CYW20829 Bluetooth® LE on ModusToolbox™
Code examples Using ModusToolbox™ on GitHub
Device documentation PSoC™ 6 MCU datasheets
PSoC™ 6 technical reference manuals
AIROC™ CYW20829 Bluetooth® LE SoC
Development kits Select your kits from the Evaluation board finder
Libraries on GitHub mtb-pdl-cat1 – PSoC™ 6 Peripheral Driver Library (PDL)
mtb-hal-cat1 – Hardware Abstraction Layer (HAL) library
retarget-io – Utility library to retarget STDIO messages to a UART port
Middleware on GitHub psoc6-middleware – Links to all PSoC™ 6 MCU middleware
Tools ModusToolbox™ – ModusToolbox™ software is a collection of easy-to-use libraries and tools enabling rapid development with Infineon MCUs for applications ranging from wireless and cloud-connected systems, edge AI/ML, embedded sense and control, to wired USB connectivity using PSoC™ Industrial/IoT MCUs, AIROC™ Wi-Fi and Bluetooth® connectivity devices, XMC™ Industrial MCUs, and EZ-USB™/EZ-PD™ wired connectivity controllers. ModusToolbox™ incorporates a comprehensive set of BSPs, HAL, libraries, configuration tools, and provides support for industry-standard IDEs to fast-track your embedded application development.

Other resources

Infineon provides a wealth of data at www.infineon.com to help you select the right device, and quickly and effectively integrate it into your design.

Document history

Document title: CE236195 - BTSTACK: Bluetooth® LE GATT Server Throughput

Version Description of change
1.0.0 New code example
1.1.0 Added support for CYW989829M2EVB-01 and Connection with IoS

All referenced product or service names and trademarks 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.


© Cypress Semiconductor Corporation, 2023. This document is the property of Cypress Semiconductor Corporation, an Infineon Technologies company, and its affiliates ("Cypress"). This document, including any software or firmware included or referenced in this document ("Software"), is owned by Cypress under the intellectual property laws and treaties of the United States and other countries worldwide. Cypress reserves all rights under such laws and treaties and does not, except as specifically stated in this paragraph, grant any license under its patents, copyrights, trademarks, or other intellectual property rights. If the Software is not accompanied by a license agreement and you do not otherwise have a written agreement with Cypress governing the use of the Software, then Cypress hereby grants you a personal, non-exclusive, nontransferable license (without the right to sublicense) (1) under its copyright rights in the Software (a) for Software provided in source code form, to modify and reproduce the Software solely for use with Cypress hardware products, only internally within your organization, and (b) to distribute the Software in binary code form externally to end users (either directly or indirectly through resellers and distributors), solely for use on Cypress hardware product units, and (2) under those claims of Cypress's patents that are infringed by the Software (as provided by Cypress, unmodified) to make, use, distribute, and import the Software solely for use with Cypress hardware products. Any other use, reproduction, modification, translation, or compilation of the Software is prohibited.
TO THE EXTENT PERMITTED BY APPLICABLE LAW, CYPRESS MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS DOCUMENT OR ANY SOFTWARE OR ACCOMPANYING HARDWARE, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. No computing device can be absolutely secure. Therefore, despite security measures implemented in Cypress hardware or software products, Cypress shall have no liability arising out of any security breach, such as unauthorized access to or use of a Cypress product. CYPRESS DOES NOT REPRESENT, WARRANT, OR GUARANTEE THAT CYPRESS PRODUCTS, OR SYSTEMS CREATED USING CYPRESS PRODUCTS, WILL BE FREE FROM CORRUPTION, ATTACK, VIRUSES, INTERFERENCE, HACKING, DATA LOSS OR THEFT, OR OTHER SECURITY INTRUSION (collectively, "Security Breach"). Cypress disclaims any liability relating to any Security Breach, and you shall and hereby do release Cypress from any claim, damage, or other liability arising from any Security Breach. In addition, the products described in these materials may contain design defects or errors known as errata which may cause the product to deviate from published specifications. To the extent permitted by applicable law, Cypress reserves the right to make changes to this document without further notice. Cypress does not assume any liability arising out of the application or use of any product or circuit described in this document. Any information provided in this document, including any sample design information or programming code, is provided only for reference purposes. It is the responsibility of the user of this document to properly design, program, and test the functionality and safety of any application made of this information and any resulting product. "High-Risk Device" means any device or system whose failure could cause personal injury, death, or property damage. Examples of High-Risk Devices are weapons, nuclear installations, surgical implants, and other medical devices. "Critical Component" means any component of a High-Risk Device whose failure to perform can be reasonably expected to cause, directly or indirectly, the failure of the High-Risk Device, or to affect its safety or effectiveness. Cypress is not liable, in whole or in part, and you shall and hereby do release Cypress from any claim, damage, or other liability arising from any use of a Cypress product as a Critical Component in a High-Risk Device. You shall indemnify and hold Cypress, including its affiliates, and its directors, officers, employees, agents, distributors, and assigns harmless from and against all claims, costs, damages, and expenses, arising out of any claim, including claims for product liability, personal injury or death, or property damage arising from any use of a Cypress product as a Critical Component in a High-Risk Device. Cypress products are not intended or authorized for use as a Critical Component in any High-Risk Device except to the limited extent that (i) Cypress's published data sheet for the product explicitly states Cypress has qualified the product for use in a specific High-Risk Device, or (ii) Cypress has given you advance written authorization to use the product as a Critical Component in the specific High-Risk Device and you have signed a separate indemnification agreement.
Cypress, the Cypress logo, and combinations thereof, ModusToolbox, PSoC, CAPSENSE, EZ-USB, F-RAM, and TRAVEO are trademarks or registered trademarks of Cypress or a subsidiary of Cypress in the United States or in other countries. For a more complete list of Cypress trademarks, visit www.infineon.com. Other names and brands may be claimed as property of their respective owners.

About

This code example demonstrates the maximum throughput (using GATT layer notification and GATT write command) that can be achieved with Infineon® PSoC™ 6 MCU with AIROC™ Bluetooth® LE, AIROC™ CYW20829, and AIROC™ Wi-Fi & Bluetooth® combo SoC devices.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published