[Tinyos-help] A question for serial stack!

peng li peterlee at cs.utah.edu
Thu Jul 30 10:00:44 PDT 2009


Hi There

Currently, I am testing a simulation tool , and in the testing for 
serial part, I think I met a potential problem for SerialDispatcherP.nc, 
the concrete description is as follows:

Since this component provides two buffering in order to make the system 
not miss the incoming byte stream.

1. The initial buffer is 0, which is unlocked, then buffer 0 can receive 
the byte stream successfully. Once the byte stream is end successfully, 
then the buffer is switched to 1, and the handling of buffer 0 is 
postponed into a task. (Note: currently, buffer 0 is still locked, once 
the task is scheduled, the lock can be released)

2. In my test, before the task for dealing with buffer 0 is scheduled, 
another byte stream is coming. Since current buffer has been switched to 
Buffer 1, which is unlocked, hence buffer 1 should receive these bytes 
successfully, but in my test, it is not.

Then I checked the code of SerialDispatcherP.nc, I found the function 
below seems not right:

  bool isCurrentBufferLocked() {
    return (receiveState.which)? receiveState.bufZeroLocked : 
receiveState.bufOneLocked;
  }

I think the zero and one branches may be backwards, going back to the 
procedure above, since receiveState.which has been set to 1, but it 
still returns the state of buffer zero and vice versa, this is the cause 
why buffer 1 can not receive the byte streams.

I am not very sure whether my analysis is right and reasonable, thus I 
need your help! Thanks a lot!

Regards

Peng


More information about the Tinyos-help mailing list