|
PropWare
3.0.0.229
C++ objects and CMake build system for Parallax Propeller
|
Go to the documentation of this file.
86 const uint8_t wordsPerLine = 16) {
87 if (!Utility::empty(buffer.meta->
name))
88 printer <<
"Name = " << buffer.meta->
name <<
'\n';
89 print_block(printer, buffer.buf, words, wordsPerLine);
101 const uint8_t wordsPerLine = 16) {
102 uint_fast8_t lines = words / wordsPerLine;
103 if (words % wordsPerLine)
108 for (uint_fast8_t i = 1; i < wordsPerLine; ++i) {
110 printer <<
' ' <<
' ';
117 const uint_fast16_t baseAddress =
line * wordsPerLine;
118 printer <<
'0' <<
'x';
119 printer.
put_int(baseAddress, 16, 4,
'0');
120 printer <<
':' <<
' ';
123 for (uint_fast8_t offset = 0; offset < wordsPerLine; ++offset) {
125 printer <<
'-' <<
' ';
126 printer.
put_int((
unsigned int) data[baseAddress + offset], 16, 2,
'0');
131 for (uint_fast8_t offset = 0; offset < wordsPerLine; ++offset) {
132 const char nextChar = data[baseAddress + offset];
133 if (32 <= nextChar && nextChar <= 126)
149 virtual ErrorCode
start ()
const = 0;
159 virtual ErrorCode
read_data_block (uint32_t address, uint8_t buf[])
const = 0;
196 virtual ErrorCode
write_data_block (uint32_t address,
const uint8_t dat[])
const = 0;
218 PropWare::ErrorCode err;
219 if (buffer->meta && buffer->meta->
mod) {
222 buffer->meta->
mod =
false;
235 uint8_t
get_byte (
const uint16_t offset,
const uint8_t *buf)
const {
251 virtual uint16_t
get_short (
const uint16_t offset,
const uint8_t buf[])
const = 0;
265 virtual uint32_t
get_long (
const uint16_t offset,
const uint8_t buf[])
const = 0;
274 void write_byte (
const uint16_t offset, uint8_t buf[],
const uint8_t value)
const {
289 virtual void write_short (
const uint16_t offset, uint8_t buf[],
const uint16_t value)
const = 0;
302 virtual void write_long (
const uint16_t offset, uint8_t buf[],
const uint32_t value)
const = 0;
virtual void write_long(const uint16_t offset, uint8_t buf[], const uint32_t value) const =0
Write four bytes to a buffer.
static void print_block(const Printer &printer, const uint8_t data[], const size_t words=512, const uint8_t wordsPerLine=16)
ErrorCode flush(Buffer *buffer) const
Flush the contents of a buffer and mark as unmodified.
virtual uint16_t get_sector_size() const =0
Return the size of a sector (also known as a "block") for the given storage device.
virtual uint8_t get_sector_size_shift() const =0
Determine the number of shifts required to multiply or divide a number by the sector size.
virtual uint16_t get_short(const uint16_t offset, const uint8_t buf[]) const =0
Read two bytes from a buffer.
uint8_t get_byte(const uint16_t offset, const uint8_t *buf) const
Read a byte from a buffer.
virtual uint32_t get_long(const uint16_t offset, const uint8_t buf[]) const =0
Read four bytes from a buffer.
ErrorCode reload_buffer(const BlockStorage::Buffer *buffer) const
Use a buffer's metadata to determine the address and read data from the storage device into memory.
static void print_block(const Printer &printer, const Buffer &buffer, const size_t words=512, const uint8_t wordsPerLine=16)
Print the formatted contents of a buffer.
void write_byte(const uint16_t offset, uint8_t buf[], const uint8_t value) const
Write a byte to a buffer.
ErrorCode write_data_block(uint32_t address, const BlockStorage::Buffer *buffer) const
Any device that uses blocks as hardware level abstraction.
In-memory buffer containing a single block of data.
virtual ErrorCode read_data_block(uint32_t address, uint8_t buf[]) const =0
Read a block of data from the device into RAM.
virtual void write_short(const uint16_t offset, uint8_t buf[], const uint16_t value) const =0
Write two bytes to a buffer.
Container class that has formatting methods for human-readable output. This class can be constructed ...
Generic definitions and functions for the Parallax Propeller.
virtual ErrorCode start() const =0
Initialize and power up a storage device.
void put_int(int x, const uint8_t radix=10, uint16_t width=0, const char fillChar=DEFAULT_FILL_CHAR) const
Print a signed integer in base 10.
virtual ErrorCode write_data_block(uint32_t address, const uint8_t dat[]) const =0
Write data to a storage device.
ErrorCode read_data_block(uint32_t address, const BlockStorage::Buffer *buffer) const