.. _network_processor_cc23xx:

Introduction
============

This page will describe how to use the |LP| as a Bluetooth Low Energy
(BLE) wireless network processor. A wireless network processor (:term:`NP`)
setup is a dual MCU solution, where an external MCU such as the 
the `CC32xx <https://www.ti.com/wireless-connectivity/wi-fi/design-development.html#featured>`_
manages the Bluetooth application layer (Profiles and Services) and sends 
commands to the |LP| BLE wireless MCU over a serial interface. In the NP
configuration, the BLE Host and Controller protocol stack elements reside on
the wireless MCU.
Adding BLE to your existing MCU quickly enables IoT capability in an existing
closed/cabled design.

.. note::

    A Network Processor is not the same as an HCI LE Controller-only
    configuration, such as supported by CC2564 and WiLink8 controllers.
    The |LP| wireless MCU does not support a standalone LE
    Controller-only configuration since the TI |SDK| (Host and Controller)
    executes on the |DEVICE|.


.. figure:: resources/simple_network_processor.png
    :align: center
    :width: 75%

Supported Interfaces 
====================


TI supports :term:`uNPI` to implement a network 
processor application, used for establishing a serial data link between a TI SoC
and external MCUs or PCs. This interface is an abstraction layer above a 
serial interface (UART or SPI) that handles sending / receiving data, 
power management, and data parsing.

Host Test
---------

Developers should consider HostTest for developing a dual-MCU BLE solution if
they need to support the Central or multiple GAP roles and are familiar with
the HCI and Vendor-Specific (VS) HCI protocol implementation.

A combination of HCI and VS HCI commands/events form the interface to the
HostTest app from the application processor. HostTest uses NPI (non Unified
version, see link above) to send and receive raw HCI-formatted commands over the
serial interface, and pack/unpack them for the BLE stack to process. At the NPI
layer all HCI packets are queued up asynchronously. NPI primarily serves to
pack and unpack the HCI data structures into byte arrays, all HCI packets are
sent in a FIFO manner.

The HCI Vendor Specific interface is described in the
`TI Vendor Specific HCI Guide`_.
See this document for more information about the TI Vendor Specific (VS)
HCI interface.
