AvrIO  1.4.5
Bibliothèque C modulaire pour ATMEL AVR
Pile d'octets FIFO

Description détaillée

Une pile FIFO est un buffer circulaire qui dispose d'un pointeur en écriture et d'un pointeur en lecture.
Les piles FIFO sont utilisées dans les communications inter-processus et les réseaux.

Graphe de collaboration de Pile d'octets FIFO:

Structures de données

struct  xQueue
 Pile FIFO. Plus de détails...
 

Fonctions

int iQueueCompare (struct xQueue *pxQueue1, struct xQueue *pxQueue2)
 Compare le contenu de deux piles d'octets. Plus de détails...
 
const char * pcQueuePushString (struct xQueue *pxQueue, const char *pcString)
 Empile une chaîne d'octets à zéro terminal. Plus de détails...
 
struct xQueuepxQueueNew (size_t xBufferSize)
 Crée et initialise une pile en mémoire dynamique. Plus de détails...
 
uint8_t ucQueuePull (struct xQueue *pxQueue)
 Dépile un octet. Plus de détails...
 
uint8_t ucQueueRead (struct xQueue *pxQueue, size_t xIndex)
 Lecture d'un octet (sans le dépiler) Plus de détails...
 
uint16_t usQueuePullWord (struct xQueue *pxQueue)
 Dépile un mot de 16 bits. Plus de détails...
 
uint16_t usQueueReadWord (struct xQueue *pxQueue, size_t xIndex)
 Lecture d'un mot de 16 bits (sans dépiler) Plus de détails...
 
void vQueueCopy (struct xQueue *pxDst, const struct xQueue *pxSrc)
 Copie d'une pile sur une autre. Plus de détails...
 
void vQueueDelete (struct xQueue *pxQueue)
 Détruit une pile créée avec xQueueNew() Plus de détails...
 
void vQueueDrop (struct xQueue *pxQueue)
 Détruit un octet. Plus de détails...
 
void vQueueDropBytes (struct xQueue *pxQueue, size_t xLength)
 Détruit plusieurs octets. Plus de détails...
 
void vQueueFlush (struct xQueue *pxQueue)
 Vide la pile. Plus de détails...
 
void vQueuePush (struct xQueue *pxQueue, uint8_t ucByte)
 Empile un octet. Plus de détails...
 
void vQueuePushWord (struct xQueue *pxQueue, uint16_t usWord)
 Empile un mot de 16 bits. Plus de détails...
 
void vQueueSetBuffer (struct xQueue *pxQueue, uint8_t *pucBuffer, size_t xBufferSize)
 Initialise la pile avec le buffer. Plus de détails...
 
size_t xQueueFree (struct xQueue *pxQueue)
 Renvoie le nombre d'octets disponibles. Plus de détails...
 
bool xQueueIsEmpty (struct xQueue *pxQueue)
 Teste si la pile est vide. Plus de détails...
 
bool xQueueIsFull (struct xQueue *pxQueue)
 Teste si la pile est vide. Plus de détails...
 
size_t xQueueLength (struct xQueue *pxQueue)
 Renvoie le nombre d'octets empilés. Plus de détails...
 
size_t xQueuePullAll (struct xQueue *pxQueue, uint8_t *pucBytes)
 Dépile tous les octets. Plus de détails...
 
size_t xQueuePullBytes (struct xQueue *pxQueue, uint8_t *pucBytes, size_t xLength)
 Dépile des octets. Plus de détails...
 
size_t xQueuePushBytes (struct xQueue *pxQueue, const uint8_t *pucBytes, size_t xLength)
 Empile une suite d'octets. Plus de détails...
 
size_t xQueuePushBytesOfQueue (struct xQueue *pxDstQueue, struct xQueue *pxSrcQueue, size_t xLength)
 Empile des octets d'une pile dans une autre. Plus de détails...
 
size_t xQueuePushQueue (struct xQueue *pxDstQueue, struct xQueue *pxSrcQueue)
 Empile une pile dans une autre. Plus de détails...
 
size_t xQueueSize (struct xQueue *pxQueue)
 Renvoie la longueur de la pile. Plus de détails...
 
size_t xQueueSizeOf (struct xQueue *pxQueue)
 Renvoie la taille mémoire d'une pile. Plus de détails...
 

Macros

#define QUEUE_DECLARE(xVarName, xBufferSize)
 Déclare une variable de type pile FIFO. Plus de détails...
 
#define QUEUE_STATIC_DECLARE(xVarName, xBufferSize)
 Déclare une variable static de type pile FIFO. Plus de détails...
 

Documentation des macros

#define QUEUE_DECLARE (   xVarName,
  xBufferSize 
)

Déclare une variable de type pile FIFO.

Paramètres
xVarNameNom de la variable
xBufferSizeNombre d'octets pouvant être stockés dans la pile

Définition à la ligne 280 du fichier queue.h.

#define QUEUE_STATIC_DECLARE (   xVarName,
  xBufferSize 
)

Déclare une variable static de type pile FIFO.

Paramètres
xVarNameNom de la variable
xBufferSizeNombre d'octets pouvant être stockés dans la pile

Définition à la ligne 289 du fichier queue.h.

Documentation des fonctions

int iQueueCompare ( struct xQueue pxQueue1,
struct xQueue pxQueue2 
)

Compare le contenu de deux piles d'octets.

Paramètres
pxQueue1Première pile à utiliser
pxQueue2Deuxième pile à utiliser
Renvoie
0 si elles contiennent le même nombre d'octets identiques, -1 si ne contiennent aucun octets en commun, une valeur positive correspondant au nombre d'octets en communs.
const char* pcQueuePushString ( struct xQueue pxQueue,
const char *  pcString 
)

Empile une chaîne d'octets à zéro terminal.

L'empilage est limité à la taille de la pile. Le zéro terminal n'est pas empilé.

Paramètres
pxQueueLa pile à utiliser
pcStringPointeur vers la chaîne d'octets à zéro terminal
Renvoie
Si la longueur de la chaine dépasse la taille de la pile, la fonction remplie la pile et renvoie le pointeur sur l'octet suivant le dernier transmis.
Si la pile peut contenir la chaîne en entier la fonction renvoie le pointeur sur le zéro terminal.
struct xQueue* pxQueueNew ( size_t  xBufferSize)

Crée et initialise une pile en mémoire dynamique.

La macro AVRIO_QUEUE_MALLOC_ENABLE doit être définie dans avrio-config.h ou à la compilation pour pouvoir utiliser cette fonction.

Paramètres
xBufferSizeNombre d'octets pouvant être stockés dans la pile
Renvoie
Pointeur sur la nouvelle pile ou 0 en cas d'erreur
uint8_t ucQueuePull ( struct xQueue pxQueue)

Dépile un octet.

Il est du ressort de l'utilisateur de vérifier que la pile n'est pas vide.

Paramètres
pxQueueLa pile à utiliser
Renvoie
L'octet dépilé
uint8_t ucQueueRead ( struct xQueue pxQueue,
size_t  xIndex 
)

Lecture d'un octet (sans le dépiler)

Il est du ressort de l'utilisateur de vérifier que la pile n'est pas vide et que l'index fournit est inférieur à la longueur de la pile.

Paramètres
pxQueueLa pile à utiliser
xIndexPosition de l'octet dans la pile entre 0 et (xQueueLength - 1)
Renvoie
L'octet lu
uint16_t usQueuePullWord ( struct xQueue pxQueue)

Dépile un mot de 16 bits.

Il est du ressort de l'utilisateur de vérifier que la pile n'est pas vide.

Paramètres
pxQueueLa pile à utiliser
Renvoie
Le mot dépilé
uint16_t usQueueReadWord ( struct xQueue pxQueue,
size_t  xIndex 
)

Lecture d'un mot de 16 bits (sans dépiler)

Il est du ressort de l'utilisateur de vérifier que la pile n'est pas vide et que l'index fournit est inférieur à la longueur de la pile.

Paramètres
pxQueueLa pile à utiliser
xIndexPosition du dans la pile entre 0 et (xQueueLength - 2)
Renvoie
Le mot lu
void vQueueCopy ( struct xQueue pxDst,
const struct xQueue pxSrc 
)

Copie d'une pile sur une autre.

Paramètres
pxDstLa pile destination
pxSrcLa pile source
Avertissement
Les octets contenus dans la source ne sont pas copiés.
void vQueueDelete ( struct xQueue pxQueue)

Détruit une pile créée avec xQueueNew()

La macro AVRIO_QUEUE_MALLOC_ENABLE doit être définie dans avrio-config.h ou à la compilation pour pouvoir utiliser cette fonction.

Paramètres
pxQueueLa pile à détruire
void vQueueDrop ( struct xQueue pxQueue)

Détruit un octet.

Il est du ressort de l'utilisateur de vérifier que la pile n'est pas vide.

Paramètres
pxQueueLa pile à utiliser
void vQueueDropBytes ( struct xQueue pxQueue,
size_t  xLength 
)

Détruit plusieurs octets.

Le nombre d'octets à détruire est limité à la longueur de la pile

Paramètres
pxQueueLa pile à utiliser
xLengthNombre d'octets
void vQueueFlush ( struct xQueue pxQueue)

Vide la pile.

Paramètres
pxQueueLa pile à utiliser
void vQueuePush ( struct xQueue pxQueue,
uint8_t  ucByte 
)

Empile un octet.

Il est du ressort de l'utilisateur de vérifier que la pile n'est pas pleine.

Paramètres
pxQueueLa pile à utiliser
ucByteL'octet à empiler
void vQueuePushWord ( struct xQueue pxQueue,
uint16_t  usWord 
)

Empile un mot de 16 bits.

Il est du ressort de l'utilisateur de vérifier que la pile n'est pas pleine.

Paramètres
pxQueueLa pile à utiliser
usWordLe mot à empiler
void vQueueSetBuffer ( struct xQueue pxQueue,
uint8_t *  pucBuffer,
size_t  xBufferSize 
)

Initialise la pile avec le buffer.

Paramètres
pxQueueLa pile à utiliser
pucBufferZone mémoire qui sera utilisée par la pile
xBufferSizeNombre d'octets pouvant être stockés dans le buffer
size_t xQueueFree ( struct xQueue pxQueue)

Renvoie le nombre d'octets disponibles.

Paramètres
pxQueueLa pile à utiliser
Renvoie
Le nombre d'octets disponibles
bool xQueueIsEmpty ( struct xQueue pxQueue)

Teste si la pile est vide.

Paramètres
pxQueueLa pile à utiliser
Renvoie
true si la pile est vide, false sinon
bool xQueueIsFull ( struct xQueue pxQueue)

Teste si la pile est vide.

Paramètres
pxQueueLa pile à utiliser
Renvoie
true si la pile est pleine, false sinon
size_t xQueueLength ( struct xQueue pxQueue)

Renvoie le nombre d'octets empilés.

Paramètres
pxQueueLa pile à utiliser
Renvoie
Le nombre d'octets empilés dans la pile
size_t xQueuePullAll ( struct xQueue pxQueue,
uint8_t *  pucBytes 
)

Dépile tous les octets.

Paramètres
pxQueueLa pile à utiliser
pucBytesPointeur vers la zone mémoire destination
Renvoie
Le nombre d'octets dépilés
size_t xQueuePullBytes ( struct xQueue pxQueue,
uint8_t *  pucBytes,
size_t  xLength 
)

Dépile des octets.

Paramètres
pxQueueLa pile à utiliser
pucBytesPointeur vers la zone mémoire destination
xLengthLe nombre d'octets à dépiler (limité à la longueur de la pile)
Renvoie
Le nombre d'octets dépilés
size_t xQueuePushBytes ( struct xQueue pxQueue,
const uint8_t *  pucBytes,
size_t  xLength 
)

Empile une suite d'octets.

L'empilage est limité à la taille de la pile.

Paramètres
pxQueueLa pile à utiliser
pucBytesPointeur vers les octets
xLengthNombre d'octets
Renvoie
0 ou le nombre d'octets restants si le nombre d'octets dépasse la taille de la pile.
size_t xQueuePushBytesOfQueue ( struct xQueue pxDstQueue,
struct xQueue pxSrcQueue,
size_t  xLength 
)

Empile des octets d'une pile dans une autre.

L'empilage est limité à la taille de la pile pxDstQueue.

Paramètres
pxDstQueueLa pile destinataire
pxSrcQueueLa pile source
Renvoie
0 ou le nombre d'octets restants dans pxSrcQueue si le nombre d'octets dépasse la taille de la pile.
size_t xQueuePushQueue ( struct xQueue pxDstQueue,
struct xQueue pxSrcQueue 
)

Empile une pile dans une autre.

L'empilage est limité à la taille de la pile pxDstQueue.

Paramètres
pxDstQueueLa pile destinataire
pxSrcQueueLa pile source
Renvoie
0 ou le nombre d'octets restants dans pxSrcQueue si le nombre d'octets dépasse la taille de la pile.
size_t xQueueSize ( struct xQueue pxQueue)

Renvoie la longueur de la pile.

Paramètres
pxQueueLa pile à utiliser
Renvoie
La taille de la pile
size_t xQueueSizeOf ( struct xQueue pxQueue)

Renvoie la taille mémoire d'une pile.

Paramètres
pxQueueLa pile à utiliser
Renvoie
La taille mémoire d'une pile (y compris la taille du buffer)