#include #include using namespace std; #include //initialisation faite directement #define FIFO_SIZE 3 unsigned int fifo_size = FIFO_SIZE ; unsigned int write_index = 0 ; unsigned int read_index = 0 ; unsigned int nb_available = 0 ; char data[FIFO_SIZE] ; ////////////////////////////////////////////////// //// /// \brief write_char_fifo /// \param token : jeton a écrire dans la FIFO /// \return 1 si valeur écrite dans la FIFO, 0 sinon /// char write_char_fifo(const char token){ if(nb_available >= fifo_size) return 0 ; //FIFO PLEINE data[write_index] = token ; write_index++; if( write_index >= fifo_size) write_index = 0 ; nb_available++; return 1; //OK } ////////////////////////////////////////////////// /// /// \brief read_char_fifo /// \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( char * ptr_token){ if( nb_available == 0) return 0; //FIFO VIDE *ptr_token=data[read_index]; read_index ++; if( read_index >= fifo_size) read_index = 0 ; nb_available--; return 1; //OK } ////////////////////////////////////////////////// int main(int argc, char *argv[]) { printf("salut les APP\r\n"); cout << "Hello World!" << endl; /*write_char_fifo(5); write_char_fifo(1); write_char_fifo(7);*/ for (int i=0;i<10;i++) if (write_char_fifo(i)==0) cout << "fifo pleine "<< endl; for (int i=0;i<10;i++){ //rien n'empêche un utilisateur d'écrire //nb_available=5; //grosse bétise! char c; if (read_char_fifo(&c)!=0) cout << "donnée lue dans la fifo: " << +c << endl; else cout << "fifo vide "<< endl; } printf("fin\r\n"); }