34#ifndef DOXYGEN_SHOULD_SKIP_THIS
36#if defined(__MK64FX512__) || defined(__MK66FX1M0__)
37inline bool is_aligned(
const void *ptr, uintptr_t alignment)
39 auto iptr =
reinterpret_cast<uintptr_t
>(ptr);
40 return !(iptr % alignment);
42inline void memcpyBuf(
void *dst,
const void *src,
size_t len)
44 const uint8_t *b =
reinterpret_cast<const uint8_t *
>(0X20000000UL);
45 uint8_t *d =
reinterpret_cast<uint8_t *
>(dst);
46 const uint8_t *s =
reinterpret_cast<const uint8_t *
>(src);
48 !((d < b && b <= (d + len)) || (s < b && b <= (s + len))))
50 memcpy(dst, src, len);
61inline void memcpyBuf(
void *dst,
const void *src,
size_t len)
63 memcpy(dst, src, len);
79template <
class F,
size_t Size>
class RingBuf :
public Print
151 const uint8_t *src = (
const uint8_t *)buf;
158 while (nread != count)
182 uint8_t *dst =
reinterpret_cast<uint8_t *
>(buf);
189 while (nwrite != count)
208 char *str = buf +
sizeof(buf);
218 return write(str, buf +
sizeof(buf) - str);
238 char buf[3 *
sizeof(Type) + 3];
239 char *str = buf +
sizeof(buf);
254 if (
sizeof(Type) < 4)
266 return write((
const uint8_t *)str, &buf[
sizeof(buf)] - str);
287 while (nread != count)
324 size_t write(
const void *buf,
size_t count)
339 size_t write(
const uint8_t *buf,
size_t count)
override
341 return write((
const void *)buf, count);
350 return write(&data, 1);
372 while (nwrite != count)
398 return index < Size ? index : index - Size;
403 return a < b ? a : b;
char * fmtDouble(char *str, double num, uint8_t prec, bool altFmt)
Definition FmtNumber.cpp:262
char * fmtBase10(char *str, uint16_t n)
Definition FmtNumber.cpp:163
bool is_aligned(const void *ptr, uintptr_t alignment)
Definition RingBuf.h:37
void memcpyBuf(void *dst, const void *src, size_t len)
Definition RingBuf.h:42
size_t memcpyIn(const void *buf, size_t count)
Definition RingBuf.h:149
void begin(F *file)
Definition RingBuf.h:92
RingBuf()
Definition RingBuf.h:85
F * m_file
Definition RingBuf.h:390
size_t writeOut(size_t count)
Definition RingBuf.h:364
size_t advance(size_t index, size_t n)
Definition RingBuf.h:395
size_t bytesFree() const
Definition RingBuf.h:104
size_t write(uint8_t data) override
Definition RingBuf.h:348
size_t readIn(size_t count)
Definition RingBuf.h:279
size_t write(const void *buf, size_t count)
Definition RingBuf.h:324
size_t minSize(size_t a, size_t b)
Definition RingBuf.h:401
size_t bytesUsedIsr() const
Definition RingBuf.h:133
size_t printField(Type value, char term)
Definition RingBuf.h:235
volatile size_t m_count
Definition RingBuf.h:391
size_t printField(float value, char term, uint8_t prec=2)
Definition RingBuf.h:226
size_t printField(double value, char term, uint8_t prec=2)
Definition RingBuf.h:205
size_t bytesUsed() const
Definition RingBuf.h:122
size_t memcpyOut(void *buf, size_t count)
Definition RingBuf.h:180
bool sync()
Definition RingBuf.h:307
uint8_t __attribute__((aligned(4))) m_buf[Size]
size_t m_head
Definition RingBuf.h:392
size_t m_tail
Definition RingBuf.h:393
size_t write(const uint8_t *buf, size_t count) override
Definition RingBuf.h:339
size_t bytesFreeIsr() const
Definition RingBuf.h:115
static bool value
Definition DigitalPin.h:210