int main(void) { void *d; struct xbee *xbee; struct xbee_con *con; struct xbee_conAddress address; xbee_err ret; if ((ret = xbee_setup(&xbee, "xbee1", "/dev/ttyUSB0", 57600)) != XBEE_ENONE) { printf("ret: %d (%s)\n", ret, xbee_errorToStr(ret)); return ret; } if ((ret = xbee_netStart(xbee, 27015, myClientFilter)) != XBEE_ENONE) { printf("ret: %d (%s)\n", ret, xbee_errorToStr(ret)); return ret; } printf("Ready!... waiting for 30 secs\n"); usleep(30000000); xbee_netStop(xbee); xbee_shutdown(xbee); return 0; }
xbee_err xbee_free(struct xbee *xbee) { int i; xbee_ll_ext_item(xbeeList, xbee); xbee->die = 1; if (xbee->iface.rx) { xsys_sem_post(&xbee->iface.rx->sem); } if (xbee->iface.tx) { xsys_sem_post(&xbee->iface.tx->sem); } /* sleep for 4 seconds because: the rx thread should timeout every 2-ish econds the rxHandler thread will need to run round one more time to clean up the tx thread will need to run round one more time to clean up */ for (i = 0; i < 4; i++) usleep(1000000); xbee_threadDestroyMine(xbee); if (xbee->netInfo) xbee_netStop(xbee); if (xbee->mode && xbee->mode->shutdown) xbee->mode->shutdown(xbee); xbee_modeCleanup(xbee->iface.conTypes); xbee_rxFree(xbee->iface.rx); xbee_txFree(xbee->iface.tx); #ifndef XBEE_DISABLE_LOGGING xbee_logFree(xbee->log); #endif /* !XBEE_DISABLE_LOGGING */ xbee_frameBlockFree(xbee->fBlock); free(xbee); return XBEE_ENONE; }