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

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

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

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

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

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

Packet distribution in a Bluetooth piconet using discrete time simulation

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

Создайте пикосеть Bluetooth и сконфигурируйте узлы как Master и Slaves. Для получения информации о том, как создать пикосеть Bluetooth, смотрите Создание пикосети Bluetooth Piconet путем Включения трафика 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 Technology. Bluetooth Technology Website | Официальный сайт Bluetooth Technology. Доступ к 27 сентября 2020 года. https://www.bluetooth.com/.

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

Похожие темы