exponenta event banner

Распространение пакетов в Bluetooth Piconet

Библиотека коммуникационных Toolbox™ для протокола Bluetooth ® позволяет распределять пакеты в пикосети Bluetooth с помощью дискретного моделирования времени (DTS). В DTS вызов узла возможен только в том случае, если для него требуется выполнить операцию. Для увеличения скорости моделирования DTS реализует эти два основных значения времени.

  • Время следующего вызова - в это время симулятор запускает все экземпляры узла. Это значение задается каждым узлом посредством дискретных временных операций, таких как отправка данных, прием данных, повторные передачи или передача данных с более высокого уровня на более низкий уровень. Симулятор вызывается в момент времени, который является минимальным из следующих значений времени вызова, заданных каждым узлом.

  • Истекшее время - это время, прошедшее между последним и текущим вызовами симулятора.

Распределение пакетов

Чтобы распределить пакеты в пикосети Bluetooth с помощью DTS, выполните следующие действия.

Packet distribution in a Bluetooth piconet using discrete time simulation

Создание пикосети Bluetooth

Создайте пикосеть Bluetooth и настройте узлы как главные и подчиненные. Сведения о создании пикосети Bluetooth см. в разделе Создание пикосети Bluetooth путем включения трафика ACL, трафика SCO и AFH. В этом примере массив ячеек, btNodes, создается, представляя пикосеть Bluetooth. btNodes содержит все узлы пикосети с включенным полным стеком.

Запустить экземпляр узла

Задайте время моделирования, текущее время, истекшее время и время следующего вызова.

simulationTime = 2*1e6;                                                      % In microseconds                                 
currentTime = 0;
nextInvokeTime = zeros(1,numel(btNodes));

Моделирование узлов Bluetooth путем запуска экземпляра узла для каждого узла Bluetooth.

while(curTime < simulationTimeInUs)
  for nodeIdx = 1:numel(btNodes)                                            % Simulate all the Bluetooth nodes
    nextInvokeTimes(nodeIdx) = runNode(btNodes{nodeIdx},elapsedTime);      % Run the Bluetooth node instance
  end

Распределить пакеты

Для распределения пакетов из каждого узла в буфер приема других узлов используйте helperBluetoothDistributePackets функция. Эта вспомогательная функция принимает btNodes в качестве входа и возвращает флаг передачи, isPacketDistributed, указывая, свободен канал или нет.

isPacketDistributed = helperBluetoothDistributePackets(btNodes);

Обновить истекшее время и вызвать симулятор

На основе флага передачи обновите истекшее время. Если пакеты не должны быть распределены, обновите истекшее время до следующего события в узле.

  if isPacketDistributed
    elapsedTime = 0;
  else
    elapsedTime = min(nextInvokeTimes(nextInvokeTimes ~= -1));
  end
end

Ссылки

[1] Веб-сайт технологии Bluetooth. «Веб-сайт Bluetooth Technology | Официальный веб-сайт Bluetooth Technology». Доступ состоялся 27 сентября 2020 года. https://www.bluetooth.com/.

[2] Группа специальных интересов Bluetooth (SIG). «Спецификация ядра Bluetooth». Версия 5.2. https://www.bluetooth.com/.

Связанные темы