SELKIELogger  1.0.0
Code structure / layout

The repository contains the following top level directories:

/docs

Supplementary documentation files, to provide additional information not present in the Doxygen annotations within the source code.

/python

Python module containing code and utilities for interacting with files used and generated by this project. The module itself lives under /python/SELKIELogger

See also
SELKIELogger

/library

Parent directory for reusable library code. The only files that directly belongs in this directory are version.h.in and CMakeLists.txt. Each class of devices has a separate loadable library, with the code for each in a dedicated directory as described below. Each library needs to have a public facing top level header file (e.g. SELKIELoggerBase.h, SELKIELoggerGPS.h) which includes the individual files within the folder.

/library/base

Core library functions, including the API definition of messages, strings, string arrays and various utility functions.

See also
Core functions and definitions

/library/MP

Code specifically for dealing with data in the message packed format used by this project, including interactions with devices generating data in that format.

See also
Internal message format support

/library/NMEA

Device and message handling code for NMEA0183 style serial communication.

See also
NMEA Device communication

/library/I2C

Support for I2C sensors connected directly to a PC. Each sensor type requires device specific support, which can then be included in this library.

Currently supports INA219 current and voltage sensors.

See also
I2C Device communication

/library/GPS

Support for serial connected GPS devices. Currently only supports u-blox devices, but could be extended to other brands and protocols.

See also
u-blox GPS Device communication

/tests

Contains unit tests, sample data and configuration for use with CTest.

Coverage for message processing functions is reasonable, but could still be expanded to cover more cases. This is particularly true for failure and error cases.

See also
Library test scripts/programs