1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- #include "rbuf.h"
- void rbuf_ini(uint8_t* ptr, uint8_t l)
- {
- ptr[0] = l;
- ptr[1] = 0;
- ptr[2] = 0;
- }
- #define _lock()
- #define _unlock()
- int rbuf_put(uint8_t* ptr, uint8_t b)
- {
- _lock();
- uint8_t buf_w = ptr[1];
- uint8_t buf_r = ptr[2];
- _unlock();
- ptr[4 + buf_w] = b;
- buf_w++;
- uint8_t buf_l = ptr[0];
- if (buf_w >= buf_l) buf_w = 0;
- if (buf_w == buf_r) return -1;
- ptr[1] = buf_w;
- return 0;
- }
- int rbuf_get(uint8_t* ptr)
- {
- _lock();
- uint8_t buf_w = ptr[1];
- uint8_t buf_r = ptr[2];
- _unlock();
- if (buf_r == buf_w) return -1;
- int ret = ptr[4 + buf_r];
- buf_r++;
- uint8_t buf_l = ptr[0];
- if (buf_r >= buf_l) buf_r = 0;
- ptr[2] = buf_r;
- return ret;
- }
|