core-avr-database

Database

class Database

Entry point for adding data to + updating fixed size files.

Public Functions

Database(AvrClock *clock)

Constructor.

Parameters
  • clock: The clock implementation to use.

~Database()

Destructor.

float numRecords()

Total number of stored records.

Return
Total number of records stored.

bool load(AvrStream *stream, const int offset)

Loads header into memory. This is for Databases that already exist.

Return
True if the file was successfully loaded.
Parameters
  • stream: The stream to read/write from.
  • offset: The byte offset this file starts at.

bool init(AvrStream *stream, const int offset, const short contentSize, const char valuesPerRecord, const char *uri)

Writes header to disk. This is for new Databases.

Return
True if the file was successfully written.
Parameters
  • stream: The stream to write to.
  • offset: The byte offset this file starts at.
  • contentSize: The size, in bytes, of the file.
  • valuesPerRecord: The number of values per record.
  • uri: The uri of the resource.

bool flush()

Flushes any changes to the stream, in case the Database decides to cache.

Return
{ description_of_the_return_value }

bool add(const float *value)

Adds a set of values to the file. These values are added with a timestamp.

Return
Returns true iff the add was successful.
Parameters
  • value: The floats to add to the file.

int dump(char *buffer, const int recordDffset, const int recordCount)

Dumps database data to a buffer. Format is described in more detail in the core-avr-sensor documentation.

This method may modify the buffer and still fail.

Return
Returns the number of records copied.
Parameters
  • buffer: Buffer to copy records into.
  • recordOffset: The starting index of records.
  • recordCount: The number of records to copy into the buffer.

Public Members

DatabaseHeader header

Header information.

Database Manager

class DatabaseManager

The DatabaseManager class exposes a fixed-size file manipulation API, based on URI.

Public Functions

DatabaseManager(AvrClock *clock, AvrStream *stream)

Constructor.

Parameters
  • clock: The clock implementation to use.
  • stream: The stream to read/write data with.

~DatabaseManager()

Destructor.

bool load(DatabaseManagerConfig config)

Attempts to load existing filesystem.

Return
Returns true if everything is good to go.

bool init(DatabaseManagerConfig config)

Initializes a new filesystem.

Return
Returns true if everything is good to go.

Database *create(const char *uri, const int size, const char valuesPerRecord)

Creates a Database of a specific size, linked to a URI.

Return
If there was room for the file and it was successfully created, returns the Database. If not, nullptr.
Parameters
  • uri: The uri this Database can be addressed at.
  • uri: The number of values that should be stored in a single record.
  • size: The size of the file.

Database *get(const char *uri)

Retrieves a file by uri.

Return
If the Database was found, the file. Otherwise, nullptr.
Parameters
  • uri: The uri to retrieve the file with.

bool set(Database *file)

Writes the file. This is the equivalent to calling Database::flush().

Return
Returns true if the Database was successfully saved.
Parameters
  • file: The file to write to disk.

AvrClock

class AvrClock

Abstraction for clock.

Subclassed by ArduinoClock, StandardClock

Public Functions

virtual ~AvrClock()

Virtual destructor.

virtual unsigned long now() = 0

Returns the total number of milliseconds since the start of the program.

Return
Total number of milliseconds since the start of the program.

AvrClock Implementations

class StandardClock

std implementation of AvrClock. This is used for testing.

Inherits from AvrClock

class ArduinoClock

Clock implementation for arduino.

Inherits from AvrClock