SikendeRTOS
RTOS for ARM Cortex M3+ SoCs designed and written from scratch
FIFO.h File Reference

Provides Functions to initialize FIFO, uses index implementation and macro. More...

#include "startup.h"
#include "cpu_vars.h"
Include dependency graph for FIFO.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define AddIndexFifo(NAME, SIZE, TYPE, SUCCESS, FAIL)
 
#define AddPointerFifo(NAME, SIZE, TYPE, SUCCESS, FAIL)
 

Detailed Description

Provides Functions to initialize FIFO, uses index implementation and macro.

Author
Valvano
Date
2/04/2019

Definition in file FIFO.h.

Macro Definition Documentation

◆ AddIndexFifo

#define AddIndexFifo (   NAME,
  SIZE,
  TYPE,
  SUCCESS,
  FAIL 
)
Value:
uint32_t volatile NAME ## PutI; \
uint32_t volatile NAME ## GetI; \
TYPE static NAME ## Fifo [SIZE]; \
void NAME ## Fifo_Init(void){ long sr; \
sr = StartCritical(); \
NAME ## PutI = NAME ## GetI = 0; \
EndCritical(sr); \
} \
int NAME ## Fifo_Put (TYPE data){ \
if(( NAME ## PutI - NAME ## GetI ) & ~(SIZE-1)){ \
return(FAIL); \
} \
NAME ## Fifo[ NAME ## PutI &(SIZE-1)] = data; \
NAME ## PutI ## ++; \
return(SUCCESS); \
} \
int NAME ## Fifo_Get (TYPE *datapt){ \
if( NAME ## PutI == NAME ## GetI ){ \
return(FAIL); \
} \
*datapt = NAME ## Fifo[ NAME ## GetI &(SIZE-1)]; \
NAME ## GetI ## ++; \
return(SUCCESS); \
} \
unsigned short NAME ## Fifo_Size (void){ \
return ((unsigned short)( NAME ## PutI - NAME ## GetI )); \
}
INT32U StartCritical(void)
Start Criticat Sections, Disable Global Interrupts.

Definition at line 38 of file FIFO.h.

◆ AddPointerFifo

#define AddPointerFifo (   NAME,
  SIZE,
  TYPE,
  SUCCESS,
  FAIL 
)

Definition at line 72 of file FIFO.h.