-
Notifications
You must be signed in to change notification settings - Fork 523
upgrading rfxlink Tasklet and Neighborhood to generic #273
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
I have merged your Tasklet changes, they work as advertised. The NeighborhoodC changes are not correct. We need two create two instance of the NeighborhoodC component (make it generic is fine), but each NeighborhoodC needs to service different number of NeighborhoodFlag interfaces. In your change, with every NeighborhoodC you provide a single neighborhoodflag interface, which is not good. I do not know what would be the best way forward, maybe the NeighboorhoodC needs to provide an array of beighboorhoodflag interfaces and the users need to use unique qualifiers in their RadioC setup. What do you think? Can you implement this? I will then pull that. |
|
Interesting point about the NeighborhoodC. To clarify fundamentals, do we agree that each radio should have a single, From the code it looks like every radio has its own Neighborhood, since Thus, before coding, I would like to propose the following changes:
tasklet_norace uint8_t flags[NEIGHBORHOOD_SIZE]; to tasklet_norace uint8_t flags[NEIGHBORHOOD_SIZE / 8 + 1]; with each bit used as a flag per neighborhood node. With this design in mind, we would need to upgrade NeighborhoodFlag inline tasklet_async command bool NeighborhoodFlag.get[uint8_t bit](uint8_t would become inline tasklet_async command bool NeighborhoodFlag.get(uint8_t idx) In consequence, these changes would establish 1:1 relation between every Any thoughts or suggestions? -Marcin On Fri, Jul 25, 2014 at 6:23 AM, Miklos Maroti notifications@github.com
|
|
I just pushed the proposed simplest solution to the rfxlink Neighborhood. In this code change, every instance of UniqueLayer gets new Neighborhood. In each Neighborhood, there is uint8_t flag variable that indicates which nodes are being tracked. This of course limits the neighborhood size to the maximum of 8 nodes, but over the years, the default size of 5 does not seem to be changed at all. This approach simplifies the code and saves few bytes. The fixed was tested on cc2420x. It will be interesting to test it with motes that have two radios, such as opal and ucprotonb . |
|
did you get a chance to test the code on opals on twonet? let me know if you need access. |
|
I run a local test on few ucprotonb motes that I have. I don't have opals On Fri, Sep 5, 2014 at 12:18 PM, gnawali notifications@github.com wrote:
|
…ental feature. Probably better solution at #273
|
FYI, using multiple rfxlink stacks still can be problematic: There are a lot of defined settings, like the RadioAlarm precision, or the top level interface (AM / ieee154 / Bare) settings. |
To enable rfxlink support for simultaneous operation of two radios on a single mote, the TaskletC and NeighborhoodC must be generic; otherwise we need to create separate modules for these two and per-radio copies of the rfxlink layers that are wiring to these modules (see example of ucprotonb/chips/doubleradio ).
This fix;