PartitionStream.h
Go to the documentation of this file.
1 /****
2  * Sming Framework Project - Open Source framework for high efficiency native ESP8266 development.
3  * Created 2015 by Skurydin Alexey
4  * http://github.com/SmingHub/Sming
5  * All files of the Sming Core are provided under the LGPL v3 license.
6  *
7  * PartitionStream.h
8  *
9  ****/
10 
11 #pragma once
12 
14 #include "Partition.h"
15 
16 namespace Storage
17 {
25 class PartitionStream : public ReadWriteStream
26 {
27 public:
37  PartitionStream(Partition partition, storage_size_t offset, size_t size, bool blockErase = false)
38  : partition(partition), startOffset(offset), size(size), blockErase(blockErase)
39  {
40  }
41 
49  PartitionStream(Partition partition, bool blockErase = false)
50  : partition(partition), startOffset{0}, size(partition.size()), blockErase(blockErase)
51  {
52  }
53 
54  int available() override
55  {
56  return size - readPos;
57  }
58 
59  uint16_t readMemoryBlock(char* data, int bufSize) override;
60 
61  int seekFrom(int offset, SeekOrigin origin) override;
62 
63  size_t write(const uint8_t* buffer, size_t size) override;
64 
65  bool isFinished() override
66  {
67  return available() <= 0;
68  }
69 
70 private:
71  Partition partition;
72  storage_size_t startOffset;
73  size_t size;
74  uint32_t writePos{0};
75  uint32_t readPos{0};
76  uint32_t erasePos{0};
77  bool blockErase;
78 };
79 
80 } // namespace Storage
Represents a flash partition.
Definition: Partition.h:85
PartitionStream(Partition partition, storage_size_t offset, size_t size, bool blockErase=false)
Access part of a partition using a stream.
Definition: PartitionStream.h:53
int available() override
Return the total length of the stream.
Definition: PartitionStream.h:70
Definition: FileDevice.h:25
uint16_t readMemoryBlock(char *data, int bufSize) override
Read a block of memory.
bool isFinished() override
Check if all data has been read.
Definition: PartitionStream.h:81
int seekFrom(int offset, SeekOrigin origin) override
Change position in stream.
SeekOrigin
Stream/file seek origins.
Definition: SeekOrigin.h:18
size_t write(const uint8_t *buffer, size_t size) override
Write chars to stream.
uint32_t storage_size_t
Definition: Components/Storage/src/include/Storage/Types.h:19
Base class for read/write stream.
Definition: ReadWriteStream.h:19