Affiche l'identification des nouveaux noeuds, affiche le contenu des paquets de données reçus et transmet périodiquement un paquet de test en broadcast.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
#include <unistd.h>
#include <errno.h>
#include <sysio/xbee.h>
#include <sysio/serial.h>
#include <sysio/delay.h>
#include <assert.h>
#define DEFAULT_BAUDRATE 38400
#define TX_INTERVAL_DELAY 20
static const char * cDev;
static char cMyNi[21];
volatile int frame_id = 0;
void vPrintAddr (uint8_t * pucAddr, int iSize);
void vSigExitHandler (int sig);
void vSigAlarmHandler (int sig);
int
main (int argc, char **argv) {
int ret;
.
baud = DEFAULT_BAUDRATE, .dbits = SERIAL_DATABIT_8, .parity = SERIAL_PARITY_NONE,
};
if (argc < 2) {
printf ("Usage: %s device device [baud]\n", argv[0]);
exit (EXIT_FAILURE);
}
cDev = argv[1];
if (argc > 2) {
xIosSet.
baud = atoi (argv[2]);
}
if ( (xbee =
xXBeeOpen (cDev, &xIosSet, XBEE_SERIES_S2)) == NULL) {
perror ("xXBeeOpen failed !");
exit (EXIT_FAILURE);
}
printf ("*** SysIO XBee Coordinator Test ***\n");
signal (SIGTERM, vSigExitHandler);
signal (SIGINT, vSigExitHandler);
signal (SIGALRM, vSigAlarmHandler);
alarm (1);
for (;;) {
}
return 0;
}
int
if (strncmp (cCmd, XBEE_CMD_NODE_ID, 2) == 0) {
printf ("My Ni String is '%s'\n", cMyNi);
}
}
else {
fprintf (stderr, "Local AT command %2s failed with 0x%02X status\n",
}
return 0;
}
int
int size;
if (size > 0) {
volatile char * p;
vPrintAddr (src64, 8);
putchar ('*');
}
p[size] = 0;
printf (">\n%s\n", p);
}
return 0;
}
int
if (status) {
printf ("Tx%d Err. %d\n", frame_id, status);
}
else {
printf ("Tx%d Ok\n", frame_id);
}
frame_id = 0;
}
return 0;
}
int
const char * str;
printf ("A new node has joined the network:\n\taddr64: ");
printf ("\n\taddr16: ");
case XBEE_DEVICE_COORDINATOR:
str = "Coordinator";
break;
case XBEE_DEVICE_ROUTER:
str = "Router";
break;
case XBEE_DEVICE_END_DEVICE:
str = "End device";
break;
default:
str = "Unknown";
break;
}
printf ("\tDevice Type: %s\n", str);
return 0;
}
void
vSigExitHandler (int sig) {
printf ("\n%s closed.\nHave a nice day !\n", cDev);
exit (EXIT_SUCCESS);
}
void
vSigAlarmHandler (int sig) {
char message[33];
static int iCount = 1;
snprintf (message, 32, "%s #%d", cMyNi, iCount++);
printf ("Tx%d>'%s'\n", frame_id, message);
alarm (TX_INTERVAL_DELAY);
}
void
vPrintAddr (uint8_t * pucAddr, int iSize) {
for (int i = 0; i < iSize; i++) {
printf ("%02X", pucAddr[i]);
}
}