>However this modification is not working, I see that everytime
> the 
dataRate is at 54Mbps, including if I comment
>every line that define 
the dataRate, including the lines
>
> tcl.evalf("Mac/802_11 set 
dataRate_");
>                if (strcmp(tcl.result(), "0") != 0) 
>   
bind_bw("dataRate_", &dataRate_);
>

This is strange: are you sure you 
recompiled ns
after changing the files?

Marco

>----Messaggio 
originale----
>Da: [EMAIL PROTECTED]
>Data: 13-giu-2006 
12.52 AM
>A: <ns-users@ISI.EDU>
>Ogg: [ns] Autorate in 802.11G
>
>
>
>Hello.
>
>I´m working on 802.11g in ns-2.28. I need to make automatic
>change in dataRate depending in distance between tow nodes.
>
>I tried 
to make some changes on the on the mac-802_11.h and
>in the mac-802_11.
cc but they did not worked for me.
>
>I make some other changes in ns-
default.tcl and ns-mac.tcl
>for make that the 802.11g standard work in 
ns-2.28, this
>changes were succesful.
>
>In order to make the 
automatic change in dataRate I tried to
>make some changes in mac-
802_11.cc:
>
> Packet *p = Packet::alloc();
> 
> struct hdr_cmn *ch = 
HDR_CMN(p);                       
> struct hdr_mac802_11 *dh = 
HDR_MAC802_11(p);            
> struct hdr_arp *ah = HDR_ARP(p); 
>
> 
double tX_,tY_,tZ_,rX_,rY_,rZ_;
> nsaddr_t txid=index_;
>        
nsaddr_t rxid;
> 
> MobileNode *tx_node= (MobileNode*)(Node::
get_node_by_address(txid));
> tx_node->getLoc(&tX_,&tY_,&tZ_); 
>         
> ch->tX()=tX_;  
> ch->tY()=tY_;  ch->tZ()=tZ_;
>           
> if (strcmp(packet_info.name(ch->ptype()), "ARP") == 0)
>  rxid=ah->arp_tpa;    
> else
>  rxid=ETHER_ADDR(dh->dh_ra);  
>         
> MobileNode *rx_node= (MobileNode*)(Node::
get_node_by_address(rxid));
> rx_node->getLoc(&rX_,&rY_,&rZ_); 
> dist 
= sqrt((rX_ - tX_) * (rX_ - tX_) + (rY_ - tY_) * (rY_ - tY_)  + 
>(rZ_ 
- tZ_) * (rZ_ - tZ_));
>                       
>
> // End of 
modification
>
>
> Tcl& tcl = Tcl::instance();
> tcl.evalf("Mac/802_11 
set basicRate_");
>         if (strcmp(tcl.result(), "0") != 0) 
>          bind_bw("basicRate_", &basicRate_);
>  else
>   basicRate_ = 
bandwidth_;
>
>
> tcl.evalf("Mac/802_11 set dataRate_");
>                if (strcmp(tcl.result(), "0") != 0) 
>   bind_bw
("dataRate_", &dataRate_);
>
> //Modification to obtain dataRate VS 
distance by Jonathan Lopez
>
>  else if (dist<=100 & dist>77)
>
>   
dataRate_ = 1*1e6;
>  else if (dist<=77 & dist>65)
>   dataRate_ = 
2*1e6;
>  else if (dist<=65 & dist>57)
>   dataRate_ = 6*1e6;
>  else 
if (dist<=57 & dist>54)
>   dataRate_ = 9*1e6;
>  else if (dist<=54 & 
dist>50)
>   dataRate_ = 12*1e6;
>  else if (dist<=50 & dist>42)
>   
dataRate_ = 18*1e6;
>  else if (dist<=42 & dist>35)
>   dataRate_ = 
24*1e6;
>  else if (dist<=35 & dist>23)
>   dataRate_ = 36*1e6;
>  else 
if (dist<=23 & dist>19)
>   dataRate_ = 48*1e6;
>  else
>   dataRate_ = 
bandwidth_;
>  
>
> // End of modification
>
>        EOTtarget_ = 0;
>        bss_id_ = IBSS_ID;
> //printf("bssid in constructor %d\n",
bss_id_);
>}
>
>
>Here I just tried to change dataRate depending the 
distance
>between the nodes, for make the change for every packet that
>is send.
>
>However this modification is not working, I see that every
>time the
> dataRate is at 54Mbps, including if I comment
>every line 
that define the dataRate, including the lines
>
> tcl.evalf("Mac/802_11 
set dataRate_");
>                if (strcmp(tcl.result(), "0") != 0) 
>   bind_bw("dataRate_", &dataRate_);
>
>I can modify the dataRate with 
Mac/802_11 set dataRate_ xMb
>in my tcl script. But I need that the 
dataRate been modified
>for every packet that is send denpending in the 
distance.
>
>Can anyone tell me what is happend or how can I do the
>modifications that I need?.
>
>Thanks.
>  
> 
__________________________________________________
>Correo Yahoo!
>Espacio para todos tus mensajes, antivirus y antispam ¡gratis! 
>Regístrate ya - http://correo.yahoo.com.mx/ 
>


Reply via email to