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

Reply via email to