#include #include using namespace std; #include //initialisation faite directement struct charFifo{ char * data ; unsigned int fifo_size ; unsigned int write_index ; unsigned int read_index ; unsigned int nb_available ; }; #define FIFO_SIZE1 3 char FifoBuffer[FIFO_SIZE1]; struct charFifo myFifo; // la variable FIFO à utiliser #define FIFO_SIZE2 4 char FifoBuffer2[FIFO_SIZE2]; struct charFifo myFifo2; //////////////////////////////////////// //// /// \brief init_char_fifo /// \param pf /// \param buf /// \param f_size /// void init_char_fifo(struct charFifo * ptr_fif, char * buf, unsigned int f_size){ //(*ptr_fif).fifo_size=f_size; ptr_fif->fifo_size=f_size; ptr_fif->nb_available=0; ptr_fif->write_index=0; ptr_fif->read_index=0; ptr_fif->data=buf; } ////////////////////////////////////////////////// //// /// \brief write_char_fifo /// \ptr_fif : pointeur vers la fifo dans laquelle écrire /// \param token : jeton a écrire dans la FIFO /// \return 1 si valeur écrite dans la FIFO, 0 sinon /// char write_char_fifo(struct charFifo * ptr_fif, const char token){ if(ptr_fif->nb_available >= ptr_fif->fifo_size) return 0 ; //FIFO PLEINE ptr_fif->data[ptr_fif->write_index] = token ; (ptr_fif->write_index)++; if( ptr_fif->write_index >= ptr_fif->fifo_size) ptr_fif->write_index = 0 ; ptr_fif->nb_available++; return 1; //OK } ////////////////////////////////////////////////// /// /// \brief read_char_fifo /// \ptr_fif : pointeur vers la fifo dans laquelle écrire /// \param ptr_token : pointeur vers la zone mémoire dans laquelle ranger le jeton lu depuis la FIFO /// \return 1 si valeur lue dans la FIFO, 0 sinon /// char read_char_fifo(struct charFifo * ptr_fif, char * ptr_token){ if( ptr_fif->nb_available == 0) return 0; //FIFO VIDE *ptr_token=ptr_fif->data[ptr_fif->read_index]; (ptr_fif->read_index )++; if( ptr_fif->read_index >= ptr_fif->fifo_size) ptr_fif->read_index = 0 ; ptr_fif->nb_available--; return 1; //OK } ////////////////////////////////////////////////// int main(int argc, char *argv[]) { printf("salut les APP\r\n"); char lu; init_char_fifo(&myFifo, FifoBuffer, FIFO_SIZE1); read_char_fifo(&myFifo, &lu) ; write_char_fifo(&myFifo, 5) ; write_char_fifo(&myFifo, 8) ; read_char_fifo(&myFifo, &lu) ; write_char_fifo(&myFifo, 12) ; write_char_fifo(&myFifo, 1) ; write_char_fifo(&myFifo, 7) ; read_char_fifo(&myFifo, &lu) ; read_char_fifo(&myFifo, &lu) ; read_char_fifo(&myFifo, &lu) ; read_char_fifo(&myFifo, &lu) ; }