void xbee_ll_destroy(struct xbee_ll_head *list, void (*freeCallback)(void *)) { void *p; while ((xbee_ll_ext_tail(list, &p)) == XBEE_ENONE && p) { if (freeCallback) freeCallback(p); } xsys_mutex_destroy(&list->mutex); }
xbee_err xbee_logFree(struct xbee_log *log) { if (!log) return XBEE_EMISSINGPARAM; xsys_mutex_destroy(&log->mutex); free(log); return XBEE_ENONE; }
/* free any resources used by a connection these should ALL be allocated within xbee_conNew */ int xbee_conFree(struct xbee *xbee, struct xbee_con *con) { if (!xbee) return XBEE_ENOXBEE; xsys_mutex_destroy(&con->txMutex); xsys_sem_destroy(&con->callbackSem); ll_destroy(&con->rxList, (void(*)(void*))xbee_pktFree); free(con); return XBEE_ENONE; }
xbee_err xbee_frameBlockFree(struct xbee_frameBlock *fBlock) { int i; if (!fBlock) return XBEE_EMISSINGPARAM; for (i = 0; i < fBlock->numFrames; i++) { xsys_sem_destroy(&fBlock->frame[i].sem); } xsys_mutex_destroy(&fBlock->mutex); free(fBlock); return XBEE_ENONE; }