xbee_err _xbee_pktUnlink(struct xbee_con *con, struct xbee_pkt *pkt, int needsLLLock) { xbee_err ret; if (!con || !pkt) return XBEE_EMISSINGPARAM; #ifndef XBEE_DISABLE_STRICT_OBJECTS if (xbee_conValidate(con) != XBEE_ENONE) return XBEE_EINVAL; if (xbee_pktValidate(pkt) != XBEE_ENONE) return XBEE_EINVAL; #endif /* XBEE_DISABLE_STRICT_OBJECTS */ if ((ret = _xbee_ll_ext_item(con->pktList, pkt, needsLLLock)) == XBEE_ENONE) { pkt->xbee = NULL; pkt->con = NULL; } return ret; }
xbee_err xbee_pktLink(struct xbee_con *con, struct xbee_pkt *pkt) { xbee_err ret; if (!con || !pkt) return XBEE_EMISSINGPARAM; #ifndef XBEE_DISABLE_STRICT_OBJECTS if (xbee_conValidate(con) != XBEE_ENONE) return XBEE_EINVAL; if (xbee_pktValidate(pkt) != XBEE_ENONE) return XBEE_EINVAL; #endif /* XBEE_DISABLE_STRICT_OBJECTS */ if (xbee_ll_get_item(con->pktList, pkt) == XBEE_ENONE) return XBEE_EEXISTS; if ((ret = xbee_ll_add_tail(con->pktList, pkt)) == XBEE_ENONE) { pkt->xbee = con->xbee; pkt->con = con; } return ret; }
EXPORT void libxbee::XBee::conRegister(Con *con) { xbee_err ret; if ((ret = xbee_conValidate(con->getHnd())) != XBEE_ENONE) throw(ret); conList.push_back(con); conList.unique(); }