Hi,

I am working on automatic TX power setting. I have the following codes:

implementation {
   message_t pkt;
   bool busy = FALSE;               // Used to check if mote is still busy
sending
   uint16_t sentpkts = 0;           // Number of sent packets
   uint8_t current_tx;                // Used to adapt transmission power,
start with the minimum level
   uint8_t i;                              // Used to count number of
transmissions

.......

   event void MetricsSendTimer.fired() {

       if (!busy) {

           MetricsMsg* metricsMsg = (MetricsMsg*)(call Packet.getPayload(&pkt,
NULL));
           // Allowable tx power levels are 3, 7, 11, 15, 19, 23, 27 and 31
           for (current_tx = 3; current_tx <= 31; current_tx += 4) {

               // Mote sends 20 times for each tx power level
               for (i = 1; i <= 20; i++) {

                   call CC2420Packet.setPower(&pkt, current_tx);
                   current_tx = call CC2420Packet.getPower(&pkt);

                   // Write current tx and no of sent pkts to the payload
                   metricsMsg->txpower = current_tx;
                   metricsMsg->pkt_no = sentpkts;
                   metricsMsg->run_no = i;

                   if (call AMSend.send(AM_BROADCAST_ADDR, &pkt,
sizeof(MetricsMsg)) == SUCCESS) {
                       busy = TRUE;

                   }

               }

           }
       }
   }

.......
}

I've run Listen (with BaseStation) and got i = 1 and current_tx = 3 all the
time. They weren't increased.

I have been stuck for a day. Please help.

Thanks,
Ittipong
_______________________________________________
Tinyos-help mailing list
Tinyos-help@millennium.berkeley.edu
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to