Hi Mamta, 

I tried your suggestion, but still it does not give me Rf power back. I am not 
sure if this is actually setting RF power for packets. My idea is to set RF 
power from java class , that's why I am passing the value from TestSerial.java 
. Could you plz help me on this ? I have made changes in the code below : 


Thanks.
Jenis
________________________________________
From: Mamta Bucha [mmtb...@gmail.com]
Sent: Tuesday, June 04, 2013 10:28 PM
To: Modi, Jenis
Subject: Re: [Tinyos-help] Not able to Set RFPower from TestSerial.java

hi,
in the following event :- " event void MilliTimer.fired()  "

after lines, rcm->counter = counter;
      call CC2420Packet.setPower(&packet,rcm->rfpower);

i think you may need to add :-

rcm->rfpower = (uint8_t) call CC2420Packet.getPower(msg);

the use of this command " uint8_t getPower( message_t* p_msg ) " is given in 
CC2420Packet file.




On Wed, Jun 5, 2013 at 3:58 AM, Modi, Jenis 
<jenis.m...@email.wsu.edu<mailto:jenis.m...@email.wsu.edu>> wrote:


Hi All,

I am trying to set RF power from TestSerial java class, but it is not setting 
the power. could anyone tell me what am I doing wrong here ? Plz help.

Here is what I am doing:
make telosb install.1 bsl,/dev/ttyUSB0
java TestSerial -comm serial@/dev/ttyUSB0:telos 1  (Here 1 refers to RF power I 
am passing)


Instead of getting actual RF power, I receive RF power 0 everytime. I receive 
below output when I run above commands:
Sending packet 1
Received packet power: 0
Received packet sequence number 8
Sending packet 2
Received packet power: 0
Received packet sequence number 9
Sending packet 3
Received packet power: 0
Received packet sequence number 10
Sending packet 4
Received packet power: 0
Received packet sequence number 11


Could anyone tell me what am I doing wrong here? Plz help.

Here is my code:

TestSerial.java :

public class TestSerial implements MessageListener {

  private MoteIF moteIF;

  public TestSerial(MoteIF moteIF) {
    this.moteIF = moteIF;
    this.moteIF.registerListener(new TestSerialMsg(), this);
  }

  public void sendPackets(String rf_power) {
    int counter = 1;
    int rfpower = Integer.parseInt(rf_power);
    TestSerialMsg payload = new TestSerialMsg();

    try {
        
      while (true) {
        System.out.println("Sending packet " + counter);
payload.set_rfpower(rfpower);
        payload.set_counter(counter);
        moteIF.send(0, payload);
        counter++;
        try {Thread.sleep(1000);}
        catch (InterruptedException exception) {}
      }
    }
    catch (IOException exception) {
      System.err.println("Exception thrown when sending packets. Exiting.");
      System.err.println(exception);
    }
  }

  public void messageReceived(int to, Message message) {
    TestSerialMsg msg = (TestSerialMsg)message;
    System.out.println("Received packet power: "+msg.get_rfpower());
    System.out.println("Received packet sequence number " + msg.get_counter());
  }

  private static void usage() {
    System.err.println("usage: TestSerial [-comm <source>]");
  }

  public static void main(String[] args) throws Exception {

    String source = null;
    String rf_power = null;
    if (args.length == 3) {
      if (!args[0].equals("-comm")) {
        usage();
        System.exit(1);
      }
      source = args[1];
      rf_power= args[2];
    }
    else if (args.length != 0) {
      usage();
      System.exit(1);
    }
    System.out.println("trying to set RFpower from here");
    System.out.println("RfPower:"+args[2]);
    PhoenixSource phoenix;

    if (source == null) {
      phoenix = BuildSource.makePhoenix(PrintStreamMessenger.err);
    }
    else {
      phoenix = BuildSource.makePhoenix(source, PrintStreamMessenger.err);
    }

    MoteIF mif = new MoteIF(phoenix);
    TestSerial serial = new TestSerial(mif);
    serial.sendPackets(rf_power);
  }


}

TestSerialC.nc

#include "Timer.h"
#include "TestSerial.h"

module TestSerialC {
  uses {
    interface SplitControl as Control;
    interface Leds;
    interface Boot;
    interface Receive;
    interface AMSend;
    interface Timer<TMilli> as MilliTimer;
    interface Packet;
    interface CC2420Packet;
  }
}
implementation {

  message_t packet;

  bool locked = FALSE;
  uint16_t counter = 0;
//  uint8_t TRANS_POWER = 1;

  event void Boot.booted() {
    call Control.start();
  }

  event void MilliTimer.fired() {
    counter++;
    if (locked) {
      return;
    }
    else {
      test_serial_msg_t* rcm = (test_serial_msg_t*)call 
Packet.getPayload(&packet, sizeof(test_serial_msg_t));
      if (rcm == NULL) {return;}
      if (call Packet.maxPayloadLength() < sizeof(test_serial_msg_t)) {
        return;
      }

      rcm->counter = counter;
      call CC2420Packet.setPower(&packet,rcm->rfpower);
      if (call AMSend.send(AM_BROADCAST_ADDR, &packet, 
sizeof(test_serial_msg_t)) == SUCCESS) {
        locked = TRUE;
      }
    }
  }

  event message_t* Receive.receive(message_t* bufPtr,
                                   void* payload, uint8_t len) {
    if (len != sizeof(test_serial_msg_t)) {return bufPtr;}
    else {
      test_serial_msg_t* rcm = (test_serial_msg_t*)payload;

     rcm->rfpower = (uint8_t) call CC2420Packet.getPower(bufPtr);

      if (rcm->counter & 0x1) {
        call Leds.led0On();
      }
      else {
        call Leds.led0Off();
      }
      if (rcm->counter & 0x2) {
        call Leds.led1On();
      }
      else {
        call Leds.led1Off();
      }
      if (rcm->counter & 0x4) {
        call Leds.led2On();
      }
      else {
        call Leds.led2Off();
      }
      return bufPtr;
    }
  }

  event void AMSend.sendDone(message_t* bufPtr, error_t error) {
    if (&packet == bufPtr) {
      locked = FALSE;
    }
  }

  event void Control.startDone(error_t err) {
    if (err == SUCCESS) {
      call MilliTimer.startPeriodic(1000);
    }
  }
  event void Control.stopDone(error_t err) {}
}


TestSerialAppC.nc

#include "TestSerial.h"

configuration TestSerialAppC {}
implementation {
  components TestSerialC as App, LedsC, MainC;
  components SerialActiveMessageC as AM;
  components new TimerMilliC();
  components CC2420ActiveMessageC;

  App.Boot -> MainC.Boot;
  App.Control -> AM;
  App.Receive -> AM.Receive[AM_TEST_SERIAL_MSG];
  App.AMSend -> AM.AMSend[AM_TEST_SERIAL_MSG];
  App.Leds -> LedsC;
  App -> CC2420ActiveMessageC.CC2420Packet;
  App.MilliTimer -> TimerMilliC;
  App.Packet -> AM;
}

TestSerial.h

#ifndef TEST_SERIAL_H
#define TEST_SERIAL_H

typedef nx_struct test_serial_msg {
  nx_uint16_t counter;
  nx_uint8_t rfpower;
} test_serial_msg_t;

enum {
  AM_TEST_SERIAL_MSG = 0x89,
};

#endif


Thanks.
Jenis


_______________________________________________
Tinyos-help mailing list
Tinyos-help@millennium.berkeley.edu<mailto:Tinyos-help@millennium.berkeley.edu>
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help



--
Regards,
Mamta Bucha

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

Reply via email to