WE310F5  39.00.000
m2mb_netbuf.h
Go to the documentation of this file.
1 /*===============================================================================================*/
2 /* >>> Copyright (C) Telit Communications S.p.A. Italy All Rights Reserved. <<< */
55 /* Global declarations ==========================================================================*/
56 #ifndef M2MB_NETBUF_H
57 #define M2MB_NETBUF_H
58 
59 #include "stdint.h"
70 /*-----------------------------------------------------------------------------------------------*/
75 /*-----------------------------------------------------------------------------------------------*/
76 
80 #define M2MB_NETBUF_MAX_QUEUE_NAME 6
81 
85 #define M2MB_NETBUF_MAX_QUEUES 3
86 
93 typedef struct M2MB_NET_BUF
94 {
98  char *nb_Buff;
100  char *nb_Prot;
104 
106 
107 
114 typedef struct m2mb_Net_Buf_Queue_s
115 {
117  uint8_t total_Buffers;
118  uint8_t free_Buffers;
120 
129 {
133 
137 #define M2MB_NETBUF_UDP_HEADROOM (52)
138 
142 #define M2MB_NETBUF_TCP_HEADROOM (64)
143 
147 #define M2MB_NETBUF_UDP6_HEADROOM (72)
148 
152 #define M2MB_NETBUF_TCP6_HEADROOM (88)
153 
154 /* For a non-chained netbuf, we can use the following MACROs to update the netbuf */
155 
159 #define M2MB_NET_BUF_UPDATE_START(pkt, p) \
160  (p) = ((M2MB_NET_BUF_T *)(pkt))->nb_Prot
161 
165 #define M2MB_NET_BUF_UPDATE_INT32(p, val) \
166  *(UINT32 *)(p) = (UINT32)(val); (p) += sizeof(UINT32)
167 
171 #define M2MB_NET_BUF_UPDATE_INT16(p, val) \
172  *(uint16_t *)(p) = (uint16_t)(val); (p) += sizeof(uint16_t)
173 
177 #define M2MB_NET_BUF_UPDATE_INT8(p, val) \
178  *(uint8_t *)(p) = (uint8_t)(val); (p) += sizeof(uint8_t)
179 
183 #define M2MB_NET_BUF_UPDATE_DATA(p, data, len) \
184  memcpy((p), (data), (len)); (p) += (len)
185 
189 #define M2MB_NET_BUF_UPDATE_END(pkt, len) \
190  ((M2MB_NET_BUF_T *)(pkt))->nb_Plen = \
191  ((M2MB_NET_BUF_T *)(pkt))->nb_Tlen = (len)
192 
193 /* Definitions used for id in calls to m2mb_Net_Buf_Alloc() and m2mb_Net_Buf_Free() */
194 
201 #define M2MB_NETBUF_APP 0x0
202 
210 #define M2MB_NETBUF_SYS 0x1
211 
218 #define M2MB_NETBUF_SYS_CONTIG (0x4 | M2MB_NETBUF_SYS)
219 
227 #define M2MB_NETBUF_SSL 0x2
228 
229 
257 void *m2mb_Net_Buf_Alloc(UINT32 size, UINT32 id);
258 
272 INT32 m2mb_Net_Buf_Free(void *buf, UINT32 id);
273 
288 INT32 m2mb_Net_Buf_Update(void *netbuf, UINT32 offset, void *srcbuf, UINT32 len, UINT32 id);
289 
301 
305 /*-----------------------------------------------------------------------------------------------*/
306 
307 #endif /*M2MB_NETBUF_H*/
308 
struct m2mb_Net_Buf_Queue_s m2mb_Net_Buf_Queue_t
Structure that contains information about a free queue.
char name[M2MB_NETBUF_MAX_QUEUE_NAME]
Definition: m2mb_netbuf.h:116
UINT32 nb_Blen
Definition: m2mb_netbuf.h:99
UINT32 nb_Plen
Definition: m2mb_netbuf.h:102
INT32 M2MB_STATUS_T
Definition: m2mb_status.h:97
INT32 m2mb_Net_Buf_Update(void *netbuf, UINT32 offset, void *srcbuf, UINT32 len, UINT32 id)
Updates data in a network buffer.
struct M2MB_NET_BUF M2MB_NET_BUF_T
Structure to hold network buffer information.
char * nb_Prot
Definition: m2mb_netbuf.h:100
Structure to hold network buffer information.
Definition: m2mb_netbuf.h:93
struct M2MB_NET_BUF * pk_Prev
Definition: m2mb_netbuf.h:96
struct m2mb_Net_Buf_Queue_Status_s m2mb_Net_Buf_Queue_Status_t
Structure that contains information about all free queues.
void VOID
Definition: m2mb_types.h:74
m2mb_Net_Buf_Queue_t queue[M2MB_NETBUF_MAX_QUEUES]
Definition: m2mb_netbuf.h:130
M2MB_STATUS_T m2mb_Net_Buf_Free_Queue_Status(m2mb_Net_Buf_Queue_Status_t *arg)
M2MB_NET_BUF_T * PACKET
Definition: m2mb_netbuf.h:105
UINT32 nb_Tlen
Definition: m2mb_netbuf.h:101
Structure that contains information about all free queues.
Definition: m2mb_netbuf.h:128
unsigned long int UINT32
Definition: m2mb_types.h:88
void * m2mb_Net_Buf_Alloc(UINT32 size, UINT32 id)
Allocates a network buffer.
signed int INT32
Definition: m2mb_types.h:82
#define M2MB_NETBUF_MAX_QUEUE_NAME
Definition: m2mb_netbuf.h:80
#define M2MB_NETBUF_MAX_QUEUES
Definition: m2mb_netbuf.h:85
Structure that contains information about a free queue.
Definition: m2mb_netbuf.h:114
char * nb_Buff
Definition: m2mb_netbuf.h:98
INT32 m2mb_Net_Buf_Free(void *buf, UINT32 id)
Frees a network buffer.
struct M2MB_NET_BUF * pk_Next
Definition: m2mb_netbuf.h:97
VOID * reserved
Definition: m2mb_netbuf.h:95