Hi all
Maybe my following question either is a bit tricky or has no solution. Suppose 
the following multi-hop scenario where we have an end-device (no routing 
capabilities, it only transmits data to a unique destination), one or several 
routing devices (their aim is to forward the data transmitted by the end-device 
to one or several destinations), and one destination (sink):
End-Device --> Routing Device 1 --> ... --> Routing Device n --> Destination
I am implementing some libraries which ought to be the same regardless of the 
type of device, namely end-device, routing device and/or destination. As I 
briefly pointed out, the end-device has no routing capabilities, which implies 
that its routing table only constains the node it used for joining the network 
-parent node- and, additionally, it should not implement any message queue to 
store data. On the contrary, this same features do have to be implemented by 
the intermediate devices (routing ones), that is, routing tables of higher size 
for storing more neighboring devices, and message_t queues. 
I've "solved" the former using dynamic memory (I know this is supposed to not 
be used, by I've tried to control the usage of memory). However, the issue 
comes with the latter requirement of implementing the message_t queues. This is 
explained below.
In my library, I employ a unique configuration file (I'll refer it hereafter as 
main_conf.nc ) that wires everything and it is the same for end-devices and 
routing-devices. It is worthy to remark that the final application running on 
each device has a different configuration file that wires to this library. 
Thus, in this file main_conf.nc, the QueueC and PoolC components ought to be 
included. A priori, it should be done as follows: 
In some .h file:
#define RX_QUEUE_SIZE 12
or
enum{  RX_QUEUE_SIZE = 12};
and in the confuguration file:
implements{...components new QueueC(message_t*, RX_QUEUE_SIZE),                 
           new PoolC(message_t, RX_QUEUE_SIZE);...}
The easy way would be to change the RX_QUEUE_SIZE value to 1 (or eliminate the 
QueueC and PoolC components of the code) every time I compile the code for an 
end-device, being this slow and/or inefficient. So, is it possible to do this 
in any way? Had both components been defined in the configuration file without 
indicating the size of the queue, I may use again dynamic memory. But in this 
case...
I hope all written above were easily understood!
Regards, 
David


                                          
_______________________________________________
Tinyos-help mailing list
Tinyos-help@millennium.berkeley.edu
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help

Reply via email to