Библиотека Communications Toolbox™ для Bluetooth® Функции протокола позволяют вам распределять пакеты в пикосети Bluetooth с помощью симуляции дискретного времени (DTS). В DTS вы можете вызвать узел, только если у него есть операция для выполнения. Чтобы увеличить скорость симуляции, DTS реализует эти два основных временных значения.
Следующее время вызова - В это время симулятор запускает все образцы узла. Это значение задается каждым узлом посредством операций дискретного времени, таких как передача данных, прием данных, повторные передачи или передача данных с более высокого слоя на более низкий слой. Симулятор вызывается в то время, когда это минимум следующих значений времени вызова, заданных каждым узлом.
Истекшее время - это значение времени, прошедшего между последним и текущим вызовом симулятора.
Чтобы распределить пакеты в пикосети Bluetooth с помощью DTS, выполните следующие действия.
Создайте пикосеть 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/.