#pragma once #include #include #include typedef struct { uint16_t size; uint16_t pos; uint8_t *buffer; } buffer_t; static inline int buffer_set(buffer_t *buffer,void *mem,int size){ if (buffer){ ATOMIC buffer->buffer = mem; buffer->pos = 0; buffer->size = size; return ESUCCESS; }; return -ENULLPTR; }; static inline int buffer_pos(buffer_t *buffer){ ATOMIC return (buffer) ? buffer->pos : -ENULLPTR; }; static inline int buffer_free(buffer_t *buffer){ ATOMIC return (buffer) ? (buffer->size - buffer->pos) : -ENULLPTR; }; #define buffer_byte(b) ((b)->buffer[(b)->pos++])