Browse Source

AP_HAL: Simplify ByteBuffer::readptr logic

master
Murilo Belluzzo 9 years ago committed by Lucas De Marchi
parent
commit
e9e31172c0
  1. 14
      libraries/AP_HAL/utility/RingBuffer.cpp
  2. 2
      libraries/AP_HAL/utility/RingBuffer.h

14
libraries/AP_HAL/utility/RingBuffer.cpp

@ -176,18 +176,14 @@ uint32_t ByteBuffer::read(uint8_t *data, uint32_t len)
} }
/* /*
return a pointer to a contiguous read buffer * Returns the pointer and size to a contiguous read in the buffer
*/ */
const uint8_t *ByteBuffer::readptr(uint32_t &available_bytes) const uint8_t *ByteBuffer::readptr(uint32_t &available_bytes)
{ {
available_bytes = available(); uint32_t _tail = tail;
if (available_bytes == 0) { available_bytes = (head > _tail) ? size - head : _tail - head;
return nullptr;
} return available_bytes ? &buf[head] : nullptr;
if (head+available_bytes > size) {
available_bytes = size - head;
}
return &buf[head];
} }
int16_t ByteBuffer::peek(uint32_t ofs) const int16_t ByteBuffer::peek(uint32_t ofs) const

2
libraries/AP_HAL/utility/RingBuffer.h

@ -61,7 +61,7 @@ public:
// advance the read pointer (discarding bytes) // advance the read pointer (discarding bytes)
bool advance(uint32_t n); bool advance(uint32_t n);
// return a pointer to the next available data // Returns the pointer and size to a contiguous read of the next available data
const uint8_t *readptr(uint32_t &available_bytes); const uint8_t *readptr(uint32_t &available_bytes);
// peek one byte without advancing read pointer. Return byte // peek one byte without advancing read pointer. Return byte

Loading…
Cancel
Save