226 lines
7.5 KiB
C
226 lines
7.5 KiB
C
/////////////////////////////////////////////////////////////////////
|
|
|
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
|
/* */
|
|
/* file: Version.h */
|
|
/* */
|
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
|
/* */
|
|
/* description: Version header file */
|
|
/* */
|
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
|
/* */
|
|
/* Copyright (c) 2018 Acroname Inc. - All Rights Reserved */
|
|
/* */
|
|
/* This file is part of the BrainStem release. See the license.txt */
|
|
/* file included with this package or go to */
|
|
/* https://acroname.com/software/brainstem-development-kit */
|
|
/* for full license details. */
|
|
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
|
|
|
#ifndef _aVersion_H_
|
|
#define _aVersion_H_
|
|
|
|
/////////////////////////////////////////////////////////////////////
|
|
/// Library version interface.
|
|
|
|
/** \defgroup aVersion Version Interface
|
|
* \ref aVersion "aVersion.h" Provides version information for the BrainStem2
|
|
* library.
|
|
*/
|
|
|
|
/// Major revision level of library.
|
|
|
|
/**
|
|
* Major revision bumps will break compatibility with existing
|
|
* versions and may introduce protocol changes or other fundamental
|
|
* differences.
|
|
*/
|
|
#define aVERSION_MAJOR 2
|
|
|
|
/// Minor revision level of library.
|
|
/**
|
|
* Minor revisions should largly be compatible, however new features
|
|
* may be added with a minor revision change.
|
|
*/
|
|
#define aVERSION_MINOR 12
|
|
|
|
/// Patch revision level of library.
|
|
/**
|
|
* Patch revisions are bug fixes and small performance changes. They
|
|
* add no significant new features or interfaces.
|
|
*/
|
|
#define aVERSION_PATCH 1
|
|
|
|
/// The maximum string length of the human readable version string.
|
|
#define MAX_VERSION_STRING 15U
|
|
|
|
#include "aDefs.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/** \defgroup Firmware_version_parsing Firmware Version Parsing
|
|
*
|
|
* @{
|
|
*/
|
|
|
|
/// Parse out the major revision number.
|
|
|
|
/**
|
|
* Parses the major revision level from the given uint32.
|
|
* \param build The packed version number returned from the
|
|
* system.getVersion call.
|
|
* \return The major revision number.
|
|
*/
|
|
aLIBEXPORT uint8_t aVersion_ParseMajor(uint32_t build);
|
|
|
|
/// Parse out the minor revision number.
|
|
|
|
/**
|
|
* Parses the minor revision level from the given uint32.
|
|
* \param build The packed version number returned from the
|
|
* system.getVersion call.
|
|
* \return The minor revision number.
|
|
*/
|
|
aLIBEXPORT uint8_t aVersion_ParseMinor(uint32_t build);
|
|
|
|
|
|
/// Parse out the revision patch number.
|
|
|
|
/**
|
|
* Parses the revision patch level from the given uint32.
|
|
* \param build The packed version number returned from the
|
|
* system.getVersion call.
|
|
* \return The revision patch number.
|
|
*/
|
|
aLIBEXPORT uint32_t aVersion_ParsePatch(uint32_t build);
|
|
|
|
/// Parse the Version number into a human readable format.
|
|
|
|
/**
|
|
* Fills the string parameter with a human readable formated version number.
|
|
* \param build The packed version number returned from the
|
|
* system.getVersion call.
|
|
* \param string The string to fill with the version string.
|
|
* \param len The length of the filled string, not longer than
|
|
* MAX_VERSION_STRING.
|
|
*/
|
|
aLIBEXPORT void aVersion_ParseString(uint32_t build, char* string, size_t len);
|
|
|
|
/// Check if the given build version is of the legacy packing format
|
|
|
|
/**
|
|
* Parses the revision format from the given uint32.
|
|
* \param build The packed version number returned from the
|
|
* system.getVersion call.
|
|
* \return Whether the revision format is the old packing format.
|
|
*/
|
|
aLIBEXPORT bool aVersion_IsLegacyFormat(uint32_t build);
|
|
|
|
/** @} */
|
|
|
|
/// Return the major revision number.
|
|
|
|
/**
|
|
* \return The major revision number.
|
|
*/
|
|
aLIBEXPORT uint8_t aVersion_GetMajor(void);
|
|
|
|
|
|
/// Return the minor revision number.
|
|
|
|
/**
|
|
* \return The minor revision number.
|
|
*/
|
|
aLIBEXPORT uint8_t aVersion_GetMinor(void);
|
|
|
|
/// Return the revision patch number.
|
|
|
|
/**
|
|
* \return The revision patch number.
|
|
*/
|
|
aLIBEXPORT uint32_t aVersion_GetPatch(void);
|
|
|
|
|
|
/// Return a human readable version string.
|
|
|
|
/**
|
|
* \return char* human readable version string.
|
|
*/
|
|
aLIBEXPORT const char* aVersion_GetString(void);
|
|
|
|
/// Check that the current software version is at least major.minor.patch
|
|
|
|
/**
|
|
* \param major The major revision level.
|
|
* \param minor The minor revision.
|
|
* \param patch The patch level.
|
|
*
|
|
* \return True when current version is at least what is given, false
|
|
* otherwise
|
|
*/
|
|
aLIBEXPORT bool aVersion_IsAtLeast(const uint8_t major,
|
|
const uint8_t minor,
|
|
const uint8_t patch);
|
|
|
|
/// Check that the supplied left hand side (lhs) version is at least (>=) the right hand side (rhs).
|
|
|
|
/**
|
|
* \param major_lhs The lhs major revision level.
|
|
* \param minor_lhs The lhs minor revision.
|
|
* \param patch_lhs The lhs patch level.
|
|
* \param major_rhs The rhs major revision level.
|
|
* \param minor_rhs The rhs minor revision.
|
|
* \param patch_rhs The rhs patch level.
|
|
*
|
|
* \return True when current version is at least what is given, false
|
|
* otherwise
|
|
*/
|
|
aLIBEXPORT bool aVersion_IsAtLeastCompare(const uint8_t major_lhs,
|
|
const uint8_t minor_lhs,
|
|
const uint8_t patch_lhs,
|
|
const uint8_t major_rhs,
|
|
const uint8_t minor_rhs,
|
|
const uint8_t patch_rhs);
|
|
|
|
/// Packs the given version into a single integer
|
|
|
|
/**
|
|
* \param major The major revision level.
|
|
* \param minor The minor revision.
|
|
* \param patch The patch level.
|
|
*
|
|
* \return Packed version integer
|
|
*/
|
|
aLIBEXPORT uint32_t aVersion_Pack(const uint8_t major,
|
|
const uint8_t minor,
|
|
const uint8_t patch);
|
|
|
|
/// Check that the library supports a feature
|
|
/**
|
|
* \param feature The feature to check.
|
|
* \return True if the current library supports the feature or false if not.
|
|
*/
|
|
aLIBEXPORT bool aVersion_HasFeature(const char* feature);
|
|
|
|
/// Get an array of the features the library supports.
|
|
/**
|
|
* \return an array of c strings describing the features the library
|
|
* supports.
|
|
*/
|
|
aLIBEXPORT char* aVersion_GetFeatureList(void);
|
|
|
|
/// Destroy the feature list.
|
|
/**
|
|
* \param featureList pointer to featurelist.
|
|
*/
|
|
aLIBEXPORT void aVersion_DestroyFeatureList(char** featureList);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif //_aVersion_H_
|