Rewrite from scratch a TCP/IP stack for mbed. So far the following parts are usable: Drivers: - EMAC driver (from CMSIS 2.0) Protocols: - Ethernet protocol - ARP over ethernet for IPv4 - IPv4 over Ethernet - ICMPv4 over IPv4 - UDPv4 over IPv4 APIs: - Sockets for UDPv4 The structure of this stack is designed to be very modular. Each protocol can register one or more protocol to handle its payload, and in each protocol, an API can be hooked (like Sockets for example). This is an early release.

Committer:
Benoit
Date:
Sun Jun 12 19:17:11 2011 +0000
Revision:
1:f4040665bc61
Parent:
0:19f5f51584de
Frames are now received using an interrupt handler

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Benoit 0:19f5f51584de 1 /*
Benoit 0:19f5f51584de 2 * $Id: Queue.h 26 2011-06-09 10:24:02Z benoit $
Benoit 0:19f5f51584de 3 * $Author: benoit $
Benoit 0:19f5f51584de 4 * $Date: 2011-06-09 12:24:02 +0200 (jeu., 09 juin 2011) $
Benoit 0:19f5f51584de 5 * $Rev: 26 $
Benoit 0:19f5f51584de 6 *
Benoit 0:19f5f51584de 7 *
Benoit 0:19f5f51584de 8 *
Benoit 0:19f5f51584de 9 *
Benoit 0:19f5f51584de 10 *
Benoit 0:19f5f51584de 11 */
Benoit 0:19f5f51584de 12
Benoit 0:19f5f51584de 13 #ifndef __QUEUE_H__
Benoit 0:19f5f51584de 14 #define __QUEUE_H__
Benoit 0:19f5f51584de 15
Benoit 0:19f5f51584de 16
Benoit 0:19f5f51584de 17 #include <stdint.h>
Benoit 0:19f5f51584de 18 #include "mbedNet.h"
Benoit 0:19f5f51584de 19
Benoit 0:19f5f51584de 20 struct Queue
Benoit 0:19f5f51584de 21 {
Benoit 0:19f5f51584de 22 uint8_t pushIndex,
Benoit 0:19f5f51584de 23 popIndex;
Benoit 0:19f5f51584de 24 void *entries[QUEUE_MAX_ENTRY_COUNT + 1];
Benoit 0:19f5f51584de 25 int16_t size;
Benoit 0:19f5f51584de 26 };
Benoit 0:19f5f51584de 27 typedef struct Queue Queue_t;
Benoit 0:19f5f51584de 28
Benoit 0:19f5f51584de 29
Benoit 1:f4040665bc61 30 Queue_t *Queue_Alloc(int16_t size);
Benoit 1:f4040665bc61 31 int32_t Queue_Push(Queue_t *queue, void *entry);
Benoit 1:f4040665bc61 32 int32_t Queue_Pop(Queue_t *queue, void **entry);
Benoit 1:f4040665bc61 33 int32_t Queue_Peek(Queue_t *queue, void **entry);
Benoit 1:f4040665bc61 34 int32_t Queue_Free(Queue_t *queue);
Benoit 1:f4040665bc61 35 Bool_t Queue_IsEmpty(const Queue_t *queue);
Benoit 1:f4040665bc61 36 Bool_t Queue_IsFull(const Queue_t *queue);
Benoit 0:19f5f51584de 37
Benoit 0:19f5f51584de 38
Benoit 0:19f5f51584de 39 #endif /* __QUEUE_H__ */
Benoit 0:19f5f51584de 40