Table of Contents
Introduction
The Key Node and Car Node applications support the following features: * Channel Sounding * BLE Handover (CS Handover, GATT Handover, and Connection Handover) * Connection Monitor Role
Requirements
The requirements for this project include: * 2 x CC2745 LaunchPads (more can be used if additional Car Nodes are needed)
Usage
To use the Key Node and Car Node applications, follow these steps:
Import projects: Import the
car_nodeandkey_nodeprojects fromSDK/examples/rtos/CC2745R10_Q1/ble5stack/into CCS.Build and flash: Build and flash the
key_node_LP_EM_CC2745R10_Q1_freertos_ticlangproject to one of your devices.- The Key Node can be configured as either Central or Peripheral via SysCfg.
- If the Key Node is configured as Central, use the
carNodeNamevariable inapp_key_node.cto automatically connect to your Car Node.
Install Python environment: Go to
SDK/tools/ble/ble_agentand follow the README file to install Python and the environment that controls the Car Node application.Channel Sounding Demo: The Channel Sounding Demo is used to measure the distance between the Key Node and the Car Node. To run the demo, follow these steps:
- Open and update the device comports in
SDK/tools/ble/ble_agent/examples/ble_device_car_node_with_distance.py. - Run the script from your
.venv:python ble_device_car_node_with_distance.py.
- Open and update the device comports in
Connection Handover Demo: The Connection Handover Demo is used to demonstrate the connection handover feature between the Car Node and multiple Key Nodes. To run the demo, follow these steps:
- Use
SDK/tools/ble/ble_agent/examples/ble_device_connection_handover.py. - Update comports to match the Car Node devices.
- Execute the Python script from your
.venv:python ble_device_connection_handover.py. - The demo will simulate a connection handover between the Car Node and multiple Key Nodes.
- Use
Notes
- Reset the Car Node and then the Key Node after each run.
To enable more antennas, follow these steps:
Sysconfig -> BLE -> BLE Features -> Channel Sounding Configuration -> Number of Antennas.
Sysconfig -> RCL -> Additional RF GPIO Signals -> Check PBEGPO2 and PBEGPO3.
Modify the
acivariable inble_device_car_node_with_distance.pyto choose the desired antenna configuration.
Example Code
cs_set_procedure_params = {
"conn_handle": 0,
"config_id": 0,
"max_procedure_duration": 0xFFFF,
"min_procedure_interval": 0,
"max_procedure_interval": 0,
"max_procedure_count": 1,
"min_sub_event_length": 0xD6D8,
"max_sub_event_length": 0xD6D8,
"aci": 0, # Change to 7 for 2x2 antenna configuration
"phy": 1,
"tx_power_delta": 0x80,
"preferred_peer_antenna": 0b0001, # Bitmap. Set number of bits on as the peer's number of antennas (not more)
"snr_ctrl_i": 0xFF,
"snr_ctrl_r": 0xFF,
"enable": 0,
}
CS_PROCESS_EXT_RESULTS Flag
The CS_PROCESS_EXT_RESULTS flag enables extended processing of Channel Sounding (CS) results in the Car Node application. When this flag is defined in your project or build system, the Car Node will process additional information from CS operations, which may include advanced metrics or debugging data for development and evaluation purposes.
How to use:
- Define CS_PROCESS_EXT_RESULTS in your project settings, build system, or as a compiler flag (e.g., add -DCS_PROCESS_EXT_RESULTS to your build options).
- Rebuild and flash the Car Node application.
- When enabled, the application will output or log extended CS results as part of its normal operation.
Typical use cases: - Debugging or evaluating CS performance. - Collecting more detailed CS data for research or advanced application features.
If you do not require extended CS result processing, you can leave this flag undefined for standard operation.