Hi *
I programm a cluster routing protocol for TinyOS2 and have following
problem. I use AMPackage and will send and receive all AM types but only
in one cluster. I've made own header I store at the begin of payload. So
i provide own ClusterPacket and Packet to get the real payload and my
header... I defined a cluster_id_t (uint8_t) and will provide
Sender[am_id_t amId] and Receiver[am_id_t amId] but for different
clusters. So I'made a gengeric module and configuration as follow :
(This is only for Receive)
****************************************************************************
ClusterReceiverP.nc
generic module ClusterReceiverP(cluster_id_t cId) {
provides interface Receive[am_id_t amId];
uses{
interface Receive as SubReceive[am_id_t amId];
interface Packet;
interface ClusterPacket;
}
}
implementation {
//------------------------------------------------------
/***************** Receive commands ****************/
command void* Receive.getPayload[am_id_t id](message_t *msg, uint8_t
*len){
return call Packet.getPayload(msg,len);
}
command uint8_t Receive.payloadLength[am_id_t id](message_t *msg){
return call Packet.payloadLength(msg);
}
event message_t* SubReceive.receive[am_id_t amId]( message_t* msg, void*
payload, uint8_t len){
if (call ClusterPacket.cluster(msg) == cId){
signal Receive.receive[amId](msg,payload,len);
}
return msg;
}
default event message_t* Receive.receive[am_id_t amId]( message_t* msg,
void* payload, uint8_t len){
return msg;
}
//------------------------------------------------------
}
**********************************************************************************
AND ClusterReceiverC.nc
#include "AM.h"
#include "SCluster.h"
generic configuration ClusterReceiverC(cluster_id_t cId) {
provides {
interface Receive[am_id_t amId];
interface Packet;
interface ClusterPacket;
}
}
implementation {
components new ClusterReceiverP(cId) as ClusterReceiverP;
components ClusterSenderC, ActiveMessageC;
ClusterReceiverP.SubReceive -> ActiveMessageC.Receive;
ClusterReceiverP.ClusterPacket -> ClusterSenderC;
ClusterReceiverP.Packet -> ClusterSenderC;
Receive = ClusterReceiverP;
Packet = ClusterSenderC;
ClusterPacket = ClusterSenderC;
}
*******************************************************************************
I use two instances of Receiver in higher layer and I get fan out warning.
" warning: calls to Receive.receive in CC2420ActiveMessageP fan out, but
there is no combine function specified for the return type".
I think becouse of my Receiver is not UNIQUE (or my SubReceive)?!? Is
that right? Some suggestion ?
thanks in advance
Jordan Jordanow
----------------------------------------------------
Dwa tysiące lat temu Chiński Cesarz Smok podbił połowę świata.
Teraz Wraca by dokończyć dzieło... Film pełen EFEKTÓW SPECJALNYCH.
MUMIA: GROBOWIEC CESARZA SMOKA - w kinach.
http://klik.wp.pl/?adr=http%3A%2F%2Fcorto.www.wp.pl%2Fas%2FMumiaGrobowiec.html&sid=436
_______________________________________________
Tinyos-help mailing list
[email protected]
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help