/*---------------------------------------------------------------------------*/ void * queuebuf_dataptr(struct queuebuf *b) { if(memb_inmemb(&bufmem, b)) { struct queuebuf_data *buframptr = queuebuf_load_to_ram(b); return buframptr->data; } return NULL; }
/*---------------------------------------------------------------------------*/ void queuebuf_to_packetbuf(struct queuebuf *b) { if(memb_inmemb(&bufmem, b)) { struct queuebuf_data *buframptr = queuebuf_load_to_ram(b); packetbuf_copyfrom(buframptr->data, buframptr->len); packetbuf_attr_copyfrom(buframptr->attrs, buframptr->addrs); } }
/*---------------------------------------------------------------------------*/ void queuebuf_update_attr_from_packetbuf(struct queuebuf *buf) { struct queuebuf_data *buframptr = queuebuf_load_to_ram(buf); packetbuf_attr_copyto(buframptr->attrs, buframptr->addrs); #if WITH_SWAP if(buf->location == IN_CFS) { queuebuf_flush_tmpdata(); } #endif }
/*---------------------------------------------------------------------------*/ void * queuebuf_dataptr(struct queuebuf *b) { struct queuebuf_ref *r; if(memb_inmemb(&bufmem, b)) { struct queuebuf_data *buframptr = queuebuf_load_to_ram(b); return buframptr->data; } else if(memb_inmemb(&refbufmem, b)) { r = (struct queuebuf_ref *)b; return r->ref; } return NULL; }
/*---------------------------------------------------------------------------*/ void queuebuf_to_packetbuf(struct queuebuf *b) { struct queuebuf_ref *r; if(memb_inmemb(&bufmem, b)) { struct queuebuf_data *buframptr = queuebuf_load_to_ram(b); packetbuf_copyfrom(buframptr->data, buframptr->len); packetbuf_attr_copyfrom(buframptr->attrs, buframptr->addrs); } else if(memb_inmemb(&refbufmem, b)) { r = (struct queuebuf_ref *)b; packetbuf_clear(); packetbuf_copyfrom(r->ref, r->len); packetbuf_hdralloc(r->hdrlen); memcpy(packetbuf_hdrptr(), r->hdr, r->hdrlen); } }
/*---------------------------------------------------------------------------*/ packetbuf_attr_t queuebuf_attr(struct queuebuf *b, uint8_t type) { struct queuebuf_data *buframptr = queuebuf_load_to_ram(b); return buframptr->attrs[type].val; }
/*---------------------------------------------------------------------------*/ linkaddr_t * queuebuf_addr(struct queuebuf *b, uint8_t type) { struct queuebuf_data *buframptr = queuebuf_load_to_ram(b); return &buframptr->addrs[type - PACKETBUF_ADDR_FIRST].addr; }
/*---------------------------------------------------------------------------*/ int queuebuf_datalen(struct queuebuf *b) { struct queuebuf_data *buframptr = queuebuf_load_to_ram(b); return buframptr->len; }