Hello,
I am trying to send a test message from one module to another with these simple codes (Digimesh network, nodes have same PAN and same Channel):
Sender:Code:
packetXBee* paq_sent;
int8_t state=0;
long previous=0;
char* data="Test message!";
void setup()
{
// Inits the XBee DigiMesh library
xbeeDM.init(DIGIMESH,FREQ2_4G,PRO);
// Powers XBee
xbeeDM.ON();
}
void loop()
{
// Set params to send
paq_sent=(packetXBee*) calloc(1,sizeof(packetXBee));
paq_sent->mode=UNICAST;
// paq_sent->MY_known=0;
paq_sent->packetID=0x52;
paq_sent->opt=0;
// xbeeDM.hops=0;
xbeeDM.setOriginParams(paq_sent, "XXXXXXXXXXXXXXX", MAC_TYPE); //XXXX... is the MAC of the sender
xbeeDM.setDestinationParams(paq_sent, "YYYYYYYYYYYYYYY", data, MAC_TYPE, DATA_ABSOLUTE); //YYY... is the MAC of the receiver
XBee.println("Try to send message");
xbeeDM.sendXBee(paq_sent);
if( !xbeeDM.error_TX )
{
XBee.println("OK. Message sent");
}
else
{
XBee.println("Message is not sent");
}
free(paq_sent);
paq_sent=NULL;
delay(5000);
}
Receiver:
Code:
packetXBee* paq_sent;
int8_t state=0;
long previous=0;
int count=0;
void setup()
{
// Inits the XBee DigiMesh library
xbeeDM.init(DIGIMESH,FREQ2_4G,PRO);
// Powers XBee
xbeeDM.ON();
}
void loop()
{
// Waiting message
previous=millis();
while( (millis()-previous) < 20000 )
{
if( XBee.available() )
{
xbeeDM.treatData();
if( !xbeeDM.error_RX )
{
// Sending answer back
while(xbeeDM.pos>0)
{
XBee.println("Message received from (MAC address): ");
for(int b=0;b<4;b++)
{
XBee.print(xbeeDM.packet_finished[xbeeDM.pos-1]->macSH[b],HEX);
}
for(int c=0;c<4;c++)
{
XBee.print(xbeeDM.packet_finished[xbeeDM.pos-1]->macSL[c],HEX);
}
XBee.print("MAC Address Origin: ");
for(int d=0;d<4;d++)
{
XBee.print(xbeeDM.packet_finished[xbeeDM.pos-1]->macOH[d],HEX);
}
for(int e=0;e<4;e++)
{
XBee.print(xbeeDM.packet_finished[xbeeDM.pos-1]->macOL[e],HEX);
}
free(xbeeDM.packet_finished[xbeeDM.pos-1]);
xbeeDM.packet_finished[xbeeDM.pos-1]=NULL;
xbeeDM.pos--;
}
}
}
}
delay(5000);
}
The problem is that when I use the BROADCAST mode, the transmission is OK, while in UNICAST mode there are transmission problems (only few packets are received ..). Why this behavior? Thank you!