Как изменить мощность передачи в Inet 4.2

#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 отличается.