Hi all,

I want to control the DAC of my telosb mote using commands from the
computer through the USB port. For that, I've programmed an application
which receives a message with two fields: uint8_t for the command and
uint16_t for the value we want to set the DAC to.

There are two commands: set (1), with a value, to set the DAC, and show,
without a value, to see to which value the DAC is set to (when issuing a
set command, the mote returns the DAC value as well).

On the computer side, the commands are issued using a small java
application:

java Dimmer set X
java Dimmer show

The problem is that the value field (uint16_t) is not recognised: I will
issue java Dimmer set 10 ten times and each time I will get a different
DAC output and a different return value from the mote. I have tried to
modify my message type and have the value field as a uint8_t. In this
way, issuing a set command from 0 to 256 will give me right values.
Above that, it doesn't seem to work anymore.

Can anyone enlighten me a little on what I am doing wrong? It'd be much
appreciated.

Below I include the relevant code.

Thanks,

- Jose.

// DimmerControlM.nc (on the mote)
// DimmerControlMSG has two fields: todo (uint8_t) and value (uint16_t)

task void sendMsg(){
       struct DimmerControlMSG* sen; 
       sen = (struct DimmerControlMSG *)outw.data;
       sen->value = value;

       call SendMsg.send( TOS_UART_ADDR, sizeof(struct DimmerControlMSG), 
&outw);
  }

event TOS_MsgPtr ReceiveMsg.receive( TOS_MsgPtr inw ){
       struct DimmerControlMSG* rec;
       rec = (struct DimmerControlMSG *)inw->data;

       if( rec->todo & 0x1 ) {
          value=rec->value;
          if(call DAC.output(value) == SUCCESS)
             call Leds.redToggle();
       }

       post sendMsg();
       return inw;
  }


_______________________________________________
Tinyos-help mailing list
Tinyos-help@Millennium.Berkeley.EDU
https://mail.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to