[Tinyos Core WG] Proposal for VariableSizedQueueC component

Philip Levis pal at cs.stanford.edu
Tue Sep 18 19:19:31 PDT 2007


On Sep 18, 2007, at 4:06 PM, Kevin Klues wrote:

> I propose the introduction of a VariableSizedQueueC component with the
> following signature:
>
> generic module VariableSizedQueueC(typedef queue_t, typedef
> queue_size_t @integer(), const QUEUE_SIZE) {
>   provides interface VariableSizedQueue<queue_t, queue_size_t> as  
> Queue;
> }
>
> All of the logic previously found in QueueC will be implemented in
> this component, with the definition of QueueC changing to:
>
> generic configuration QueueC(typedef queue_t, uint8_t QUEUE_SIZE) {
>   provides interface Queue<queue_t>;
> }
> implementation {
>   components new QueueP(queue_t);
>   components new VariableSizedQueueC(queue_t, uint8_t, QUEUE_SIZE);
>   Queue = QueueP;
>   QueueP.VariableSizedQueue -> VariableSizedQueueC;
> }
>
> Where QueueP just maps through calls on the Queue interface to the
> VariableSizedQueue interface defined with a queue size type of
> uint8_t.
>
> generic module QueueP(typedef queue_t) {
>   provides {
>   	interface Queue<queue_t>;
>   }
>   uses {
>   	interface VariableSizedQueue<queue_t, uint8_t>;
>   }
> }
> implementation {
>   command bool Queue.empty() {
>     return call VariableSizedQueue.empty();
>   }
>   command uint8_t Queue.size() {
>     return call VariableSizedQueue.size();
>   }
>   command uint8_t Queue.maxSize() {
>     return call VariableSizedQueue.maxSize();
>   }
>   command queue_t Queue.head() {
>     return call VariableSizedQueue.head();
>   }
>   command queue_t Queue.dequeue() {
>     return call VariableSizedQueue.dequeue();
>   }
>   command error_t Queue.enqueue(queue_t newVal) {
>     return call VariableSizedQueue.enqueue(newVal);
>   }
>   command queue_t Queue.element(uint8_t idx) {
>     return call VariableSizedQueue.element(idx);
>   }
> }
>
> Making these changes doesn't break existing code in any way, but will
> now allows users to use a VariableSizedQueue if they would like to
> have queues larger than 256 elements.
>
> Thoughts?


How about calling it QueueP.nc? Also, would this also make sense with  
PoolP?

Phil


More information about the Tinyos-2.0wg mailing list