#ifdef shell gcc -o ${0//.c/} $0 -lxbee -g exit } #endif /* libxbee - a C library to aid the use of Digi's Series 1 XBee modules running in API mode (AP=2). Copyright (C) 2009 Attie Grande (attie@attie.co.uk) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* this sample will make use of multiple instances of libxbee and send messages between the attached XBees */ #include #include #include #include int mode; char bitmask; char outputs; xbee_hnd xbee1; xbee_hnd xbee2; void sighandler(int sig) { if (sig == SIGINT) { _xbee_end(xbee1); _xbee_end(xbee2); exit(0); } } void xbee1CB(xbee_con *con, xbee_pkt *pkt) { char data[128]; snprintf(data,pkt->datalen+1,"%s",pkt->data); printf("XBee1: Rx[%3d]: %s\n",pkt->datalen,data); } void xbee2CB(xbee_con *con, xbee_pkt *pkt) { char data[128]; snprintf(data,pkt->datalen+1,"%s",pkt->data); printf("XBee2: Rx[%3d]: %s\n",pkt->datalen,data); } int main(int argc, char *argv[]) { xbee_con *con1; xbee_con *con2; if (!(xbee1 = _xbee_setuplogAPI("/dev/ttyUSB0",57600,3,'+',250))) { //if (!(xbee1 = _xbee_setupAPI("/dev/ttyUSB0",57600,'+',250))) { printf("xbee1: setup error...\n"); return 1; } if (!(xbee2 = _xbee_setuplogAPI("/dev/ttyUSB1",57600,4,'+',250))) { //if (!(xbee2 = _xbee_setupAPI("/dev/ttyUSB1",57600,'+',250))) { printf("xbee2: setup error...\n"); return 1; } /* handle ^C */ signal(SIGINT, sighandler); con1 = _xbee_newcon(xbee1,'1',xbee_64bitData, 0x0013A200, 0x40081826); con1->waitforACK = 1; con1->callback = xbee1CB; con2 = _xbee_newcon(xbee2,'2',xbee_64bitData, 0x0013A200, 0x404B75DE); con2->waitforACK = 1; con2->callback = xbee2CB; while (1) { printf("xbee1: Tx\n"); _xbee_logit(xbee1,"xbee1: Tx"); _xbee_logit(xbee2,"xbee1: Tx"); _xbee_senddata(xbee1,con1,"Hello"); usleep(1000000); printf("xbee2: Tx\n"); _xbee_logit(xbee1,"xbee2: Tx"); _xbee_logit(xbee2,"xbee2: Tx"); _xbee_senddata(xbee2,con2,"Hi There!"); usleep(1000000); } return 0; }