Difference between revisions of "Packetbuffer Basics"

From Contiki
Jump to: navigation, search
(Description)
(Description)
Line 20: Line 20:
  
 
== Description ==
 
== Description ==
 +
<source lang="c">
 
struct packetbuf_attr packetbuf_attrs[PACKETBUF_NUM_ATTRS];
 
struct packetbuf_attr packetbuf_attrs[PACKETBUF_NUM_ATTRS];
 
struct packetbuf_addr packetbuf_addrs[PACKETBUF_NUM_ADDRS];
 
struct packetbuf_addr packetbuf_addrs[PACKETBUF_NUM_ADDRS];
 +
</source>
  
 
+
These two structures are used to store the attributes for the buffer and the address of the node.
 +
<source lang="c">
 +
struct packetbuf_attr {
 +
/*  uint8_t type; */
 +
  packetbuf_attr_t val;
 +
};
 +
struct packetbuf_addr {
 +
/*  uint8_t type; */
 +
  rimeaddr_t addr;
 +
};
 +
</source>
 
static uint16_t buflen, bufptr;
 
static uint16_t buflen, bufptr;
 
static uint8_t hdrptr;
 
static uint8_t hdrptr;

Revision as of 16:47, 4 November 2014

Back to Contiki Tutorials


Introduction

This tutorial is a introduction to different operations on the packetbuf on ContikiOS 2.7. We will also cover brief details about each of the functions and how they work.

You will learn

Through this tutorial you will learn about different funcions and usage components of packetbuf. This will help you in any projects since packetpuf is necessary for any networking project.


Source Codes

~/contiki-2.7/core/net/packetbuf.c

~/contiki-2.7/core/net/packetbuf.h


Description

struct packetbuf_attr packetbuf_attrs[PACKETBUF_NUM_ATTRS];
struct packetbuf_addr packetbuf_addrs[PACKETBUF_NUM_ADDRS];

These two structures are used to store the attributes for the buffer and the address of the node.

struct packetbuf_attr {
/*   uint8_t type; */
  packetbuf_attr_t val;
};
struct packetbuf_addr {
/*   uint8_t type; */
  rimeaddr_t addr;
};

static uint16_t buflen, bufptr; static uint8_t hdrptr;

/* The declarations below ensure that the packet buffer is aligned on

  an even 16-bit boundary. On some platforms (most notably the
  msp430), having apotentially misaligned packet buffer may lead to
  problems when accessing 16-bit values. */

static uint16_t packetbuf_aligned[(PACKETBUF_SIZE + PACKETBUF_HDR_SIZE) / 2 + 1]; static uint8_t *packetbuf = (uint8_t *)packetbuf_aligned;

static uint8_t *packetbufptr;