Hello,
I am blocked on a critical problem these last days and I have no idea what
to do to solve it.
I have a WSN of IRIS nodes that uses the Collection messaging system to send
information to the base station.
This base station runs the same code as the original one except that I
collect the collection messages and forward them as AM messages to the UART.
To implement this forwarding system, I am using the Intercept interface to
transform Collection message into AM message.
When the network load is low (1 message / second), I have usually no
problem.
Once it goes higher (5 messages / second), after 2 or 3 minutes, the base
station uartBusy flag is blocked in BUSY state and no more message is
transmitted to the PC.
Did someone have a clue that could relaunch my investigations ?
Best regards,
Fabrice
Key code snippets :
- Receiving message from Collection
event message_t *MeshReceive.receive[am_id_t id](message_t *msg,
void *payload,
uint8_t len)
{
return receive(msg, payload, len, id);
}
- Interception code
message_t* receive(message_t *msg, void *payload, uint8_t len, am_id_t id)
{
message_t *ret = msg;
if (!signal MeshIntercept.forward[id](msg,payload,len))
return ret;
...
- Message transformation
default event bool
MeshIntercept.forward[am_id_t amid](message_t* msg,
void* payload,
uint8_t len)
{
if (amid == 0xbb)
{
status_msg_t* out;
status_msg_t* pay=(status_msg_t*) payload;
out = (status_msg_t*)call UartPacket.getPayload(msg,
sizeof(status_msg_t));
memcpy(out,payload,sizeof(status_msg_t));
call RadioAMPacket.setType(msg, AM_STATUS_MSG);
}
...
_______________________________________________
Tinyos-help mailing list
[email protected]
https://www.millennium.berkeley.edu/cgi-bin/mailman/listinfo/tinyos-help