Phil, Thanks. That's how I had temporarily fixed my version, and it works fine now. Thanks for committing the change.
Jacob On Tue, Aug 11, 2009 at 4:27 PM, Philip Levis<[email protected]> wrote: > > On Aug 4, 2009, at 1:59 PM, Jacob Sorber wrote: > >> So, the problem is that Packet.clear does different things in >> SerialActiveMessageP and XE1205SendReceiveP. In the first it just >> clears the headers, in the later it clears the entire message_t. So, >> instead of resetting the headers as is intended in BaseStation, it >> blows away the payload it is trying to forward. >> >> Nice. What are the semantics for the Packet.clear command supposed to >> be? From the comments in Packet.nc (tos/interfaces) it seems that the >> XE1205SendReceiveP has it right and BaseStation is using clear >> incorrectly, but since it isn't completely explicit, I guess it could >> go either way. >> >> I'll hack something up for myself, but I am interested to know what >> the "right" way to fix it is. > > I've checked in the fix. Basically, you need to change the function from > clearing the entire buffer to clearing only the protocol header, footer, and > metadata. So, > > command void Packet.clear(message_t* msg) { > memset(msg, 0, sizeof(message_t)); > } > > becomes > > command void Packet.clear(message_t* msg) { > memset(getHeader(msg), 0, sizeof(xe1205_header_t)); > memset(getFooter(msg), 0, sizeof(xe1205_footer_t)); > memset(getMetadata(msg), 0, sizeof(xe1205_metadata_t)); > } > > Does that make sense? > > Phil > > _______________________________________________ Tinyos-help mailing list [email protected] https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help
