[Tinyos-help] AVR GCC compiler problems

Kevin Klues klueska at gmail.com
Wed Feb 27 10:33:11 PST 2008


If you are checking via he call to Leds.yellowOff(), keep in mind that
if the first call to setReceive[3]() returns FAIL, the if statement
will short circuit and never run the second call, thus never turning
off the yellow LED.

Kevin

On Wed, Feb 27, 2008 at 10:28 AM, Kevin Klues <klueska at gmail.com> wrote:
> I'm very skeptical in saying that its a problem with the compiler.
>  How have you verified that the parameters do not contain the proper
>  values?
>
>  Kevin
>
>
>
>  On Wed, Feb 27, 2008 at 10:18 AM, José Moyano <josehmoyano at yahoo.com.ar> wrote:
>  >
>  >
>  > Take a look at this code:
>  >
>  > One module has:
>  >
>  > command result_t CPSSetReceive.setReceive[uint8_t channel](uint32_t id,
>  > uint32_t mask) {
>  >     if ((call CANReceive.setReceive[channel](id, mask)) && (call
>  > CANReceive.setReceive[channel + 7](id, mask))) {
>  > ...
>  > }
>  >
>  > This operation is called with a mask equal to CAN_DEFAULT_MASK, and is
>  > connected to a module with this code:
>  >
>  > command result_t CANReceive.setReceive[uint8_t channel](uint32_t id,
>  > uint32_t mask) {
>  >      //DEBUG
>  >      if (channel == 10)
>  >          if (mask != CAN_DEFAULT_MASK)
>  >              call Leds.yellowOff();
>  >      //*********************
>  >
>  >      call MOb.disable[channel]();
>  >      atomic status[channel] = IDLE;
>  >      if (id >= MAX_ID)
>  >          return SUCCESS;
>  >      if (call MOb.prepareRx[channel](id, mask)) {
>  >          atomic status[channel] = RX;
>  >          return SUCCESS;
>  >      }
>  >      else
>  >          return FAIL;
>  >  }
>  >
>  > As you can see, in CPSSetReceive.setReceive[..](..) there are two calls to
>  > CANReceive.setReceive[..](..). In the first call, the actual parameters of
>  > CPSSetReceive.setReceive are equal to the actual parameters of
>  > CANReceive.setReceive. When you make the second call, in the body of
>  > CANReceive.setReceive[](), the actual parameters doesn't match with the
>  > parameters sent by CPSSetReceive.setReceive[](), even when the parameters
>  > aren't modified and aren't references or global variables. Is easy to
>  > conclude that the compiler is changing the semantic of my program. The
>  > cuestion is why. Any ideas?
>  > I'm using TinyOS 1.1
>  >
>  > Thanks in advance.
>  >
>  >
>  >
>  >  ________________________________
>  >
>  > Tarjeta de crédito Yahoo! de Banco Supervielle. Solicitá tu nueva Tarjeta de
>  > crédito. De tu PC directo a tu casa.
>  >  Visitá www.tuprimeratarjeta.com.ar
>  > _______________________________________________
>  >  Tinyos-help mailing list
>  >  Tinyos-help at millennium.berkeley.edu
>  >  https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
>  >
>
>
>
>  --
>  ~Kevin
>



-- 
~Kevin



More information about the Tinyos-help mailing list