The Dynamic Multi-protocol Manager (DMM) is a software layer that enables a single radio to run multiple wireless protocols concurrently by switching between protocol stacks in real time. DMM allows the developer to manage both protocol stacks effectively and minimize latency.
By using the concurrent multi-protocol application, developers can define system states, determine task priority, and manage multiple wireless stacks concurrently. During execution, the DMM Policy Scheduler allocates radio time for each protocol determined by the priority set in the policy table and the current application states.
While some solutions rely on fixed priority or time-slotted implementations, TI offers a Policy Scheduler solution that is highly customizable and allows priorities to be set dynamically by different application states.
- Software enabling multi-protocol networks
- Dynamically prioritizes radio usage
- Simplifies concurrent multi-protocol development
This repository contains the DMM examples for TI devices supported by the SimpleLink Low Power F2 SDK. To learn which devices are supported by the SDK, refer to the SDK Device Association section.
The examples/ directory contains the same DMM examples provided in the SDK, in the same directory structure.
The SimpleLink Low Power F2 SDK is provided as Git submodules in the cc13xx_cc26xx_sdk subdirectory.
As a quick reference, you can initialize and update a single Git submodule in one step like this:
# To initialize and update the F2 SDK
.../simplelink-dmm-examples$ git submodule update --init cc13xx_cc26xx_sdk
Alternatively you can clone and initialize/update all submodules when cloning a repo
with git clone --recurse-submodules {repo-ref}
. See Git documentation for
details.
Once initialized and updated, you can refer to the SDK's README.md and Release Notes for details on how to download its dependencies, and build its libraries.
Note, the links above are to online copies of the latest SDK READMEs. They are useful for online readers, but be sure to consult the SDK submodule's actual README.md after cloning, checking out your branch/tag, and updating your submodule, as details may change from release to release.
Each time you update an SDK submodule, you will need to build its libraries.
This process can vary between the different SDKs, so refer to each SDK's
README.md for specifics, but generally you will need to edit the imports.mak
file at the top, then run make
.
Note that sometimes the dependencies can vary from SDK to SDK. For example, if you've been using the F2 SDK and SysConfig version X, and want to start using the F3 SDK, it may require a newer SysConfig version. So, again, be sure to refer to each SDK's README.md and Release Notes.
Often newer versions of dependencies are compatible, so you can use newer-and-compatible versions than the SDK was validated against. But each SDK does have its own imports.mak so you can specify different dependency versions for each SDK if needed.
After building the SDK libraries, you can build the DMM examples. The examples support two ways to build:
Remember, before building the examples, you must build the SDK libraries!
The examples also include TI Code Composer Studio (CCS) project support, enabling them to be imported into, and built by, CCS.
Before importing the example, the SDK(s) location must be registered with CCS:
- Preferences->Code Composer Studio->Products
- Select Add...
- Navigate to the SDK submodule location
- Select Open
Repeat for each SDK you will be using. This registers the SDK with CCS. Successful registration of an SDK will show it in the "Discovered Products" list:
If using FreeRTOS, its location must also be configured in CCS:
- Preferences->Code Composer Studio->Build->Environment
- Select Add...
- Add the variable name
FREERTOS_INSTALL_DIR
- Assign it to the absolute path of your installation of FreeRTOS
Now you can import an example!
- Project->Import CCS Project...
- Select search-directory->Browse...
- Navigate to a directory within your clone of the example repo to search for examples and Select Folder
- Select the example(s) you wish to import and press Finish
If building with F2 SDK 7.10.01.24 you will need to install SysConfig to 1.16.2 and update the project.
- Install SysConfig 1.16.2 (see cc13xx_cc26xx_sdk instructions)
- Select the project to build
- Right-click and select "Properties."
- Under General, select Products, then SysConfig
- Click on Edit and select 1.16.2
Remember, before building the examples, you must build the SDK libraries!
Follow the instructions in your respective SDK's Quick Start Guide:
When building on *nix platform (Linux/Mac) the library build may fail with an error similar to:
error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ranlib: Unsupported triple for mach-o cpu type: thumbv6m-ti-none-eabi
To fix, make sure the arm version of ranlib is in the path before the OS version of ranlib located in /usr/bin. Simply set the location of the gcc ARM ranlib ahead in the shell's path. Example:
$ export `PATH`=/Users/username/ti/gcc_arm_none_eabi_9_2_1/arm-none-eabi/bin:$PATH
Click the links below to find the devices supported by each SDK.