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