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