• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

bblanchon / ArduinoStreamUtils / 9872110687

10 Jul 2024 09:58AM UTC coverage: 98.468%. Remained the same
9872110687

push

github

bblanchon
Set version to 1.9.0

964 of 979 relevant lines covered (98.47%)

2069.74 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

96.67
/src/StreamUtils/Streams/ProgmemStream.hpp
1
// StreamUtils - github.com/bblanchon/ArduinoStreamUtils
2
// Copyright Benoit Blanchon 2019-2024
3
// MIT License
4

5
#pragma once
6

7
#include <Arduino.h>
8

9
#include "../Configuration.hpp"
10

11
namespace StreamUtils {
12

13
class ProgmemStream : public Stream {
14
 public:
15
  ProgmemStream(const void* ptr, size_t size)
180✔
16
      : _ptr(reinterpret_cast<const char*>(ptr)), _size(size) {}
180✔
17

18
  ProgmemStream(const char* ptr) : _ptr(ptr), _size(ptr ? strlen_P(ptr) : 0) {}
60✔
19

20
  ProgmemStream(const __FlashStringHelper* ptr)
12✔
21
      : ProgmemStream{reinterpret_cast<const char*>(ptr)} {}
12✔
22

23
  int available() override {
72✔
24
    return _size;
72✔
25
  }
26

27
  int read() override {
441✔
28
    if (_size <= 0)
441✔
29
      return -1;
69✔
30
    _size--;
372✔
31
    return pgm_read_byte(_ptr++);
372✔
32
  }
33

34
#if STREAMUTILS_STREAM_READBYTES_IS_VIRTUAL
35
  size_t readBytes(char* buffer, size_t size) override {
27✔
36
    if (size > _size)
27✔
37
      size = _size;
15✔
38
    memcpy_P(buffer, _ptr, size);
27✔
39
    _ptr += size;
27✔
40
    _size -= size;
27✔
41
    return size;
27✔
42
  }
43
#endif
44

45
  int peek() override {
60✔
46
    if (_size <= 0)
60✔
47
      return -1;
24✔
48
    return pgm_read_byte(_ptr);
36✔
49
  }
50

51
  void flush() override {}
×
52

53
#if STREAMUTILS_PRINT_WRITE_VOID_UINT32
54
  size_t write(const void*, uint32) override {
2✔
55
    return 0;
2✔
56
  }
57
#else
58
  size_t write(const uint8_t*, size_t) override {
10✔
59
    return 0;
10✔
60
  }
61
#endif
62

63
  size_t write(uint8_t) override {
12✔
64
    return 0;
12✔
65
  }
66

67
 private:
68
  const char* _ptr;
69
  size_t _size;
70
};
71

72
}  // namespace StreamUtils
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc