1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- #include "c_stdlib.h"
- #include "pdu.h"
- coap_pdu_t * coap_new_pdu(void) {
- coap_pdu_t *pdu = NULL;
- pdu = (coap_pdu_t *)c_zalloc(sizeof(coap_pdu_t));
- if(!pdu){
- NODE_DBG("coap_new_pdu malloc error.\n");
- return NULL;
- }
- pdu->scratch.p = (uint8_t *)c_zalloc(MAX_REQ_SCRATCH_SIZE);
- if(!pdu->scratch.p){
- NODE_DBG("coap_new_pdu malloc error.\n");
- c_free(pdu);
- return NULL;
- }
- pdu->scratch.len = MAX_REQ_SCRATCH_SIZE;
- pdu->pkt = (coap_packet_t *)c_zalloc(sizeof(coap_packet_t));
- if(!pdu->pkt){
- NODE_DBG("coap_new_pdu malloc error.\n");
- c_free(pdu->scratch.p);
- c_free(pdu);
- return NULL;
- }
- pdu->pkt->content.p = NULL;
- pdu->pkt->content.len = 0;
- pdu->msg.p = (uint8_t *)c_zalloc(MAX_REQUEST_SIZE+1); // +1 for string '\0'
- if(!pdu->msg.p){
- NODE_DBG("coap_new_pdu malloc error.\n");
- c_free(pdu->pkt);
- c_free(pdu->scratch.p);
- c_free(pdu);
- return NULL;
- }
- pdu->msg.len = MAX_REQUEST_SIZE;
- return pdu;
- }
- void coap_delete_pdu(coap_pdu_t *pdu){
- if(!pdu)
- return;
- if(pdu->scratch.p){
- c_free(pdu->scratch.p);
- pdu->scratch.p = NULL;
- pdu->scratch.len = 0;
- }
- if(pdu->pkt){
- c_free(pdu->pkt);
- pdu->pkt = NULL;
- }
- if(pdu->msg.p){
- c_free(pdu->msg.p);
- pdu->msg.p = NULL;
- pdu->msg.len = 0;
- }
- c_free(pdu);
- pdu = NULL;
- }
|