]> oss.titaniummirror.com Git - tinyos-2.x.git/blobdiff - apps/BaseStationCC2420/BaseStationP.nc
Correctly handle both snooped and received packets.
[tinyos-2.x.git] / apps / BaseStationCC2420 / BaseStationP.nc
index 7fad5ea43e86d8b1562899a68b3cb8c8e86c9b7c..5e261a286010562ab1dcbd26178793f16017fdaf 100644 (file)
@@ -59,6 +59,7 @@ module BaseStationP {
     
     interface AMSend as RadioSend[am_id_t id];
     interface Receive as RadioReceive[am_id_t id];
+    interface Receive as RadioSnoop[am_id_t id];
     interface Packet as RadioPacket;
     interface AMPacket as RadioAMPacket;
 
@@ -128,10 +129,22 @@ implementation
   event void SerialControl.stopDone(error_t error) {}
   event void RadioControl.stopDone(error_t error) {}
 
+  message_t* receive(message_t* msg, void* payload, uint8_t len);
+  
   uint8_t count = 0;
-  event message_t *RadioReceive.receive[am_id_t id](message_t *msg,
+  event message_tRadioReceive.receive[am_id_t id](message_t *msg,
                                                    void *payload,
                                                    uint8_t len) {
+    return receive(msg, payload, len);
+  }
+
+  event message_t* RadioSnoop.receive[am_id_t id](message_t* msg,
+                                                 void* payload,
+                                                 uint8_t len) {
+    return receive(msg, payload, len);
+  }
+
+  message_t* receive(message_t* msg, void* payload, uint8_t len) {
     message_t *ret = msg;
 
     atomic {