]> oss.titaniummirror.com Git - tinyos-2.x.git/commitdiff
Update to C api for CTP and MultiHopLqi
authorklueska <klueska>
Tue, 17 Jun 2008 19:19:10 +0000 (19:19 +0000)
committerklueska <klueska>
Tue, 17 Jun 2008 19:19:10 +0000 (19:19 +0000)
tos/lib/tosthreads/csystem/TosThreadApiC.nc
tos/lib/tosthreads/lib/net/BlockingCollectionSenderC.nc [deleted file]
tos/lib/tosthreads/lib/net/BlockingCollectionSenderP.nc
tos/lib/tosthreads/lib/net/CCollectionC.nc [deleted file]
tos/lib/tosthreads/lib/net/CCollectionP.nc
tos/lib/tosthreads/lib/net/ctp/BlockingCollectionSenderC.nc [new file with mode: 0644]
tos/lib/tosthreads/lib/net/ctp/CCollectionC.nc [new file with mode: 0644]
tos/lib/tosthreads/lib/net/lqi/BlockingCollectionSenderC.nc [new file with mode: 0644]
tos/lib/tosthreads/lib/net/lqi/CCollectionC.nc [new file with mode: 0644]
tos/lib/tosthreads/lib/net/tosthread_collection.h

index e8fb8af2f31ddcb55ea4c6194781be02ee59a797..17803b991fb259260e88fab706196e93d9103267 100644 (file)
@@ -67,6 +67,9 @@ implementation {
   #if defined(TOSTHREAD_LOGSTORAGE_H) || defined(TOSTHREAD_DYNAMIC_LOADER)
     components CLogStorageC;
   #endif 
+  #if defined(TOSTHREAD_COLLECTION_H) || defined(TOSTHREAD_DYNAMIC_LOADER)
+    components CCollectionC;
+  #endif 
   
   //Telosb sensorboard specific.
   #if defined(TOSTHREAD_HAMAMATSUS1087_H) || defined(TOSTHREAD_DYNAMIC_LOADER)
diff --git a/tos/lib/tosthreads/lib/net/BlockingCollectionSenderC.nc b/tos/lib/tosthreads/lib/net/BlockingCollectionSenderC.nc
deleted file mode 100644 (file)
index d2bea24..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (c) 2008 Johns Hopkins University.
- * All rights reserved.
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose, without fee, and without written
- * agreement is hereby granted, provided that the above copyright
- * notice, the (updated) modification history and the author appear in
- * all copies of this source code.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, LOSS OF USE, DATA,
- * OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
-*/
-
-/*
- * @author Chieh-Jan Mike Liang <cliang4@cs.jhu.edu>
- */
-
-#include <Ctp.h>
-
-generic configuration BlockingCollectionSenderC (collection_id_t collectid) {
-  provides {
-    interface BlockingSend;
-    interface Packet;
-  }
-}
-
-implementation {
-  components new BlockingCollectionSenderP(collectid, unique(UQ_CTP_CLIENT)),
-             CollectionC as Collector;
-
-  BlockingSend = BlockingCollectionSenderP;
-  Packet = Collector;
-}
index 33a280f6a02d5c3358ab66589e284774b968f487..e2ba37e34773209bb0507977081b0041eb66b9f3 100644 (file)
 
 /*
  * @author Chieh-Jan Mike Liang <cliang4@cs.jhu.edu>
+ * @author Kevin Klues <klueska@cs.stanford.edu>
  */
 
-generic configuration BlockingCollectionSenderP (collection_id_t collectid, uint8_t clientid) {
+configuration BlockingCollectionSenderP {
   provides {
-    interface BlockingSend;
+    interface BlockingSend[uint8_t id];
   }
 }
 
 implementation {
   components BlockingCollectionSenderImplP,
              CollectionC as Collector,
-             new CollectionIdP(collectid),
              MutexC,
              SystemCallC,
              MainC,
              LedsC;
   
   MainC.SoftwareInit -> BlockingCollectionSenderImplP;
-  BlockingSend = BlockingCollectionSenderImplP.BlockingSend[clientid];
+  BlockingSend = BlockingCollectionSenderImplP.BlockingSend;
   
   BlockingCollectionSenderImplP.Mutex -> MutexC;
   BlockingCollectionSenderImplP.SystemCall -> SystemCallC;
-  BlockingCollectionSenderImplP.Send[clientid] -> Collector[clientid];
+  BlockingCollectionSenderImplP.Send -> Collector;
   BlockingCollectionSenderImplP.Packet -> Collector;
   BlockingCollectionSenderImplP.Leds -> LedsC;
-  
-  Collector.CollectionId[clientid] -> CollectionIdP;
 }
+
diff --git a/tos/lib/tosthreads/lib/net/CCollectionC.nc b/tos/lib/tosthreads/lib/net/CCollectionC.nc
deleted file mode 100644 (file)
index 8036089..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (c) 2008 Stanford University.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- *   notice, this list of conditions and the following disclaimer in the
- *   documentation and/or other materials provided with the
- *   distribution.
- * - Neither the name of the Stanford University nor the names of
- *   its contributors may be used to endorse or promote products derived
- *   from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL STANFORD
- * UNIVERSITY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
- * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- * OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/**
- * @author Kevin Klues <klueska@cs.stanford.edu>
- */
-
-#include "tosthread_collection.h"
-
-configuration CCollectionC {}
-
-implementation {
-  components CCollectionP as CCP;
-  components BlockingCollectionReceiverP;
-  components BlockingCollectionSnooperP;
-  components BlockingCollectionSenderP;
-  
-  CAMP.BlockingStdControl -> AM;
-  CAMP.BlockingReceive -> AM.BlockingReceive;
-  CAMP.BlockingSnoop -> AM.BlockingSnoop;
-  CAMP.BlockingReceiveAny -> AM.BlockingReceiveAny;
-  CAMP.BlockingSnoopAny -> AM.BlockingSnoopAny;
-  CAMP.Send -> AM;
-  CAMP.Packet -> AM;
-  CAMP.AMPacket -> AM;
-  CAMP.PacketAcknowledgements -> AM;
-}
index d462b35d82e26d78604de5bcb52ca4c5a7a9585c..0ff4b8a088c13a4bf83ea853a769a3c46e373651 100644 (file)
 
 module CCollectionP {
   uses {
-    interface BlockingStdControl;
-    interface BlockingReceive[am_id_t amId];
-    interface BlockingReceive as BlockingReceiveAny;
-    interface BlockingReceive as BlockingSnoop[am_id_t amId];
-    interface BlockingReceive as BlockingSnoopAny;
-    interface BlockingAMSend as Send[am_id_t id];
+    interface BlockingStdControl as RoutingControl;
+    interface BlockingReceive[collection_id_t id];
+    interface BlockingReceive as BlockingSnoop[collection_id_t id];
+    interface BlockingSend[am_id_t id];
     interface Packet;
-    interface AMPacket;
-    interface PacketAcknowledgements;
+    interface CollectionPacket;
+    interface RootControl;
+  }
+  provides {
+    interface CollectionId[uint8_t client];
   }
 }
 implementation {
+  command collection_id_t CollectionId.fetch[uint8_t id]() {
+    return id;
+  }
+  
+  error_t collectionRoutingStart() @C() @spontaneous() {
+    return call RoutingControl.start();
+  }
+  error_t collectionRoutingStop() @C() @spontaneous() {
+    return call RoutingControl.stop();
+  }
+
   error_t collectionReceive(message_t* m, uint32_t timeout, collection_id_t id) @C() @spontaneous() {
+    return call BlockingReceive.receive[id](m, timeout);
   }
   error_t collectionSnoop(message_t* m, uint32_t timeout, collection_id_t id) @C() @spontaneous() {
+    return call BlockingSnoop.receive[id](m, timeout);
   }
   error_t collectionSend(message_t* msg, uint8_t len, collection_id_t id) @C() @spontaneous() {
+    return call BlockingSend.send[id](msg, len);
   }
  
   void collectionClear(message_t* msg) @C() @spontaneous() {
+    call Packet.clear(msg);
   }
   uint8_t collectionGetPayloadLength(message_t* msg) @C() @spontaneous() {
+    return call Packet.payloadLength(msg);
   }
   void collectionSetPayloadLength(message_t* msg, uint8_t len) @C() @spontaneous() {
+    call Packet.setPayloadLength(msg, len);
   }
   uint8_t collectionMaxPayloadLength() @C() @spontaneous() {
+    return call Packet.maxPayloadLength();
   }
   void* collectionGetPayload(message_t* msg, uint8_t len) @C() @spontaneous() {
+    return call Packet.getPayload(msg, len);
   }
 
   am_addr_t collectionGetOrigin(message_t* msg) @C() @spontaneous() {
+    return call CollectionPacket.getOrigin(msg);
   }
   void collectionSetOrigin(message_t* msg, am_addr_t addr) @C() @spontaneous() {
+    call CollectionPacket.setOrigin(msg, addr);
   }
   collection_id_t collectionGetType(message_t* msg) @C() @spontaneous() {
+    return call CollectionPacket.getType(msg);
   }
   void collectionSetType(message_t* msg, collection_id_t id) @C() @spontaneous() {
+    call CollectionPacket.setType(msg, id);
   }
   uint8_t collectionGetSequenceNumber(message_t* msg) @C() @spontaneous() {
+    return call CollectionPacket.getSequenceNumber(msg);
   }
   void collectionSetSequenceNumber(message_t* msg, uint8_t seqno) @C() @spontaneous() {
+    call CollectionPacket.setSequenceNumber(msg, seqno);
   }
 
   error_t collectionSetRoot() @C() @spontaneous() {
+    return call RootControl.setRoot();
   }
   error_t collectionUnsetRoot() @C() @spontaneous() {
+    return call RootControl.unsetRoot();
   }
   bool collectionIsRoot() @C() @spontaneous() {
+    return call RootControl.isRoot();
   }
 }
\ No newline at end of file
diff --git a/tos/lib/tosthreads/lib/net/ctp/BlockingCollectionSenderC.nc b/tos/lib/tosthreads/lib/net/ctp/BlockingCollectionSenderC.nc
new file mode 100644 (file)
index 0000000..ce12d1c
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2008 Johns Hopkins University.
+ * All rights reserved.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose, without fee, and without written
+ * agreement is hereby granted, provided that the above copyright
+ * notice, the (updated) modification history and the author appear in
+ * all copies of this source code.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, LOSS OF USE, DATA,
+ * OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * @author Chieh-Jan Mike Liang <cliang4@cs.jhu.edu>
+ * @author Kevin Klues <klueska@cs.stanford.edu>
+ */
+
+#include <Ctp.h>
+
+generic configuration BlockingCollectionSenderC (collection_id_t collectid) {
+  provides {
+    interface BlockingSend;
+    interface Packet;
+  }
+}
+
+implementation {
+  components BlockingCollectionSenderP,
+             new CollectionIdP(collectid),
+             CollectionC as Collector;
+             
+  enum {
+    CLIENT_ID = unique(UQ_CTP_CLIENT),
+  };
+
+  BlockingSend = BlockingCollectionSenderP.BlockingSend[CLIENT_ID];
+  Packet = Collector;
+  
+  Collector.CollectionId[CLIENT_ID] -> CollectionIdP;
+}
diff --git a/tos/lib/tosthreads/lib/net/ctp/CCollectionC.nc b/tos/lib/tosthreads/lib/net/ctp/CCollectionC.nc
new file mode 100644 (file)
index 0000000..7508b70
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 2008 Stanford University.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the
+ *   distribution.
+ * - Neither the name of the Stanford University nor the names of
+ *   its contributors may be used to endorse or promote products derived
+ *   from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL STANFORD
+ * UNIVERSITY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**
+ * @author Kevin Klues <klueska@cs.stanford.edu>
+ */
+
+#include "tosthread_collection.h"
+#include "Ctp.h"
+
+configuration CCollectionC {}
+
+implementation {
+  components CCollectionP as CCP;
+  components BlockingCollectionReceiverP;
+  components BlockingCollectionSnooperP;
+  components BlockingCollectionSenderP;
+  components BlockingCollectionControlC;
+  
+  //Allocate enough room in the message queue for all message types.
+  //This number needs to be 255-1-12 because 
+  //(1) The max number that can be provided to the Queue underneath for its size is 255
+  //(2) uniqueN() will give you values from 0..N constituting N+1 unique numbers
+  //(3) there are 12 spaces reserved in the send queue in CtpP for forwarding messages.
+  //I don't like this implementation, but it will do for now....
+  enum {
+   FIRST_CLIENT = uniqueN(UQ_CTP_CLIENT, 255-1-12),
+  };
+  
+  CCP.BlockingReceive -> BlockingCollectionReceiverP;
+  CCP.BlockingSnoop -> BlockingCollectionSnooperP;
+  CCP.BlockingSend -> BlockingCollectionSenderP;
+  CCP.RoutingControl -> BlockingCollectionControlC;
+  
+  components CollectionC;
+  CCP.Packet -> CollectionC;
+  CCP.CollectionPacket -> CollectionC;
+  CCP.RootControl -> CollectionC;
+  CollectionC.CollectionId -> CCP;
+}
diff --git a/tos/lib/tosthreads/lib/net/lqi/BlockingCollectionSenderC.nc b/tos/lib/tosthreads/lib/net/lqi/BlockingCollectionSenderC.nc
new file mode 100644 (file)
index 0000000..e65b695
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2008 Johns Hopkins University.
+ * All rights reserved.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose, without fee, and without written
+ * agreement is hereby granted, provided that the above copyright
+ * notice, the (updated) modification history and the author appear in
+ * all copies of this source code.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, LOSS OF USE, DATA,
+ * OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+/*
+ * @author Chieh-Jan Mike Liang <cliang4@cs.jhu.edu>
+ * @author Kevin Klues <klueska@cs.stanford.edu>
+ */
+
+#include <MultiHopLqi.h>
+
+generic configuration BlockingCollectionSenderC (collection_id_t collectid) {
+  provides {
+    interface BlockingSend;
+    interface Packet;
+  }
+}
+
+implementation {
+  components BlockingCollectionSenderP,
+             new CollectionIdP(collectid),
+             CollectionC as Collector;
+             
+  enum {
+    CLIENT_ID = unique(UQ_LQI_CLIENT),
+  };
+
+  BlockingSend = BlockingCollectionSenderP.BlockingSend[CLIENT_ID];
+  Packet = Collector;
+  
+  Collector.CollectionId[CLIENT_ID] -> CollectionIdP;
+}
diff --git a/tos/lib/tosthreads/lib/net/lqi/CCollectionC.nc b/tos/lib/tosthreads/lib/net/lqi/CCollectionC.nc
new file mode 100644 (file)
index 0000000..ecbb4a6
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * Copyright (c) 2008 Stanford University.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the
+ *   distribution.
+ * - Neither the name of the Stanford University nor the names of
+ *   its contributors may be used to endorse or promote products derived
+ *   from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ * FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL STANFORD
+ * UNIVERSITY OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/**
+ * @author Kevin Klues <klueska@cs.stanford.edu>
+ */
+
+#include "tosthread_collection.h"
+#include "MultiHopLqi.h"
+
+configuration CCollectionC {}
+
+implementation {
+  components CCollectionP as CCP;
+  components BlockingCollectionReceiverP;
+  components BlockingCollectionSnooperP;
+  components BlockingCollectionSenderP;
+  components BlockingCollectionControlC;
+  
+  //Allocate enough room in the message queue for all message types.
+  //This number needs to be 255-1-12 because 
+  //(1) The max number that can be provided to the Queue underneath for its size is 255
+  //(2) uniqueN() will give you values from 0..N constituting N+1 unique numbers
+  //(3) there are 12 spaces reserved in the send queue in CtpP for forwarding messages.
+  //I don't like this implementation, but it will do for now....
+  enum {
+   FIRST_CLIENT = uniqueN(UQ_LQI_CLIENT, 255-1-12),
+  };
+  
+  CCP.BlockingReceive -> BlockingCollectionReceiverP;
+  CCP.BlockingSnoop -> BlockingCollectionSnooperP;
+  CCP.BlockingSend -> BlockingCollectionSenderP;
+  CCP.RoutingControl -> BlockingCollectionControlC;
+  
+  components CollectionC;
+  CCP.Packet -> CollectionC;
+  CCP.CollectionPacket -> CollectionC;
+  CCP.RootControl -> CollectionC;
+  CollectionC.CollectionId -> CCP;
+}
index 62daa345975c2f3a9ee3d3a795f6d051536d0ae3..4bdfb30e5f1aee5102c5232e6194baa99b193c5d 100644 (file)
 #define TOSTHREAD_COLLECTION_H
 
 #include "message.h"
-#include "AM.h"
 #include "TinyError.h"
+#include "Collection.h"
+
+extern error_t collectionRoutingStart();
+extern error_t collectionRoutingStop();
 
 extern error_t collectionReceive(message_t* m, uint32_t timeout, collection_id_t id);
 extern error_t collectionSnoop(message_t* m, uint32_t timeout, collection_id_t id);