The main difference is the added interference model.
cpp 代码
- if (isInterferenceEnabled()){
- //printf ("pktRx=%ld, p=%ld, expiration=%f, now=%f\n", (long)pktRx_, (long)
- , expiration_, NOW);
- if (pktRx_) {
- if (expiration_ <= NOW) {
- pktRx_ = NULL;
- } else {
- //calculate interference of p onto pktRx_
- //arguments: receiver_type, receiver_freq, t_power, t_distance_rx_tx,
- interferer_type, interferer_freq, i_power, i_distance_rx
- /*
- printf ("R: X=%.2f Y=%.2f, T: X=%.2f Y=%.2f, I: X=%.2f Y=%.2f\n",
- ((MobileNode*)node_)->X(),((MobileNode*)node_)->Y(),
- pktRx_->txinfo_.getNode()->X(), pktRx_->txinfo_.getNode()->Y(),
- p->txinfo_.getNode()->X(), p->txinfo_.getNode()->Y());
- */
- int nberr = Interference::interference((MobileNode*)node_,
- pktRx_, expiration_ - HDR_CMN(pktRx_)->txtime(), p, NOW);
- int before= HDR_CMN(p)->error();
- HDR_CMN(pktRx_)->error() = nberr>0 || HDR_CMN(pktRx_)->error();
- if (nberr>0)
- printf ("%f nbErr=%d, packet size=%d, error=%d(before=%d)\n", NOW, nberr, HDR_CMN(pktRx_)->size(), HDR_CMN(pktRx_)->error(), before);
- }
- }