.. DO NOT RENAME OR MOVE THIS FILE FROM THE QUICKSTART GUIDE! THIS GUARANTEES
   EXTERNAL LINKS TO THIS GUIDE WILL PERSIST IN E2E AND SUCH.

TI BLE5-Stack Quick Start
*************************

This section serves as a road map for users developing applications
and products using the TI SimpleLink |DEVICE| wireless MCU platform for
Bluetooth Low Energy applications. Whether a seasoned developer or just getting
started, TI has created a variety of resources to simplify development on the
|DEVICE| platform. These resources will enhance your experience with the TI
SimpleLink |BLE5_STACK| |version| from the out-of-the-box demo to production.

.. _get-started-ble5-ccs:

Using BLE5-Stack Projects with CCS
==================================

For BLE5-Stack projects, the |DEVICE| devices use 
FreeRTOS. The necessary FreeRTOS code is integrated into all FreeRTOS-based
projects present in the |DEVICE| SDK. This means that importing a BLE5-Stack
project will import a single project which has the FreeRTOS files located 
within the project itself. Additionally, this single project will also link
to TI's BLE5-Stack library files.

For more information about FreeRTOS, please reference the FreeRTOS (RTOS Kernel) Overview
section of the User's Guide.

For more details and how to change configurations look at
the SimpleLink |BLE5_STACK| User’s Guide.

Import Project Using CCS Theia Import Project Tool 
--------------------------------------------------

CCS Theia is an integrated development environment (IDE) which 
leverages the open source Theia IDE. The Theia IDE is a Virtual Studio Code like IDE framework, 
which can be used to edit, build and debug TI Embedded devices. 

.. note::
    CCS Theia is the future IDE for TI embedded devices. Some features that are currently
    supported in CCS Eclipse may not be supported in CCS Theia at this time. Please refer
    to the Release Notes for more details. As this is a new environment, TI encourages feedback. 
    Please direct feedback to E2E.  

This section describes how to import, build and flash an existing project. The section will 
reference the ``basic_ble`` project. All of TI BLE5-Stack projects included in the 
development kit will have a similar structure. 

#. Open the CCS Theia IDE from the Start Menu 
#. Create a workspace

    - Workspaces previously used with CCS Eclipse can be used on CCS Theia. 

#. Import a CCS Project

    - Open Import Wizard: **File** |rarr| **Import**
    - Click on Browse...
    - Navigate to the desired example: 

        ``<SDK_INSTALL_DIR>/examples/rtos/LP_EM_CC2340R5/ble/basic_ble``
        or
        ``<SDK_INSTALL_DIR>/examples/rtos/LP_EM_CC2745R10/ble/basic_ble``

    - Select desired folder
    - Click **Finish**

    .. _fig-ccs-import-projects-cc2340r5:
    .. figure:: resources/cc2340rx/cc2340_import_project_CCSTheia.png
        :align: center

        Import CCS Projects for CC2340R5


    .. _fig-ccs-import-projects-cc2745p10:
    .. figure:: resources/cc2340rx/cc2745_import_project_CCSTheia.png
        :align: center

        Import CCS Projects for CC2745R10

#. Wait for import process to complete

    - If everything is successful, the project will appear in the Project Explorer: 

    .. _fig-ccs-project-explorer-after-import-cc2340r5:
    .. figure:: resources/cc2340rx/cc2340r_imported_projects_CCSTheia.png
        :align: center

        CC2340R5 Projects Imported into CCS

    .. _fig-ccs-project-explorer-after-import-cc2745p10:
    .. figure:: resources/cc2340rx/cc2745_imported_projects_CCSTheia.png
        :align: center

        CC2745R10 Projects Imported into CCS

Build and Flash Project
-----------------------

To build and flash Basic BLE project: 

#. Follow all steps contained within the :ref:`general_quickstart_cc23xx` guide. The guide describes
   the prerequisites and setup required to build and flash example projects for |DEVICE| platforms. 
   Do not proceed until all the setup contained in the guide has been completed
   or the projects will not build.

#. Build the Project

    - Right click on desired project 
    - Select **Build Project(s)**

#. Load the project 

    - Select **Run** |rarr| **Load**
    - Click the project to flash 

.. note::
    You only need to program the HSM once unless a mass chip erase without 
    retaining sectors occurs. In this case, the steps above must be followed.

Before beginning execution, open a terminal window with the following settings: 

.. _ccs-terminal-settings-table:
.. table:: Basic BLE UART Settings

    +--------------+----------------+
    | UART Param   | Default Values |
    +==============+================+
    | Baud Rate    | 115200         |
    +--------------+----------------+
    | Data length  | 8 bits         |
    +--------------+----------------+
    | Parity       | None           |
    +--------------+----------------+
    | Stop bits    | 1 bit          |
    +--------------+----------------+
    | Flow Control | None           |
    +--------------+----------------+

When the debugging session is complete, click the blue start button to begin execution. 

Import Project Using CCS Import Project Tool
---------------------------------------------

A quick and easy way to start working with the SDK is to use the Import
Project tool available in CCS.

This section describes how to import and build an existing project and
references the ``basic_ble`` project. All of |BLE5_STACK| projects included
in the development kit have a similar structure.

#. Open the CCS IDE from the Start Menu.
#. Create a workspace.

    .. attention::

        Ensure that the CCS workspace path does not contain a whitespace.

#. Import a CCS Project using Import

    - Open Import Wizard: **File** |rarr| **Import...**
    - Expand **Code Composer Studio**
    - Click on **CCS Projects** and click **Next**
    - Ensure **Select search-directory** is checked.
    - Click on **Browse...** in the **Select search-directory:** section.
    - Navigate to the directory for your chosen example: 
        ``<SDK_INSTALL_DIR>/examples/rtos/LP_EM_CC2340R5/ble/basic_ble``
        or
        ``<SDK_INSTALL_DIR>/examples/rtos/LP_EM_CC2745R10/ble/basic_ble``
    - Click **Select Folder**
    - Click **Finish** 


    .. _fig-ccs-import-projects-cc2340r5:
    .. figure:: resources/cc2340rx/cc2340_import_project.png
        :align: center

        Import CCS Projects for CC2340R5


    .. _fig-ccs-import-projects-cc2745p10:
    .. figure:: resources/cc2340rx/cc2745_import_project.png
        :align: center
        :width: 92%

        Import CCS Projects for CC2745R10


#.  Wait for import process to finish

    - If everything is successful, the project should appear in Project
      Explorer: basic_ble_LP_EM_CC2340R5_freertos_ticlang or
      basic_ble_LP_EM_CC2745R10_freertos_ticlang

    .. _fig-ccs-project-explorer-after-import-cc2340r5:
    .. figure:: resources/cc2340rx/cc2340r_imported_projects.JPG
        :align: center

        CC2340R5 Projects Imported into CCS

    .. _fig-ccs-project-explorer-after-import-cc2745p10:
    .. figure:: resources/cc2340rx/cc2745_imported_projects.png
        :align: center

        CC2745R10 Projects Imported into CCS

Build and Flash Project
-----------------------

.. note::
    The |DEVICEHIGH| has a new Hardware Security Module (HSM) that requires 
    firmware to be flashed **after** a project flashed with a valid CCFG and 
    SCFG. This process will have to be followed after every mass chip erase 
    without retaining protoected sectors. This is not required for |DEVICELOW|.
To build and flash Basic BLE project:

#. Follow all the steps contained in the :ref:`general_quickstart_cc23xx` guide
   . The procedure described in the above guide goes over all the prerequisites
   and setup required to build the example projects for the |DEVICE| platform.
   Do not proceed until all the setup contained in the guide has been completed
   or the projects will not build.


#. Build the Application project.

    - Set the Application project as the active project.
    - Select **Project** |rarr| **Build All** to build the Application project.
    - As part of the prebuild process, SysConfig will run and generate code
      based on the ``.syscfg`` in the workspace. For more information on
      SysConfig, see the SysConfig chapter of the User's Guide.

#. Flash the Application project

    - Select **Run** |rarr| **Debug** to download the application

#. Flash the HSM firmware 

    - Open UniFlash (see release notes for version information) 
    - Select the correct |DEVICEHIGH| device
    - Select **Settings & Utilities** and go to the **HSM Image** section
    - Enter the path to the HSM binary
        - This will be located <sdk root>/bin/HSM. 
    - Press **Program HSM Image**

.. note::
    You only need to program the HSM once unless a mass chip erase without 
    retaining sectors occurs. In this case go through the process above again.

Before beginning execution, open a terminal window with the following settings:

.. _ccs-terminal-settings-table:
.. table:: Basic BLE UART Settings

    +--------------+----------------+
    | UART Param   | Default Values |
    +==============+================+
    | Baud Rate    | 115200         |
    +--------------+----------------+
    | Data length  | 8 bits         |
    +--------------+----------------+
    | Parity       | None           |
    +--------------+----------------+
    | Stop bits    | 1 bit          |
    +--------------+----------------+
    | Flow Control | None           |
    +--------------+----------------+

When the debugging session opens, click the green start button to start execution.


.. _get-started-ble5-iar:

Using BLE5-Stack Projects with IAR
==================================

.. note:: 
    |DEVICE_LOW_PLUS| devices will not work with IAR version 9.60.3 unless a patch is added to the respective SDK. Please reach out to a TI Engineer through 
    `TI E2E Support Forum <https://e2e.ti.com>`_ for more information about the patch. 

When building with IAR, it is recommended to enable all build messages. This
can be done by right-clicking in the Build window and selecting "All" as shown
below:

    .. _fig-ble5-iar-enable-build-messages:
    .. figure:: resources/ble5/ble5_iar_enable_build_messages.png
        :align: center

        Enable All Build Messages

.. note::
    The installation of the SysConfig tool is bundled with the |SDK|. But if
    necessary the standalone SysConfig package can be downloaded here: 
    `SysConfig Standalone Installer Download Page`_ and must be installed to
    the same location as specified by ``SYSCONFIG_ROOT``.

Import Project Using Workspace
------------------------------

This section describes how to open and build an existing project and references
the basic_ble project.

.. warning::
    It is recommended to use the global argument variables for all |BLE5_STACK|
    examples in this version of the |SDK|. Import or re-enable the global SDK
    argvars via Tools -> Configure Custom Argument Variables.

    Below you can see how to add and enable the SDK-global argument variables:

    .. figure:: resources/iar_custom_argvars_menu.png

        Select Configure Custom Argument Variables from the Tools menu


    .. figure:: resources/iar_custom_argvars_empty.png

        Click on Import... with either the Workspace or Global namespace
        selected. For Global, the imported values will persist for other
        projects also.


    .. figure:: resources/iar_custom_argvars_file_f3_sdk.png

        Find the Custom Argument Variables file under ``<SDK root>/tools/iar``


    .. figure:: resources/iar_custom_argvars_selected_f3_sdk.png

        Success! Change these paths if you have installed in a different location.


Applications that support the TI Over-the-Air Download (OAD) will also require
the MCUboot project and for On-Chip OAD also the persistent application
project. For more information on the TI OAD Profile and the MCUboot
see the `OAD Chapter <../ble-stack-5.x-guide/ble5-oad-index-mcuboot.html>`_ of
the BLE5-Stack User's Guide.

..
    Commented out this note because we have no older SDK supporting IAR

    .. note::
        If you have imported the global
        ``<SDK_INSTALL_DIR>/tools/iar/SIMPLELINK_LOWPOWER_F3_SDK.custom_argvars``,
        then the examples from the older SDK examples will fail to build. Therefore,
        you must remove this custom_argvars file from your IAR global custom arguments if you
        are working on multiple version of SDKs.

#. Open the IAR Embedded Workbench IDE from the Start Menu.
#. Open an IAR workspace project: **File** -> **Open** -> **Workspace...**

    - For loading a |DEVICELOW| example, select
      *<SDK\_INSTALL\_DIR>\\examples\\rtos\\<LP>\\ble\\basic\_ble\\freertos\\iar\\basic_ble_LP_EM_CC2340R5_freertos_iar.template.eww*
    - For loading a |DEVICEHIGH| example, select
      *<SDK\_INSTALL\_DIR>\\examples\\rtos\\<LP>\\ble\\basic\_ble\\freertos\\iar\\basic_ble_LP_EM_CC2745R10_freertos_iar.template.eww*

#. This will prompt you to select a folder location as a workspace for the
   project

.. sidebar:: IAR Workspace Pane

    .. _fig-iar-workspace-pane:
    .. figure:: resources/ble5/ble5_iar_workspace_pane_f3_sdk.png
        :align: center
        :width: 75%

        IAR Workspace Pane

This workspace file is for the basic\_ble project. When selected, the
files associated with the workspace become visible in the Workspace pane on the
left side of the screen. See :numref:`fig-iar-workspace-pane`

Build and Download Project
--------------------------

To build & download Basic BLE:

..
    Commented out this bullet because basic_ble does not need a BIM
    
    #. Flash the BIM hex file.
    
        - The hex file can be found in examples |rarr| nortos |rarr| |LP|
          |rarr| bim |rarr| hexfiles |rarr| bim_offchip |rarr| Debug_unsecure
        - Use Smart RF Flash Programmer 2 or UniFlash_ to program the hex file.

#. Build the Application project.

    - Select the Application project.
    - Select **Project** -> Make to build the Application project.
    - As part of the prebuild process, SysConfig will run and generate code
      based on the ``.syscfg`` in the workspace. For more information on
      SysConfig, see the SysConfig chapter of the User's Guide.

    .. warning::
       IAR 9.32.1 generates an error on the first build. Press
       **Project** -> Clean to clean the project and repeat the build two more
       times to finally overcome the error. This issue will be fixed in the
       next IAR version.

#. Load the Application project

    - To download and debug: Select **Project** -> **Download and Debug**
    - To download without debugging: Select **Project** -> **Download** ->
      **Download Active Application**


Refer to the |basic_ble| for CC23xx, and |basic_ble_cc27xx| for CC27xx for more information about this project.

Before beginning execution, open a terminal window with the following settings:

.. _iar-terminal-settings-table:
.. table:: Basic BLE UART Settings

    +--------------+----------------+
    | UART Param   | Default Values |
    +==============+================+
    | Baud Rate    | 115200         |
    +--------------+----------------+
    | Data length  | 8 bits         |
    +--------------+----------------+
    | Parity       | None           |
    +--------------+----------------+
    | Stop bits    | 1 bit          |
    +--------------+----------------+
    | Flow Control | None           |
    +--------------+----------------+

When the debugging session opens, click the start button to start execution.
Continue on to the :ref:`get-started-ble5-demo` section for information about
using ``Basic BLE``.

.. warning::
    When using IAR compiler, the Configuration file for BLE5-Stack is suffixed ``.xscfg``.
    When using IAR compiler, modifying ``.cfg``  file has no effect.

.. _get-started-ble5-demo:

Running the Demo
================

After hitting the play button, your terminal window should display the Basic BLE
UART output as shown below:

    .. figure:: resources/cc2340rx/CC2340R_Basic_BLE_UART.png
        :align: center

        Basic BLE UART Output

This provides information about the address used for Basic BLE. 

Choose the Central device from the list below to connect with:

.. container:: toggle

    .. container:: header

        **Click to Expand BTool Instructions**

    **Host Test Setup**

    The easiest way to connect to the Basic BLE example with another LaunchPad
    is by using BTool and a |LP| (or similar). BTool allows you to send HCI
    commands to the LaunchPad to easily establish BLE communication with another
    device. In this case, we can use BTool to connect to the |DEVICE| device.

    To use BTool, you must flash your second LaunchPad with the Host Test
    firmware from a compatible version of the TI BLE-Stack/BLE5-Stack.
    Import the host_test example into CCS or IAR, compile and flash the second
    LaunchPad.

    If the second LaunchPad is a LAUNCHXL-CC26X2R1 device, then you must install
    the latest `SIMPLELINK LOWPOWER F2 SDK <https://www.ti.com/tool/download/SIMPLELINK-LOWPOWER-F2-SDK>`_.
    Once installed, the BTool software and firmware will be found in the SDK
    directory for the SIMPLELINK-LOWPOWER-F2-SDK.

    UniFlash can be used to program the LaunchPad with the Host Test firmware:

    .. _fig-ble5-uniflash-host-test:
    .. figure:: resources/ble5/ble5-uniflash-host-test.png
        :align: center

        Flash Host Test using UniFlash

    Open BTool from the ``tools\ble\btool`` folder of the SDK install
    directory of the LAUNCHXL-CC26X2R1 SDK directory.
    **Start BTool by double clicking Run_BTool.bat**
    Select the XDS110 UART COM Port for your Host Test LaunchPad:

    .. _fig-btool_serial_port:
    .. figure:: resources/ble5/btool_serial_port.png
        :align: center

        BTool Serial Port Settings

    When BTool connects to the LaunchPad, it will issue several initialization
    commands. If the commands succeed, you will receive multiple HCI Events with
    a Status of "SUCCESS".

    **Connect to BLE Basic**

    Scan for nearby advertising Bluetooth devices by selecting the Scan button
    in the Discovery window. Make sure your BLE Basic LaunchPad is
    connected to power and advertising.

    Compare the device addresses in the Device Address dropdown with the address
    shown in the BLE Basic terminal window. Select the matching address and
    click "Establish" to connect to BLE Basic.

    .. _fig-btool-scan-connect:
    .. figure:: resources/ble5/btool-scan-connect.png
        :align: center

        Scanning & Connecting with BTool

    After the connection has established, discover & read the current value of
    the services and characteristics available on BLE Basic by right-clicking
    on the Handle in the Connection Info section and selecting Read Values.

    .. _fig-btool-read-values:
    .. figure:: resources/ble5/btool-read-values.png
        :align: center

        BTool GATT Table Discovery

    The bottom of the BTool GUI will display the device's GATT Table to
    help you navigate and control the BLE Basic services.

    .. _fig-btool-gatt-table:
    .. figure:: resources/cc2340rx/CC2340r_SimplePeripheral_GATT_Table.JPG
        :align: center

        BTool GATT Table Discovery


    **Using the Simple Profile Service**

    You can read and write multiple bytes of data by using the Data Service.
    Double click on the Value field of the String Char. You can write the new
    value directly in ASCII or you can choose a different type by selecting from
    the Value Type dropdown menu.

    .. _fig-btool-write-string:
    .. figure:: resources/cc2340rx/CC2340r5_Writing_Data_Service.JPG
        :align: center

        Writing to the Data Service


.. container:: toggle

    .. container:: header

        **Click to Expand Android/iOS Instructions**

    Download the latest version of the TI SimpleLink Connect App from your
    app store. 

    `Apple App Store <https://apps.apple.com/no/app/simplelink-connect/id6445892658>`_ (Left QR code)
    
    `Google Play Store <https://play.google.com/store/apps/details?id=com.ti.connectivity.simplelinkconnect>`_ (Right QR code)

        .. _fig-ble5_Apple_App_Store_app_and_Google_Play_Store_app:
        .. figure:: resources/ble5/Apple_Google_QR_code.png
            :align: Center

            SimpleLink Connect App
       

    When the download completes, open the app:

        .. _fig-ble5_android_app:
        .. figure:: resources/ble5/ble5_android_starter_app.png
            :align: center

            SimpleLink Connect App

    Enable location permissions to allow the app to function properly, 
    if you deny it by error go to your phone application settings to allow it back.

    **Connect to BLE Basic**

    Open the SimpleLink Connect App on your device. The app should begin
    scanning for Bluetooth LE devices automatically after you click on **Enable Bluetooth LE scan**.
    Make sure your Basic BLE LaunchPad is nearby and advertising. ``Basic BLE project`` should appear in the Bluetooth low
    energy devices list:

        .. _fig-ble5_android_advertising:
        .. figure:: resources/cc2340rx/App_Scanned_Devices.png
            :align: center

            Discovering BLE Basic

    Establish a connection to the ``Basic BLE project`` by clicking on the arrow next to its name
    in the devices list. The SimpleLink Connect Application will display the ``Basic BLE project``
    service and allow the user to interact with these services.

        .. _fig-ble5_android_services:
        .. figure:: resources/cc2340rx/basicBLE_ConnectionPage_Android.png
            :align: center

            BLE Basic Services

    **Using the Simple Profile Service**

    The Simple Profile Service is the
    service with the UUID that begins with `0xFFF0` (TI Simple Peripheral Service). 
    Tap the arrow next to the item and you will see five characteristics. The 
    different characteristics can be used to read and write multiple bytes of data. You can
    do this by pressing Read characteristic to get data from ``Basic BLE project``,
    Write characteristic to send multiple bytes of data to ``Basic BLE project`` and 
    Notifications to know when a characteristic has changed its value.

        .. _fig-ble5_android_data_service:
        .. figure:: resources/cc2340rx/basicBLEServices.png
            :align: center

            List of Services in ``Basic BLE project``

        .. _fig-ble5_android_writing_data:
        .. figure:: resources/cc2340rx/WritebasicBLECharacteristic.png
            :align: center

            Writing to the Simple Profile Service

.. _get-started-ble5-learn:

Learning More About TI BLE5-Stack
=================================

-  **SimpleLink Academy** `dev.ti.com/tirex <https://dev.ti.com/tirex/explore/node?node=A__AEaxXmSXZjp24G7-XUfwSQ__SIMPLELINK-ACADEMY-CC23XX__gsUPh5j__LATEST>`_

SimpleLink Academy provides a comprehensive set of training tools that allow
users from beginners to experienced developers to learn about the SimpleLink MCU
Platform.

Using introductory material and labs, learn the fundamentals of
BLE and how to develop a custom BLE application.

SimpleLink Academy also contains modules written to demonstrate the rich debug
environment and peripheral driver capability provided by the SDK.

This material teaches users who are new to FreeRTOS or any RTOS
programming in general about how to use FreeRTOS and the BLE5-Stack included
in the SDK.

Modules within the kernel training greatly expand the information
presented in the **FREERTOS Overview** chapter in the |BLE5_STACK| User's Guide.

Learn how the FreeRTOS provides the most optimal power management
and design flexibly.

- **App Notes, Tools and other resources** available on the `CC2340R5`_ product page

- This **User's Guide**

.. _get-started-ble5-develop:

Developing a New BLE5-Stack Based Application
=============================================

Usage of the SimpleLink SDK, the Software User's Guide and SysConfig is intended for
programmers who are ready to start developing an end product using the |DEVICE|.
To begin:

**Get Familiar with the BLE5-Stack User's Guide**

This User's Guide is meant to be used alongside the |BLE5_STACK|
when developing an end product. It contains documentation on the stack
architecture, APIs, and suggestions for developing applications.

**Select an Example Project**

The |BLE5_STACK| includes a basic set of projects to use as a starting point for
development of your custom application. Click the links below to find
out more information about each project:

.. _tbl-sdk-ble-examples-cc23xx:
.. table:: BLE examples available for the |DEVICE_LOW_PLUS|

    +----------------------------------+----------------------------------------------------------------------------------------------+
    | Name                             | Description                                                                                  |
    +----------------------------------+----------------------------------------------------------------------------------------------+
    | |basic_ble|                      | Example project where device can be configured to operate as a Bluetooth LE peripheral,      |
    |                                  | central, or both.                                                                            |
    +----------------------------------+----------------------------------------------------------------------------------------------+
    | |basic_ble_oad_offchip|          | Same as basic_ble above with OAD functionality to enable wireless firmware updates off chip. |
    +----------------------------------+----------------------------------------------------------------------------------------------+
    | |basic_ble_oad_onchip|           | Same as basic_ble above with OAD functionality to enable wireless firmware updates on chip.  |
    +----------------------------------+----------------------------------------------------------------------------------------------+
    | |basic_ble_profiles|             | Same as basic_ble above with additional profiles (CGM and Glucose).                          |
    +----------------------------------+----------------------------------------------------------------------------------------------+
    | |basic_ble_ptm|                  | Same as basic_ble above with Production Test Mode (PTM) functionality.                       |
    +----------------------------------+----------------------------------------------------------------------------------------------+
    | |data_stream|                    | Example project which implements data stream profile to enable UART over BLE communication.  | 
    +----------------------------------+----------------------------------------------------------------------------------------------+
    | |host_test|                      | A network processor project that is interfaced with HCI and Vendor Specific HCI commands.    |
    +----------------------------------+----------------------------------------------------------------------------------------------+ 
    | |basic_persistent|               | Permanently resident application that implements OAD profile                                 |
    +----------------------------------+----------------------------------------------------------------------------------------------+   

.. _tbl-sdk-ble-examples-cc27xx:
.. table:: BLE examples available for the |DEVICEHIGH| platform

    +----------------------------------+----------------------------------------------------------------------------------------------+
    | Name                             | Description                                                                                  |
    +----------------------------------+----------------------------------------------------------------------------------------------+
    | |basic_ble_cc27xx|               | Example project where device can be configured to operate as a Bluetooth LE peripheral,      |
    |                                  | central, or both.                                                                            |
    +----------------------------------+----------------------------------------------------------------------------------------------+
    | |data_stream_cc27xx|             | Example project which implements data stream profile to enable UART over BLE communication.  | 
    +----------------------------------+----------------------------------------------------------------------------------------------+
    | |host_test_cc27xx|               | A network processor project that is interfaced with HCI and Vendor Specific HCI commands.    |
    +----------------------------------+----------------------------------------------------------------------------------------------+ 

**Troubleshooting Help**

While developing your custom application, you may run into issues that require
the use of a debugger. See the `Debugging Chapter <../ble-stack-5.x-guide/debugging-index-cc23xx.html>`_ in the |BLE5_STACK| User's
Guide for guidance.

.. 
    The whole mesh section is in comment. 
    We can uncomment it when we start supporting mesh in Loki

        Developing a New BLE Mesh Application
        =============================================

        **Get Familiar with the Bluetooth Mesh Section of the BLE5-Stack User's Guide**

        Take a look at the :ref:`ble-mesh-quick-start` for an overview of our Bluetooth
        Mesh Application. It contains documentation on the implementation architecture,
        APIs, and suggestions for developing applications.

        As Bluetooth Mesh builds on top of Bluetooth Low Energy v4.2, our BLE5-Stack
        User's Guide should also be referenced when developing an end product.

        **Select an Example Project**

        The |BLE5_STACK| includes a basic set of projects to use as a starting point for
        development of your custom application. Click the links below to find
        out more information about each project:

        .. _tbl-sdk-ble-mesh-examples:
        .. table:: BLE Mesh examples available for the |DEVICE| platform

            +----------------------------------+----------------------------------------------------------------------------------------------+
            | Name                             | Description                                                                                  |
            +----------------------------------+----------------------------------------------------------------------------------------------+
            | `simple_mesh_node`_              | Implements a basic BLE mesh node with Relay, Proxy, Friend, and Low Power Node capabilities  |
            |                                  | using GATT/ADV bearer                                                                        |
            +----------------------------------+----------------------------------------------------------------------------------------------+
            | `simple_mesh_node_oad_offchip`_  | Same as simple_mesh_node  above with off-chip OAD functionality to enable wireless           |
            |                                  | firmware updates.                                                                            |
            +----------------------------------+----------------------------------------------------------------------------------------------+
            | `simple_mesh_node_oad_onchip`_   | Same as simple_mesh_node above with on-chip OAD functionality to enable wireless             |
            |                                  | firmware updates.                                                                            |
            +----------------------------------+----------------------------------------------------------------------------------------------+
            | `mesh_app_python`_               | A Python based network processor project that interfaces with a simple_mesh_node             |
            +----------------------------------+----------------------------------------------------------------------------------------------+


        **Troubleshooting Help**

        While developing your custom application, you may run into issues that require
        the use of a debugger. See the **Debugging** chapter in the |BLE5_STACK| User's
        Guide for guidance.


.. _get-started-ble5-enhance:

Enhance Your Project
====================

.. Revert once cc23xx example are on github 
    The enhance track of :numref:`fig_ble5_suggested_workflow` is intended to take your
    product to
    the next level by leveraging TI’s web-based collateral. Additional
    resources found in these pages include application-specific source
    code examples, smart phone source code, and complete sub-system
    designs.
    
    -  **TI SimpleLink GitHub** `TI SimpleLink GitHub  <https://github.com/ti-simplelink/ble_examples>`_
    
    .. attention::

        Examples available on Github are not tested quarterly like
        the examples present in the |DEVICE| SDK.

Additional sample applications created to implement specific use
cases and examples. These are made to work in conjunction with the
SDK.

-  **TI Designs™** `https://www.ti.com/tidesigns <https://www.ti.com/reference-designs/index.html>`_

Examples of system designs containing complete hardware and
software examples, using the |DEVICE|.

.. _get-started-ble5-qualification:

Bluetooth Qualification
=======================
The |DEVICEAND| |BLE5_STACK| is Bluetooth qualified.

To prepare the qualification process, Texas Instruments experts have written
the `How to Certify Your Bluetooth Product <https://www.ti.com/lit/swra601>`_
guide to assist you through this process.

.. _get-started-ble5-support:

Getting Support
===============

- **E2E Forums** `www.ti.com/ble-forum <https://e2e.ti.com/support/wireless-connectivity/bluetooth/>`_

A support community providing answers to questions relating to
the |DEVICE| and other SimpleLink devices. You can browse questions from other developers
or ask your own questions if you run into issues developing with |BLE5_STACK| |version|.
