Fully functional xbee mesh network using arduino


I'd like to make xbee API module work as mesh network between arduinos. I've seen lots of link upon internet, many of them looks interesting but they did not fully answer as expected. Furthermore, I've seen there is lots of confusion on this, so I hope this topic would serve to anyone.

I want to have one coordinator and one router in API mode. The goal is to make a mesh network. To do so, I'd like any router be able to speak with the coordinator and the coordinator be able to speak to any router (or by future end device, but in the network design, look like it's the same)he want. I'm using the xbee Arduino shield to connect the xbee module to my Arduino.

Every tutorial I've seen use 64 bit address (SH and SL) over the Xbee Arduino library. It look great and over xctu it seems to work well, but it doesn't work over Arduino.

In some other link I've read that we have to fix and use MY, DH, DL, ID and CH (which seems more logical as MY with ID refer to what could be considered as a "network address". So the address should be encoded to 16 bit. Unfortunately, I'm unable to make it work with xbee-arduino library.

The most interesting link I've seen is this topic.

What I think would work :

Refer to this image :

As I've understood, I have to use DH, DL and MY to design my network as wanted, so it's like pointing every end device to their router and every router to their coordinator (which means in my case that I only have to configure the DH and DL of my router as the MY of my coordinator). Then, by code, to communicate, I'll have to use SH and SL of the device I'd like to query (which are the 64 bits addresses of devices).

The limit of what I think is that it's more like a tree than a mesh, because I'm unable to fix 2 router.

So could someone explain precisely how to make it work ? Am I right ?