#omnet
Вопрос:
Как изменить мощность передачи беспроводного узла в Inet 4.2? Какой код класса и функций Inet следует изменить? Например, я хочу изменить мощность передачи, динамически увеличенную на 0,1 МВт в секунду во время моделирования, следующим образом:
- Время начала моделирования 2 МВт
- В 1-й секунде времени моделирования 2,1 МВт (когда время моделирования=1, то мощность TX узла должна составлять 2,1 МВт)
- За 2-ю секунду моделирования 2,2 МВт
- и так далее.
Спасибо
Ответ №1:
Определенно, вы можете динамически изменять мощность передачи по своему усмотрению.
В вашем .CC
Во-первых, найдите свой передатчик и правильно введите его имя, получив его указатель следующим образом:
cModule * transmitter = getParentModule()->getSubmodule("ieee80211Nic2")->getSubmodule("radio")->getSubmodule("transmitter");
flatTransmitter = const_cast<FlatTransmitterBase *>(check_and_cast<const FlatTransmitterBase *>(transmitter));
(Удалите или добавьте getParentModule в зависимости от того, где находится ваш передатчик)
Преобразование передачи мощности в Вт из дБ:
pt_w = pow(10.0, pt_dbm/10)/1000;
Изменение мощности передачи с помощью объекта FlatTransmitter:
flatTransmitter->setPower(W(pt_w));
В вашем .Ч
double pt_dbm;
double pt_w;
Не забудьте включить заголовок FlatTransmitterBase.h как в .cc, так и в .h:
#include "inet/physicallayer/base/packetlevel/FlatTransmitterBase.h"
Обратите внимание, что эта процедура может отличаться, если ваша версия OMNeT отличается.