[Tinyos-help] Automatic TX Power Setting
Janos Sallai
sallai at isis.vanderbilt.edu
Tue Mar 11 11:16:06 PDT 2008
Ittipong,
You will need to refactor your code such that you catch the sendDone
event after sending each message, and send the next one only after that.
Janos
From: tinyos-help-bounces at millennium.berkeley.edu
[mailto:tinyos-help-bounces at millennium.berkeley.edu] On Behalf Of
Ittipong Khemapech
Sent: Tuesday, March 11, 2008 11:00 AM
To: tinyos-help
Subject: [Tinyos-help] Automatic TX Power Setting
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://www.millennium.berkeley.edu/pipermail/tinyos-help/attachments/20080311/a0c430ed/attachment.html
More information about the Tinyos-help
mailing list