Main Content

Bluetooth BR/EDR Data and Voice Communication with WLAN Signal Interference

This example shows how to simulate Bluetooth basic rate/enhanced data rate (BR/EDR) data and voice communication with WLAN signal interference by using Bluetooth® Toolbox and Communications Toolbox™ Wireless Network Simulation Library.

Using this example, you can:

  • Create and configure a Bluetooth BR/EDR piconet with Central and Peripheral nodes.

  • Simulate data and voice transmission in the piconet by using asynchronous connection-oriented (ACL) and synchronous connection-oriented (SCO) logical transport.

  • Analyze the performance of the Bluetooth BR/EDR network with and without WLAN interference.

  • Visualize Bluetooth BR/EDR noncollaborative coexistence with WLAN interference for each Peripheral node by implementing adaptive frequency hopping (AFH).

  • Visualize the status (good or bad) and success rate (recent and cumulative) of each channel.

Additionally, you can use this example script to perform these tasks.

ACL and SCO Logical Transport

The Bluetooth nodes operating with a BR/EDR physical layer (PHY) communicate with each other simultaneously by transmitting data packets over an ACL logical transport and voice packets over SCO logical transport as random bits. The data and voice packets can be sent together over SCO logical transport as Data Voice (DV) packets. The Bluetooth system supports point-to-point or point-to-multipoint connections called piconets. Each piconet consists of a node in the Central role, with other nodes in the Peripheral role. The Central and Peripheral exchange data over multiple logical transports. This example supports ACL and SCO logical transports between Central and Peripherals. The supported ACL packets are one-, three-, and five- slot packets of Data-Medium Rate (DM) and Data-High Rate (DH) packets. The supported SCO packets are High quality Voice (HV), and DV packets. This figure shows the communication between a Central and three Peripherals in a piconet over ACL and SCO logical transports.

Bluetooth BREDR Logical Transports.jpg

Bluetooth uses time slots for communication between the nodes. The duration of each slot is 625 microseconds. The Central node initiates the transmission in even slots and extends the transmission to odd slots when transmitting a multislot packet. If the Central node does not have information to transmit, it polls the Peripheral node for every poll interval. For more information about polling in the Active mode, see Bluetooth Core Specification v5.3 [2] - Vol 2, Part B, Section 8.6.1. The Peripheral node initiates the transmission in odd slots and extends the transmission to even slots when transmitting a multislot packet.

Noncollaborative Bluetooth-WLAN Coexistence Scenario

Interference between Bluetooth and WLAN can be mitigated by two types of coexistence mechanisms: collaborative and noncollaborative. Noncollaborative coexistence mechanisms do not exchange information between two wireless networks. Collaborative coexistence mechanisms collaborate and exchange network-related information between two wireless networks. For more information about coexistence between Bluetooth and WLAN, see Bluetooth-WLAN Coexistence.

In this example, the Bluetooth BR/EDR piconet consists of one Bluetooth Central node and one Peripheral node. The scenario consists of two WLAN nodes, which introduce interference in the Bluetooth signal. The example simulates this coexistence scenario between Bluetooth and WLAN.

Bluetooth and WLAN Coexistence Scenario

Check for Support Package Installation

Check if the Communications Toolbox™ Wireless Network Simulation Library support package is installed. If the support package is not installed, MATLAB® returns an error with a link to download and install the support package.

wirelessnetworkSupportPackageCheck

Configure Coexistence Scenario

Set the seed for the random number generator to 1 to ensure repeatability of results. The seed value controls the pattern of random number generation. Initializing the random number generator using the same seed assures the same result. For high-fidelity simulation results, change the seed value and average the results over multiple simulations.

rng(1,"twister");

Create a wireless network simulator object.

networkSimulator = wirelessNetworkSimulator.init;

Create a Bluetooth BR/EDR node, specifying the role as "central". Set the properties of the Central node.

centralNode = bluetoothNode("central", ...
    Name="Central Node", ...
    Position=[0 0 0])                            % x-, y-, and z-coordinates in meters
centralNode = 
  bluetoothNode with properties:

          TransmitterGain: 0
             ReceiverGain: 0
      ReceiverSensitivity: -100
              NoiseFigure: 0
     InterferenceModeling: "overlapping-adjacent-channel"
    MaxInterferenceOffset: 100000000
     InterferenceFidelity: 0
                     Name: "Central Node"
                 Position: [0 0 0]

   Read-only properties:
                     Role: "central"
              NodeAddress: "6AC1F4B80001"
         ConnectionConfig: [1x1 bluetoothConnectionConfig]
           NumConnections: 0
                       ID: 1

Create a Bluetooth BR/EDR node, specifying the role as "peripheral". Set the properties of the Peripheral node.

peripheralNode = bluetoothNode("peripheral", ...
    Name="Peripheral Node", ...                                  
    Position=[5 0 0])                            % x-, y-, and z-coordinates in meters
peripheralNode = 
  bluetoothNode with properties:

          TransmitterGain: 0
             ReceiverGain: 0
      ReceiverSensitivity: -100
              NoiseFigure: 0
     InterferenceModeling: "overlapping-adjacent-channel"
    MaxInterferenceOffset: 100000000
     InterferenceFidelity: 0
                     Name: "Peripheral Node"
                 Position: [5 0 0]

   Read-only properties:
                     Role: "peripheral"
              NodeAddress: "00077F4E0002"
         ConnectionConfig: [1x1 bluetoothConnectionConfig]
           NumConnections: 0
                       ID: 2

Create a Bluetooth BR/EDR configuration object. Assign the configuration to the Central and Peripheral nodes.

connectionConfig = bluetoothConnectionConfig;
connectionConfig.CentralToPeripheralACLPacketType = "DH1";
connectionConfig.PeripheralToCentralACLPacketType = "DH1";
connectionConfig.SCOPacketType = "HV2";
connectionConfig.PollInterval = 10;                                                 % In seconds
connectionConfig.InstantOffset = 96;                                                % In slots
connectionConfig.TransmitterPower = 0;                                              % In dBm
connectionConfig = configureConnection(connectionConfig,centralNode,peripheralNode)
connectionConfig = 
  bluetoothConnectionConfig with properties:

    CentralToPeripheralACLPacketType: "DH1"
    PeripheralToCentralACLPacketType: "DH1"
                       SCOPacketType: "HV2"
                 HoppingSequenceType: "Connection adaptive"
                        UsedChannels: [0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 ... ] (1x79 double)
                        PollInterval: 10
                       InstantOffset: 96
                    TransmitterPower: 0
                  SupervisionTimeout: 32000
                      CentralAddress: "6AC1F4B80001"
                    PrimaryLTAddress: 1

Configure Application Traffic

Create a networkTrafficOnOff object to generate an On-Off application traffic pattern. Configure the On-Off application traffic pattern for ACL communication at the Central and Peripheral nodes by specifying the application data rate, packet size, and on state duration. Attach application traffic from the Central to the Peripheral nodes for ACL communication. The application traffic for SCO communication is created and configured at the Central and Peripheral node by default in the Bluetooth node.

central2PeripheralTrafficSource = networkTrafficOnOff(...
    OnTime=inf, ...                                                % In seconds
    DataRate=200, ...                                              % In Kbps
    PacketSize=27, ...                                             % In bytes
    GeneratePacket=true);
addTrafficSource(centralNode,central2PeripheralTrafficSource, ...
    DestinationNode=peripheralNode);

Attach application traffic from the Peripheral to the Central nodes for ACL communication.

peripheral2CentralTrafficSource = networkTrafficOnOff(...
    OnTime=inf, ...                                                  % In seconds
    DataRate=200, ...                                                % In Kbps
    PacketSize=27, ...                                               % In bytes
    GeneratePacket=true);
addTrafficSource(peripheralNode,peripheral2CentralTrafficSource, ...
    DestinationNode=centralNode);

Configure WLAN Signal Interference

To add WLAN signal interference, set the enableWLANInterference flag to true.

enableWLANInterference = true;

Specify the number of WLAN nodes and their positions in the network. The WLAN nodes introduce interference in the network and do not model the PHY and MAC behavior.

Set the properties of the WLAN nodes. Specify the source of WLAN interference by using one of these options.

  • "Generated" - To add a WLAN toolbox™ signal to interfere with the communication between Bluetooth LE nodes, select this option and uncomment the WLAN configuration object code.

  • "BasebandFile" - To add a WLAN signal from a baseband file with the.bb extension to interfere with the communication between Bluetooth nodes, select this option. You can specify the file name using the BasebandFile input argument. If you do not specify a baseband file, the example adds the default file, WLANHESUBandwidth20 to the WLAN signal.

To determine the path loss of the channel during the transmission, the example uses the distance between the nodes. Create WLAN nodes to introduce interference in the network by using the helperInterferingWLANNode helper object.

if enableWLANInterference
    wlanInterferenceSource = "BasebandFile";
    numWLANNodes = 2;
    wlanNodePositions = [0 7 5; 0 3 0];                                       % x-, y-, and z-coordinates in meters
    wlanCenterFrequency =  [2.442e9; 2.447e9];                                % Center frequency (in Hz) based on the channel of operation
    wlanNodes = helperInterferingWLANNode.empty(0,numWLANNodes);
    for wlanIdx=1:numWLANNodes
        wlanNodeObj = helperInterferingWLANNode(...
            WaveformSource=wlanInterferenceSource, ...
            Position=wlanNodePositions(wlanIdx,:), ...
            Name="WLAN node", ...
            TransmitterPower=20, ...                                          % In dBm
            CenterFrequency=wlanCenterFrequency(wlanIdx), ...
            Bandwidth=20e6, ...                                               % In Hz
            SignalPeriodicity=2e-3);                                          % In seconds
%
% %       To add interfering signal generated using WLAN Toolbox, uncomment this code
%         if strcmpi(wlanInterferenceSource, "Generated")
%             wlanNodeObj.FormatConfig = wlanHTConfig("ChannelBandwidth","CBW20");
%         end
%
        wlanNodes(wlanIdx) = wlanNodeObj;
    end
end

Create Bluetooth BR/EDR Network

Create a Bluetooth BR/EDR network consisting of the Bluetooth BR/EDR nodes.

bluetoothNodes = [centralNode peripheralNode];

Add the Bluetooth and WLAN nodes (if any) to the simulator.

addNodes(networkSimulator,bluetoothNodes);
if enableWLANInterference
    addNodes(networkSimulator,wlanNodes);
end

Visualization and Channel Classification

Specify the simulation time.

simulationTime = 1.5;  % In seconds

To implement channel classification, enable the enableChannelClassification variable.

enableChannelClassification = true;

Schedule Channel Classification

The Bluetooth BR/EDR signal transmitted in a particular channel suffers interference from the WLAN signals. The Bluetooth node pseudorandomly selects a new channel from the channel map by using frequency hopping. This example classifies the channels using the AFH algorithm only when you enable channel classification. For each Peripheral node, the Central node periodically classifies the channels as "good" or "bad" based on the total packets received and failed in that channel. If the current number of good channels is less than the preferred number of good channels, the example reclassifies all the bad channels as good channels. The Central node maintains a different channel map for each Peripheral node.

This example implements channel classification by periodic evaluation of the packet failures of each channel. For each Peripheral node, create a channel classifier by using the helperBluetoothChannelClassification helper object and schedule the action for each Peripheral node. You can schedule a custom action in the simulation by using the scheduleAction object function of the wirelessNetworkSimulator object. For example, each time you call the simulator, you can schedule an action to plot the state transitions. Specify the function handle, input argument, absolute simulation time, and periodicity of the callback.

Create a function handle to classify the channel by using the classifyChannels object function of the helperBluetoothChannelClassification helper object. Schedule the channel classification for the periodicity of the callback by using the scheduleAction object function of the wirelessNetworkSimulator object. To perform a channel classification for the Peripheral nodes, create and schedule the action for individual destinations.

if enableChannelClassification
    classifierObj = helperBluetoothChannelClassification(...
        centralNode,peripheralNode,PERThreshold=40);
    classifyFcn = @(varargin) classifierObj.classifyChannels;
    userData = [];                                                            % User data needed to be passed to the callback function
    callAt = 0;                                                               % Absolute simulation time, in seconds
    periodicity = 250e-3;                                                     % In seconds
    
    scheduleAction(networkSimulator,classifyFcn,userData,callAt,periodicity); % Schedule channel classification
end

Visualization

Enable the option to visualize the Bluetooth coexistence with WLAN and the channel hopping sequence.

enableVisualization = true;

Initialize coexistence visualization by using the helperVisualizeCoexistence helper object. To update the channel map for each channel map update and the status of the channel for each packet reception, listeners are created by using the addlistener function inside the helperVisualizeCoexistence helper object. When the ChannelMapUpdated and PacketReceptionEnded events are triggered at the Central node object, the listener listens to those events.

if enableVisualization && enableWLANInterference
    coexistenceVisualization = helperVisualizeCoexistence(simulationTime,bluetoothNodes,wlanNodes);
elseif enableVisualization && ~enableWLANInterference
    coexistenceVisualization = helperVisualizeCoexistence(simulationTime,bluetoothNodes);
end

Simulation Results

Run the simulation for the specified time and display the channel hopping sequence in the Bluetooth BR/EDR channels and the interference due to the WLAN signals. Visualize the state transitions, status (good or bad), and success rate (recent and cumulative) of each channel. The recent success rate represents the cumulative success rates between each channel classification interval. The overall success rate represents the cumulative success rate throughout the simulation time.

run(networkSimulator,simulationTime);

Retrieve Statistics

The example simulation generates these results.

  1. A run-time plot for each Central-Peripheral connection pair showing the status (good or bad) and success rate (recent and cumulative) of each channel.

  2. Channel classification statistics showing the total number of packets received and corrupted and the status (good or bad) of each channel for each classification interval.

  3. A bar plot for each peripheral showing the packet loss ratio and throughput between each channel map update.

  4. Application layer (APP), baseband, and PHY statistics for Central and Peripheral nodes.

Retrieve the channel classification statistics by using the classificationStatistics object function of the helperVisualizeCoexistence helper object. Use this object function to visualize the packet loss ratio and throughput between each channel map update for every Peripheral node.

if enableChannelClassification && enableVisualization
    bluetoothChannelStats = classificationStatistics(coexistenceVisualization,centralNode,peripheralNode);
end
Channel classification statistics of Peripheral Node 
                                           Channel 0    Channel 1    Channel 2    Channel 3    Channel 4    Channel 5    Channel 6    Channel 7    Channel 8    Channel 9    Channel 10    Channel 11    Channel 12    Channel 13    Channel 14    Channel 15    Channel 16    Channel 17    Channel 18    Channel 19    Channel 20    Channel 21    Channel 22    Channel 23    Channel 24    Channel 25    Channel 26    Channel 27    Channel 28    Channel 29    Channel 30    Channel 31    Channel 32    Channel 33    Channel 34    Channel 35    Channel 36    Channel 37    Channel 38    Channel 39    Channel 40    Channel 41    Channel 42    Channel 43    Channel 44    Channel 45    Channel 46    Channel 47    Channel 48    Channel 49    Channel 50    Channel 51    Channel 52    Channel 53    Channel 54    Channel 55    Channel 56    Channel 57    Channel 58    Channel 59    Channel 60    Channel 61    Channel 62    Channel 63    Channel 64    Channel 65    Channel 66    Channel 67    Channel 68    Channel 69    Channel 70    Channel 71    Channel 72    Channel 73    Channel 74    Channel 75    Channel 76    Channel 77    Channel 78
                                           _________    _________    _________    _________    _________    _________    _________    _________    _________    _________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________    __________

    ChannelStatusTillClassification_1          1            1            1            1            1            1            1            1            1            1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1            1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1              1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1    
    RxPacketsTillClassification_1              4            4            4            4            5            4            5            5            4            3             3             4             3             4             2             5             5             3             3             2             5             2             4             5             4             2             3             3             3             3             2            5             4             4             3             5             3             2             5             6             4             3             4             4             2             4             2             4             5             4             3             4             3             3             3              5             5             6             4             5             3             5             4             6             7             4             6             5             5             5             5             6             3             4             4             5             3             5             4    
    RxPacketsFailedTillClassification_1        0            0            0            0            0            0            0            0            0            0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0            5             4             4             2             5             3             2             4             6             4             3             4             4             2             4             2             4             5             4             3             4             3             3             2              2             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0    
    ChannelStatusTillClassification_2          1            1            1            1            1            1            1            1            1            1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1            0             1             0             1             0             1             1             0             0             1             1             1             0             1             0             1             0             1             0             1             0             1             1             1              1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1    
    RxPacketsTillClassification_2              6            6            6            5            7            7            7            7            6            4             4             5             4             7             2             8             6             6             3             3             6             5             4             9             5             3             4             4             4             5             2            5             5             4             3             5             5             3             5             6             6             3             7             4             5             4             6             4             8             4             7             4             7             6             8              8             8             8             8             7             6             7             8             8             9             6             9             7             7             7             9             8             6             6             6             7             7             7             8    
    RxPacketsFailedTillClassification_2        0            0            0            0            0            0            0            0            0            0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0            5             5             4             2             5             5             3             4             6             6             3             6             4             4             4             6             4             8             4             6             4             7             6             7              3             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0    
    ChannelStatusTillClassification_3          1            1            1            1            1            1            1            1            1            1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1            0             0             0             1             0             0             1             0             0             0             1             0             0             0             0             0             0             0             0             0             0             0             0             0              1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1    
    RxPacketsTillClassification_3              9           10            9            9            9           10           10           10            8            9             9             9             5             9             5             9            10             9             7             5            10             7             8            11             9             6             8             6             7             8             6            5             5             4             6             5             5             6             5             6             6             7             7             4             5             4             6             4             8             4             7             4             7             6             8             12            10            11            10            11             8             9            10            11            11            10            11            12            10            12            12            12            10             9             9            10            10            10            10    
    RxPacketsFailedTillClassification_3        0            0            0            0            0            0            0            0            0            0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0            5             5             4             5             5             5             6             4             6             6             7             6             4             4             4             6             4             8             4             6             4             7             6             7              4             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0    
    ChannelStatusTillSimulationEnds            1            1            1            1            1            1            1            1            1            1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1            0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0              0             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1             1    
    RxPacketsTillSimulationEnds               15           15           17           16           16           17           14           16           15           15            17            15            13            15            13            15            16            15            14            11            17            13            14            17            15            12            15            11            16            13            14            5             5             4             6             5             5             6             5             6             6             7             7             4             5             4             6             4             8             4             7             4             7             6             8             12            16            18            16            19            15            17            17            18            17            18            17            19            16            18            18            18            16            17            15            17            16            16            14    
    RxPacketsFailedTillSimulationEnds          0            0            0            0            0            0            0            0            0            0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0            5             5             4             5             5             5             6             4             6             6             7             6             4             4             4             6             4             8             4             6             4             7             6             7              4             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0             0    

Get the Central and Peripheral node statistics by using the statistics object function.

centralStats = statistics(centralNode)
centralStats = struct with fields:
        Name: "Central Node"
          ID: 1
         App: [1x1 struct]
    Baseband: [1x1 struct]
         PHY: [1x1 struct]

peripheralStats = statistics(peripheralNode)
peripheralStats = struct with fields:
        Name: "Peripheral Node"
          ID: 2
         App: [1x1 struct]
    Baseband: [1x1 struct]
         PHY: [1x1 struct]

The channel classification is carried out in a periodic manner based on the success of packet reception. The helperBluetoothChannelClassification helper object performs channel classification based on these factors: Periodicity interval, minimum receptions required to classify a channel, minimum number of good channels preferred, number of reception status to consider, and PER threshold. Channel classification enables Central and Peripheral nodes to communicate with each other by avoiding the interfered channels and thus minimizing the packet loss. The success rate is calculated at each Bluetooth channel. The simulation results confirm that when the transmit power of WLAN channel is high, the achieved success rate of the corresponding Bluetooth BR/EDR channel is low. Therefore, the Bluetooth nodes do not use these channels for communication. The simulation results show that the overall packet loss ratio decreases and overall throughput increases. Depending on the number of bad channels classified, the number of packet losses varies between multiple classifications. As a result, you observe fluctuations in the packet loss ratio and throughput values between multiple channel classifications.

Further Exploration

You can use this example to further explore these capabilities:

Add WLAN Signal Using WLAN Toolbox Features

To add a WLAN signal using WLAN Toolbox features, set the value of WaveformSource parameter of the wlanNodeObj or a helperInterferingWLANNode object to "Generated". Uncomment the code lines in the WLAN Signal Interference section. You can modify the WLAN packet format configuration object in the FormatConfig property of wlanNodeObj and assign it to the WLAN node. Set the bandwidth of the signal based on the assigned configuration object.

Add Custom Channel Classification

To add a custom channel classification algorithm, perform these steps:

  1. Create a custom channel classification object.

  2. Classify the channels by passing the classification function at an absolute simulation time or at a particular periodicity by using the scheduleAction object function.

  3. Instead of scheduling or calling the classification at certain simulation time instances, you can implement a custom channel classification algorithm by classifying the channels based on the status of the received packets.

  4. Update the status of the received packets by using the updateRxStatus object function of the helperBluetoothChannelClassification helper object.

  5. Classify the channels based on the status of the received packets by using the classifyChannels object function of the helperBluetoothChannelClassification helper object.

Add Multiple Peripheral Nodes To A Piconet

To add multiple Peripheral nodes to a piconet, perform these steps:

  1. Create Peripheral nodes by using the bluetoothNode object, setting the Role property to "peripheral".

  2. Create a connection configuration by using the bluetoothConnectionConfig object.

  3. Assign the configuration to the Central node and each Peripheral node.

  4. Generate and add application traffic at the Central and Peripheral nodes.

  5. Create a Bluetooth BR/EDR network with all the nodes.

  6. Enable channel classification at the Central node for each of the Peripheral nodes by creating an array of classifier objects.

  7. Schedule the action for each of the Peripheral nodes. Retrieve the statistics for all Peripheral nodes.

Add Multiple Piconets to the Network

To add multiple piconet to the network, perform these steps:

  1. Create additional Central nodes and Peripheral nodes.

  2. Create and assign the configuration between corresponding Central nodes and Peripheral nodes.

  3. Note that one Peripheral node can be configured to only one Central node.

  4. Generate and add application traffic at the Central and Peripheral nodes.

  5. Create a Bluetooth BR/EDR network with all the nodes.

  6. Enable channel classification for each of the Central nodes for each of the corresponding Peripheral nodes by creating an array of classifier objects.

  7. Schedule the action for each of the Peripheral nodes. Retrieve the statistics for all the Bluetooth nodes.

Appendix

The example uses these helper functions:

References

  1. Bluetooth Technology Website. “Bluetooth Technology Website | The Official Website of Bluetooth Technology.” Accessed September 20, 2022. https://www.bluetooth.com/

  2. Bluetooth Special Interest Group (SIG). "Bluetooth Core Specification". Version 5.3. https://www.bluetooth.com/

  3. IEEE® Standard 802.15.2™. "Coexistence of Wireless Personal Area Networks with Other Wireless Devices Operating in Unlicensed Frequency Bands". IEEE Recommended Practice for Information technology - Telecommunications and information exchange between systems - Local and metropolitan area networks - Specific requirements; IEEE Computer Society

See Also

Objects

Related Topics