fifo.c 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /*
  2. * =====================================================================================
  3. *
  4. * ________ .__ __ ________ ____ ________
  5. * \_____ \ __ __|__| ____ | | __\______ \ _______ _/_ |/ _____/
  6. * / / \ \| | \ |/ ___\| |/ / | | \_/ __ \ \/ /| / __ \
  7. * / \_/. \ | / \ \___| < | ` \ ___/\ / | \ |__\ \
  8. * \_____\ \_/____/|__|\___ >__|_ \/_______ /\___ >\_/ |___|\_____ /
  9. * \__> \/ \/ \/ \/ \/
  10. *
  11. * www.optixx.org
  12. *
  13. *
  14. * Version: 1.0
  15. * Created: 07/21/2009 03:32:16 PM
  16. * Author: david@optixx.org
  17. *
  18. * =====================================================================================
  19. */
  20. #include "fifo.h"
  21. void fifo_init(fifo_t * f, uint8_t * buffer, const uint8_t size)
  22. {
  23. f->count = 0;
  24. f->pread = f->pwrite = buffer;
  25. f->read2end = f->write2end = f->size = size;
  26. }
  27. uint8_t fifo_put(fifo_t * f, const uint8_t data)
  28. {
  29. return _inline_fifo_put(f, data);
  30. }
  31. uint8_t fifo_get_wait(fifo_t * f)
  32. {
  33. while (!f->count);
  34. return _inline_fifo_get(f);
  35. }
  36. int fifo_get_nowait(fifo_t * f)
  37. {
  38. if (!f->count)
  39. return -1;
  40. return (int) _inline_fifo_get(f);
  41. }