MCPcopy Create free account
hub / github.com/SmingHub/Sming / write

Method write

Sming/Components/Storage/src/PartitionStream.cpp:47–78  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

45}
46
47size_t PartitionStream::write(const uint8_t* data, size_t length)
48{
49 if(mode < Mode::Write) {
50 return 0;
51 }
52
53 auto len = std::min(size_t(size - writePos), length);
54 if(len == 0) {
55 return 0;
56 }
57
58 if(mode == Mode::BlockErase) {
59 auto endPos = writePos + len;
60 if(endPos > erasePos) {
61 size_t blockSize = partition.getBlockSize();
62 size_t eraseLen = endPos - erasePos + blockSize - 1;
63 eraseLen -= eraseLen % blockSize;
64 debug_d("[PS] erase(0x%08x, 0x%08x", startOffset + erasePos, eraseLen);
65 if(!partition.erase_range(startOffset + erasePos, eraseLen)) {
66 return 0;
67 }
68 erasePos += eraseLen;
69 }
70 }
71
72 if(!partition.write(startOffset + writePos, data, len)) {
73 return 0;
74 }
75
76 writePos += len;
77 return len;
78}
79
80} // namespace Storage

Callers

nothing calls this directly

Calls 3

minFunction · 0.85
getBlockSizeMethod · 0.45
erase_rangeMethod · 0.45

Tested by

no test coverage detected