Example #1
0
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;
}
Example #2
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;
}