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

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

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

  • Прошедшее время — Это значение является временем, истекшим между последним и текущим вызовом средства моделирования.

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

Чтобы распределить пакеты в Bluetooth piconet использование DTS, выполните эти шаги.

Packet distribution in a Bluetooth piconet using discrete time simulation

Создайте Bluetooth Piconet

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

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

Установите время симуляции, текущее время, прошедшее время, и затем вызовите время.

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 | официальный сайт Технологии Bluetooth”. Полученный доступ 27 сентября 2020. https://www.bluetooth.com/.

[2] Специальная группа (SIG) Bluetooth. "Спецификация Ядра Bluetooth". Версия 5.2. https://www.bluetooth.com/.

Похожие темы