Main Content

bluetoothNode

Bluetooth BR/EDR node

Since R2022b

    Download Required: To use bluetoothNode, first download the Communications Toolbox Wireless Network Simulation Library add-on. For more information, see Get and Manage Add-Ons.

    Description

    Use the bluetoothNode object to create and configure a Bluetooth® basic rate/enhanced data rate (BR/EDR) node.

    Creation

    Description

    BRNode = bluetoothNode(role) creates a Bluetooth BR/EDR node object with the Role property set to role.

    example

    BRNode = bluetoothNode(role,Name=Value) creates a Bluetooth BR/EDR node object with the Role property set to role and the other properties specified by using one or more optional name-value arguments. For example, bluetoothNode("central",NoiseFigure=5) sets the noise figure of the specified node to 5 dB.

    Properties

    expand all

    This property is read-only.

    Role of the Bluetooth BR/EDR node, specified as "central" or "peripheral". The role argument sets the value of this property.

    Data Types: char | string

    Name of Bluetooth BR/EDR node, specified as a character vector, string scalar, string array, or cell array of character vectors. The default format of this property is "NodeN", where N is the node identifier specified by the ID property.

    When you create an array of bluetoothNode objects by specifying the Position property, you can name each node in the array at once by specifying the Name as a string array or cell array of character vectors. If the length of the Name array is greater than the number of nodes, the extra names do not apply. If the length of the Name array is less than the number of nodes, the extra nodes get default names.

    Data Types: char | string | cell

    Node position in 3-D Cartesian coordinates, specified as a numeric N-by-3 matrix, where N is the number of nodes. By specifying a matrix with N greater than one, you can create a 1-by-N array of bluetoothNode objects.

    Specify this value in meters. This value specifies the positions of the nodes in Cartesian x-, y-, and z-coordinates.

    Data Types: double

    Transmitter antenna gain, specified as a finite numeric scalar. Units are in dB.

    Data Types: double

    Receiver antenna gain, specified as a finite numeric scalar. Units are in dB.

    Data Types: double

    Receiver sensitivity, specified as a finite numeric scalar. This property sets the minimum power that the receiver requires to detect the incoming packet. If the received power of an incoming packet is below this value, the node drops the packet. Units are in dBm.

    Data Types: double

    Noise figure, specified as a nonnegative finite scalar. The object uses this value to apply thermal noise on the received packet. Units are in dB.

    Data Types: double

    Type of interference modeling, specified as "overlapping-adjacent-channel" or "non-overlapping-adjacent-channel".

    • "overlapping-adjacent-channel" — The object considers signals overlapping in time and frequency to be interference.

      Overlapping adjacent channel interference

    • "non-overlapping-adjacent-channel" — The object considers signals that overlap with the SOI in time and with the interval [f1fd, f2 + fd] in frequency to be interference. f1 and f2 are the starting and ending frequencies of the SOI, respectively. fd is the value of the MaxInterferenceOffset property.

      Non-overlapping adjacent channel interference

    Data Types: char | string

    Maximum frequency offset for determining signal interference, specified as a nonnegative scalar. Units are in Hz. This property specifies the offset between the edge of the SOI frequency and the edge of the interfering signal. If you specify this property as Inf, the object considers all the signals that overlap in time, regardless of their frequency, to be interference. If you specify this property as a finite nonnegative scalar, the object considers all the signals overlapping in time and with frequency in the range [(f1MaxInterferenceOffset), (f2 + MaxInterferenceOffset)], to be interference.

    Dependencies

    To enable this property, set the InterferenceModeling property to "non-overlapping-adjacent-channel".

    Data Types: double

    This property is read-only.

    Node identifier, stored as an integer scalar. This value specifies a unique identifier for the node in the simulation. The object assigns this value incrementally, starting from 1.

    Note

    If you create and store the Bluetooth BR/EDR nodes in an uninitialized matrix, the IDs that this property allocates to the nodes can be nonsequential because of the memory allocation to the object in the matrix. For more information about MATLAB memory allocation, see How MATLAB Allocates Memory.

    Data Types: double

    Address of the Bluetooth BR/EDR node, stored as a 12-element character vector or a string scalar denoting a 6-octet hexadecimal value. This value is unique to each Bluetooth BR/EDR node and is derived from the ID property.

    Data Types: char | string

    This property is read-only.

    Bluetooth BR/EDR connection configuration parameters, stored as a bluetoothConnectionConfig object.

    This property is read-only.

    Number of Peripheral nodes associated with the Central node, stored as a positive integer.

    Dependencies

    To enable this property, set the Role property to "central".

    Data Types: double

    Object Functions

    expand all

    addMobilityAdd random waypoint mobility model to Bluetooth BR/EDR node
    addTrafficSourceAdd data traffic source to Bluetooth BR/EDR node on ACL connection
    configureSchedulerConfigure baseband scheduler at Bluetooth BR/EDR Central node
    statisticsGet statistics of Bluetooth BR/EDR node
    updateChannelListUpdate channel list of Bluetooth BR/EDR node

    Examples

    collapse all

    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;

    Initialize the wireless network simulator.

    networkSimulator = wirelessNetworkSimulator.init;

    Create two Bluetooth BR nodes, one with the "central" role and the other with the "peripheral" role. Specify the position of the Peripheral node, in meters.

    centralNode = bluetoothNode("central");
    peripheralNode = bluetoothNode("peripheral",Position=[1 0 0]);

    Add a random waypoint mobility model to the peripheral node. Set the shape of the node's mobility area to "circle".

    addMobility(peripheralNode,BoundaryShape="circle")

    Create a default Bluetooth BR/EDR connection configuration object to configure and share a connection between the Bluetooth BR Central and Peripheral nodes.

    cfgConnection = bluetoothConnectionConfig;

    Configure the connection between the Central and the Peripheral nodes.

    connection = configureConnection(cfgConnection,centralNode,peripheralNode)
    connection = 
      bluetoothConnectionConfig with properties:
    
        CentralToPeripheralACLPacketType: "DH1"
        PeripheralToCentralACLPacketType: "DH1"
                           SCOPacketType: "None"
                     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: 40
                           InstantOffset: 240
                        TransmitterPower: 20
                      SupervisionTimeout: 32000
                          CentralAddress: "D091BBE70001"
                        PrimaryLTAddress: 1
    
    

    Create and configure a networkTrafficOnOff object to generate an On-Off application traffic pattern.

    traffic = networkTrafficOnOff(DataRate=200,PacketSize=27, ...
        GeneratePacket=true,OnTime=inf);

    Add application traffic from the Central to the Peripheral node.

    addTrafficSource(centralNode,traffic,DestinationNode=peripheralNode);

    Add the Central and Peripheral nodes to the wireless network simulator.

    addNodes(networkSimulator,[centralNode peripheralNode]);

    Specify the simulation time, in seconds.

    simulationTime = 0.3;

    Run the simulation for the specified simulation time.

    run(networkSimulator,simulationTime);

    Retrieve the application, baseband, and physical layer (PHY) statistics corresponding to the Central and Peripheral nodes.

    centralStats = statistics(centralNode)
    centralStats = struct with fields:
            Name: "Node1"
              ID: 1
             App: [1x1 struct]
        Baseband: [1x1 struct]
             PHY: [1x1 struct]
    
    
    peripheralStats = statistics(peripheralNode)
    peripheralStats = struct with fields:
            Name: "Node2"
              ID: 2
             App: [1x1 struct]
        Baseband: [1x1 struct]
             PHY: [1x1 struct]
    
    

    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;

    Initialize the wireless network simulator object.

    networkSimulator = wirelessNetworkSimulator.init();

    Create two Bluetooth EDR nodes, one with the "central" role and other with the "peripheral" role. Specify the position of the Peripheral node in meters.

    centralNode = bluetoothNode("central");
    peripheralNode = bluetoothNode("peripheral",Position=[1 0 0]);

    Create a default Bluetooth BR/EDR connection configuration object to configure and share a connection between Bluetooth EDR Central and Peripheral nodes.

    cfgConnection = bluetoothConnectionConfig(CentralToPeripheralACLPacketType="2-DH3",PeripheralToCentralACLPacketType="2-DH5");

    Configure connection between the Central and the Peripheral nodes.

    connection = configureConnection(cfgConnection,centralNode,peripheralNode)
    connection = 
      bluetoothConnectionConfig with properties:
    
        CentralToPeripheralACLPacketType: "2-DH3"
        PeripheralToCentralACLPacketType: "2-DH5"
                           SCOPacketType: "None"
                     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: 40
                           InstantOffset: 240
                        TransmitterPower: 20
                      SupervisionTimeout: 32000
                          CentralAddress: "D091BBE70001"
                        PrimaryLTAddress: 1
    
    

    Create and configure a networkTrafficOnOff object to generate an On-Off application traffic pattern.

    traffic = networkTrafficOnOff(DataRate=200,PacketSize=27, ...
        GeneratePacket=true,OnTime=inf);

    Add application traffic from the Central to the Peripheral node.

    addTrafficSource(centralNode,traffic,DestinationNode=peripheralNode);

    Schedule channel list update at the Central node at 0.05 seconds to use channels 0 to 40.

    scheduleAction(networkSimulator,@(varargin) updateChannelList(centralNode, ...
        0:40,DestinationNode=peripheralNode),[],0.05);

    Add the Central and Peripheral nodes to the wireless network simulator.

    addNodes(networkSimulator,[centralNode peripheralNode]);

    Specify the simulation time in seconds.

    simulationTime = 0.3;

    Run the simulation for the specified simulation time.

    run(networkSimulator,simulationTime);

    Retrieve application, baseband, and physical layer (PHY) statistics corresponding to the Central and Peripheral nodes.

    centralStats = statistics(centralNode);
    peripheralStats = statistics(peripheralNode);

    References

    [1] Bluetooth Technology Website. “Bluetooth Technology Website | The Official Website of Bluetooth Technology.” Accessed May 22, 2022. https://www.bluetooth.com/.

    [2] Bluetooth Core Specifications Working Group. "Bluetooth Core Specification" v5.3. https://www.bluetooth.com/.

    Version History

    Introduced in R2022b

    expand all